Pages

Wednesday, 11 September 2013

Example on ApplicationAware Interface of struts 2



 ApplicationAware interface, we need to implement our Action class from ApplicationAware interface when ever our Action class need to get context behavior, means we can share our data across all the files of the web application by putting in a global object that’s context :-)
When we implement our Action class from ApplicationAware interface then the controller doesn’t inject exactly servlet context object, instead it will injects a map object and this will created once by the controller and the same object will be injected to all files of the struts application.
Example on struts 2 ApplicationAware
files we used…
  • index.jsp
  • error.jsp
  • success.jsp
  • LogingEx.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
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<body>

<s:form action="verify">

    <s:textfield name="uname" label="Enter Username" /><br>
    <s:textfield name="age" label="Enter Age" /><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
<%@ taglib prefix="s" uri="/struts-tags" %>

Hello <s:property value="#application.a" />
Your age is:  <s:property value="#application.b" />
country:  <s:property value="#application.c" />
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
package java4s;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.interceptor.*;
import java.util.Map;

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

    private String uname,country;
    private int age;
    Map m;

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getCountry() {
        return country;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

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

    public String execute()
    {
        m.put("a",uname);
        m.put("b", age);
        m.put("c",country);

        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
<?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>
            <result name="error">/error.jsp</result>
        </action>
    </package>
</struts>


No comments:

Post a Comment