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