Pages

Wednesday, 11 September 2013

Example on Struts 2 SessionAware Interface



Let us see concept behind this SessionAware interface in struts 2.x,  we need to implement our Action class from SessionAware interface in order to get HTTP Session behavior into our Action class.
If we implement from SessionAware interface we need to override the method setSession() by SessionAware in our action class.  If we implement our action class from SessionAware interface then struts 2 controller doesn’t inject exactly session object, but it will injects a Map object with similar behavior.
For each Action class or a jsp visited by the same client, the controller injects the same map object, the controller creates a new map object for each client, it means one map object per session ( browser )
No. of clients = No. of map objects created by controller
Example on struts 2 SessionAware
files we used…
  • index.jsp
  • success.jsp
  • success1.jsp
  • LogingEx.java [ in java4s package ]
  • NextActions.java [ in java4s package ]
  • web.xml [ in web-inf ]
  • struts.xml [ in web-inf/classes folder ]
index.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<body>

<s:form action="verify">

    <s:textfield name="stuname" label="Enter Username" /><br>
    <s:textfield name="stuage" label="Enter Age" /><br>
    <s:textfield name="stumarks" label="Enter Marks" /><br>
    <s:textfield name="country" label="Enter Country" /><br>

    <s:submit value="Click" align="center" />

</s:form>
</body>
</html>
success.jsp
1
2
3
4
5
6
7
<%@ taglib prefix="s" uri="/struts-tags" %>

<s:form action="next">
Name:<s:property value="#session.a" /><br>
Age:<s:property value="#session.b" />
<s:submit value="next" />
</s:form>
success1.jsp
1
2
3
4
<%@ taglib prefix="s" uri="/struts-tags" %>

Marks:<s:property value="#session.c" /><br>
Country:<s:property value="#session.d" />
LogingEx.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package java4s;
import java.util.Map;

import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;

public class LogingEx extends ActionSupport implements SessionAware{
    private static final long serialVersionUID = 1L;

    private String stuname,stuage,country;
    private int stumarks;
    Map m;

    public String getStuname() {
        return stuname;
    }
    public void setStuname(String stuname) {
        this.stuname = stuname;
    }

    public String getStuage() {
        return stuage;
    }
    public void setStuage(String stuage) {
        this.stuage = stuage;
    }

    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }

    public int getStumarks() {
        return stumarks;
    }
    public void setStumarks(int stumarks) {
        this.stumarks = stumarks;
    }

    public void setSession(Map m)
    {
        this.m=m;
    }

    public String execute()
    {
        m.put("a",stuname);
        m.put("b", stuage);
        m.put("c",stumarks);
        m.put("d",country);

        return SUCCESS;
    }

}
NextActions.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package java4s;
import java.util.Map;

import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;

public class NextActions extends ActionSupport implements SessionAware{    

    Map m;    

    public void setSession(Map m)
    {
        this.m=m;
    }

    public String execute()
    {
        return SUCCESS;
    }

}
web.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
struts.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <include file="struts-default.xml"/>
    <package name="a" extends="struts-default">
        <action name="verify" class="java4s.LogingEx">
            <result name="success">/success.jsp</result>
        </action>
        <action name="next" class="java4s.NextActions">
            <result name="success">/success1.jsp</result>
        </action>
    </package>
</struts>

No comments:

Post a Comment