JSF can save state of component tree in either session or on clients machine inform of serialized data .
While creating component tree JSF creates a key and keep all objects of component tree as UIViewRoot in session with against it.For next JSF request it will use same key to restore that view :)
For client side saving has performance issues like it has to serialize whole tree and write it in response ship in form of gzip to client.Next time when same client make JSF request from same page it de-serialize it and inflate all objects in corresponding state .
Setting for state saving is done in web.xml.
Server side state saving is where the component tree and all component state are stored within the user's session. This entry within the session is tracked by writing a key in the response that is used to lookup the entry on subsequent post-backs.
Client side state saving doesn't leverage the server side session mechanism at all, instead, the component tree and state will be serialized using Java Serialization, GZIP compressed (at least that is the default), Base64 encoded, and written to the response. When a post-back occurs, the encoding process will be reversed which will result in the tree and state we started with.
As to the benefits/drawbacks, review the following table.
State Saving Method | Server Side Memory Usage | CPU Usage | Bandwidth Usage |
---|---|---|---|
Server without compression | High | Low | Low |
Server with compression | Low/Medium | High | Low |
Client with compression | Low | High | Medium |
Client without compression | Low | Med | High |
<context-param>
<description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
1.Server side state saving - following hidden field is added (see the value )
<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="2269033803785808195:-5553424543391650776" autocomplete="off" />
observe >> value="2269033803785808195:-5553424543391650776"
2.Client side state saving - following hidden field is added (see the value )
<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="H4sIAAAAAAAAANVWTWwbRRQeOzFxflryU4UitZC6VSVKuo6TmEJCRZzEaVZxaIRDoCmQjr0Te9Px7mR21l63NCoHBEJCUHFCCuLAhQM9ceGCBOKAhFQQkbjABU6oBxBC4gCHipnxrncTskl6ZCU/z+6+efO975v3Zj/5DcSIRUHPGqxCxWY6VmahVZ6HJNb245df9V/5vgVEZ0AHNqE2A4vMpCpoZ2WKrLKJNYc8MwHE1VWLc9vNfzEGHlhb0TU2alPQdzkn42JolJSLhTVUZOPvfvvih93WYzgKgEP4hKi9DjZAi5hK+OXfbVCgiNmOsgqLyFKKZoWYBjKY8rw65Y1PLVCTIMrqc6huAffq5aEpOOwvnTXsSvAlYaADMkb1gs2QxdPv89PPUArrOd1izmtbx9//Gn7QAiIqaLX0a0jibam1Cssnnd4dXZ5BhmY5O4jmYRXRS998ev69zTvzURDNgfYihpb1LKwgBnolOUmBMJnnYIzSeA50WHyOJmMw0N/w0M1kHlEdYv0aLGA07hBSFTQBS9hDPJtH+PKKZRsuGGExYpaSWVjIqdlp149jToc46hWClWm0Cm3MZhoPT2UIwfVF8yoy/vp48NLmxNpEl+CudgYMJC1UtClKYrOkG8l8JpcTgwVYQopTZhUMQGTo8+/uvuA4XMX0/am4QPUqzz6ol4AfZ+CIr9liGbIMRXmOXbzsFBtJChN1c5UEdbo3wvZx1ry9+URzl4XuPjFob8b2RPfD9QRDB8b9EuzREFTCHvsPqMOSxlWTVsYI3x1NEK37wmzj9J4Jo1c1iB1eIC6nsSrfVlqzA8hymTRNjKBxZ4De/GHzn9+jILIs/WxeARG+4uNhK1602QGXtFGVgtaqqWvAvxyyIVwUBg5hswjxkvDzJE4BIikbFow96DMmR3tTtsuzKM/4bEgtIKwswtI8YmVTyzqE9zpLNw0XY6RLNpeHGxRw151+67mHOpff+eWPqPTra/r5Hh+9/lb+z+Wtp2UH5DgSJi0pkMBiGe0WUOWlqf4Nf8KpV090uSxO1k6CR09el7lPcqkU3pq5qyRsqsw1RNoNAHZ2YLfJ3N5a+vXu8esXvA4cYSARVBRVhZqBWFnxgBCndgW8sl/lD0wMDw2m0k8NVP35opsiA9HziX0gJxwpdbaW2j+7QHtf4ttIKntBKMSBBmQWo4wb9UCceXEiYqD+n7IONoYeMUjKepE11cZAF0UGP5MQXawTfrZ0ByVfRA4TbqPCnPNmxAu6ofEdYzW7WUx2s1hIH0z758zgnrUlcworraPNktnhVuu4efnnL+7dirpFMMXXObG9dnbMEKUTfztx7403b3/mlc7LtdOgN0izHN1o8BH8UhHSZ8HU/Um/XexGaFdfcU63eYy6RIm/l6Rd4cdqf3CuLrq30CUE2hxQDwzNXXU7OH+BhOMc9LgL/9SYzzw3t6JON/2OnE2NjAyNjJxLDQ+vjK6OFtLpIbjH54AArMxyo3q49j1HLFbnS4NjRRObdKyOMDZr4wVYvFqipm1oYwUuiHeixClat3WKNFkTwjwpzFjgUImJb4OU3zs4y/8CZd7KiB8LAAA=" autocomplete="off" />
observe >> value="H4sIAAAAAAAAANVWTWwbRRQeOzFxflryU4UitZC6VSVKuo6TmEJCRZzEaVZxaIRDoCmQjr0Te9Px7mR21l63NCoHBEJCUHFCCuLAhQM9ceGCBOKAhFQQkbjABU6oBxBC4gCHipnxrncTskl6ZCU/z+6+efO975v3Zj/5DcSIRUHPGqxCxWY6VmahVZ6HJNb245df9V/5vgVEZ0AHNqE2A4vMpCpoZ2WKrLKJNYc8MwHE1VWLc9vNfzEGHlhb0TU2alPQdzkn42JolJSLhTVUZOPvfvvih93WYzgKgEP4hKi9DjZAi5hK+OXfbVCgiNmOsgqLyFKKZoWYBjKY8rw65Y1PLVCTIMrqc6huAffq5aEpOOwvnTXsSvAlYaADMkb1gs2QxdPv89PPUArrOd1izmtbx9//Gn7QAiIqaLX0a0jibam1Cssnnd4dXZ5BhmY5O4jmYRXRS998ev69zTvzURDNgfYihpb1LKwgBnolOUmBMJnnYIzSeA50WHyOJmMw0N/w0M1kHlEdYv0aLGA07hBSFTQBS9hDPJtH+PKKZRsuGGExYpaSWVjIqdlp149jToc46hWClWm0Cm3MZhoPT2UIwfVF8yoy/vp48NLmxNpEl+CudgYMJC1UtClKYrOkG8l8JpcTgwVYQopTZhUMQGTo8+/uvuA4XMX0/am4QPUqzz6ol4AfZ+CIr9liGbIMRXmOXbzsFBtJChN1c5UEdbo3wvZx1ry9+URzl4XuPjFob8b2RPfD9QRDB8b9EuzREFTCHvsPqMOSxlWTVsYI3x1NEK37wmzj9J4Jo1c1iB1eIC6nsSrfVlqzA8hymTRNjKBxZ4De/GHzn9+jILIs/WxeARG+4uNhK1602QGXtFGVgtaqqWvAvxyyIVwUBg5hswjxkvDzJE4BIikbFow96DMmR3tTtsuzKM/4bEgtIKwswtI8YmVTyzqE9zpLNw0XY6RLNpeHGxRw151+67mHOpff+eWPqPTra/r5Hh+9/lb+z+Wtp2UH5DgSJi0pkMBiGe0WUOWlqf4Nf8KpV090uSxO1k6CR09el7lPcqkU3pq5qyRsqsw1RNoNAHZ2YLfJ3N5a+vXu8esXvA4cYSARVBRVhZqBWFnxgBCndgW8sl/lD0wMDw2m0k8NVP35opsiA9HziX0gJxwpdbaW2j+7QHtf4ttIKntBKMSBBmQWo4wb9UCceXEiYqD+n7IONoYeMUjKepE11cZAF0UGP5MQXawTfrZ0ByVfRA4TbqPCnPNmxAu6ofEdYzW7WUx2s1hIH0z758zgnrUlcworraPNktnhVuu4efnnL+7dirpFMMXXObG9dnbMEKUTfztx7403b3/mlc7LtdOgN0izHN1o8BH8UhHSZ8HU/Um/XexGaFdfcU63eYy6RIm/l6Rd4cdqf3CuLrq30CUE2hxQDwzNXXU7OH+BhOMc9LgL/9SYzzw3t6JON/2OnE2NjAyNjJxLDQ+vjK6OFtLpIbjH54AArMxyo3q49j1HLFbnS4NjRRObdKyOMDZr4wVYvFqipm1oYwUuiHeixClat3WKNFkTwjwpzFjgUImJb4OU3zs4y/8CZd7KiB8LAAA="
observe >> value="H4sIAAAAAAAAANVWTWwbRRQeOzFxflryU4UitZC6VSVKuo6TmEJCRZzEaVZxaIRDoCmQjr0Te9Px7mR21l63NCoHBEJCUHFCCuLAhQM9ceGCBOKAhFQQkbjABU6oBxBC4gCHipnxrncTskl6ZCU/z+6+efO975v3Zj/5DcSIRUHPGqxCxWY6VmahVZ6HJNb245df9V/5vgVEZ0AHNqE2A4vMpCpoZ2WKrLKJNYc8MwHE1VWLc9vNfzEGHlhb0TU2alPQdzkn42JolJSLhTVUZOPvfvvih93WYzgKgEP4hKi9DjZAi5hK+OXfbVCgiNmOsgqLyFKKZoWYBjKY8rw65Y1PLVCTIMrqc6huAffq5aEpOOwvnTXsSvAlYaADMkb1gs2QxdPv89PPUArrOd1izmtbx9//Gn7QAiIqaLX0a0jibam1Cssnnd4dXZ5BhmY5O4jmYRXRS998ev69zTvzURDNgfYihpb1LKwgBnolOUmBMJnnYIzSeA50WHyOJmMw0N/w0M1kHlEdYv0aLGA07hBSFTQBS9hDPJtH+PKKZRsuGGExYpaSWVjIqdlp149jToc46hWClWm0Cm3MZhoPT2UIwfVF8yoy/vp48NLmxNpEl+CudgYMJC1UtClKYrOkG8l8JpcTgwVYQopTZhUMQGTo8+/uvuA4XMX0/am4QPUqzz6ol4AfZ+CIr9liGbIMRXmOXbzsFBtJChN1c5UEdbo3wvZx1ry9+URzl4XuPjFob8b2RPfD9QRDB8b9EuzREFTCHvsPqMOSxlWTVsYI3x1NEK37wmzj9J4Jo1c1iB1eIC6nsSrfVlqzA8hymTRNjKBxZ4De/GHzn9+jILIs/WxeARG+4uNhK1602QGXtFGVgtaqqWvAvxyyIVwUBg5hswjxkvDzJE4BIikbFow96DMmR3tTtsuzKM/4bEgtIKwswtI8YmVTyzqE9zpLNw0XY6RLNpeHGxRw151+67mHOpff+eWPqPTra/r5Hh+9/lb+z+Wtp2UH5DgSJi0pkMBiGe0WUOWlqf4Nf8KpV090uSxO1k6CR09el7lPcqkU3pq5qyRsqsw1RNoNAHZ2YLfJ3N5a+vXu8esXvA4cYSARVBRVhZqBWFnxgBCndgW8sl/lD0wMDw2m0k8NVP35opsiA9HziX0gJxwpdbaW2j+7QHtf4ttIKntBKMSBBmQWo4wb9UCceXEiYqD+n7IONoYeMUjKepE11cZAF0UGP5MQXawTfrZ0ByVfRA4TbqPCnPNmxAu6ofEdYzW7WUx2s1hIH0z758zgnrUlcworraPNktnhVuu4efnnL+7dirpFMMXXObG9dnbMEKUTfztx7403b3/mlc7LtdOgN0izHN1o8BH8UhHSZ8HU/Um/XexGaFdfcU63eYy6RIm/l6Rd4cdqf3CuLrq30CUE2hxQDwzNXXU7OH+BhOMc9LgL/9SYzzw3t6JON/2OnE2NjAyNjJxLDQ+vjK6OFtLpIbjH54AArMxyo3q49j1HLFbnS4NjRRObdKyOMDZr4wVYvFqipm1oYwUuiHeixClat3WKNFkTwjwpzFjgUImJb4OU3zs4y/8CZd7KiB8LAAA="
No comments:
Post a Comment