Newsletter

Example on Struts 2 SessionAware Interface

Struts » on Oct 24, 2011 { 17 Comments } By Sivateja

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 ]

Directory Structure

index.jsp

<%@ 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

<%@ 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

<%@ taglib prefix="s" uri="/struts-tags" %>

Marks:<s:property value="#session.c" /><br>
Country:<s:property value="#session.d" />

LogingEx.java

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

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

<?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

<?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>

After Execution

Output

Output1

​​

You Might Also Like

  ::. About the Author .::

Java4s_Author
Sivateja Kandula - Java/J2EE Full Stack Developer
Founder of Java4s - Get It Yourself, A popular Java/J2EE Programming Blog, Love Java and UI frameworks.
You can sign-up for the Email Newsletter for your daily dose of Java tutorials.

Comments

17 Responses to “Example on Struts 2 SessionAware Interface”
  1. strutsNewbie says:

    Excellent – made access to session information completely clear to developer with NO previous knowledge of struts, JSP

  2. Java4s says:

    @strutsNewbie

    That’s what our actual intention 🙂 Thanks for your feedback on this article.

  3. Mohammed Vaseem says:

    Hello java4s,
    I have a question on concepts Application/ Session aware interface.
    You are using the same technique for storing values into the map. But at value retrieval time, you are changing as #session.a or #application.a.
    At storing time we are not specifying that we are going to store in session map or application map. We are just specifying map only na. Then how can we differentiate the code as #session.c or #application.c while retrieving?

    Hope myself clear.

    Thanks
    Mohammed Vaseem

  4. Java4s says:

    @Mohammed Vaseem

    All aware interfaces provides Map, but writing #session.a or #application.a in .jsp’s will be depends on the interface we implemented in our action class.

    In this current example we have implemented SessionAware interface so we have to write #session.a

    hope you are clear.

  5. vasu says:

    but if I request directly with following url then its displaying (course empty string like
    http://localhost:8080/sessionAware/next.action
    Marks:
    Country:

    but it supposed to redirect to index.jsp, how can we do that ?

    I am a student, somebody asked me
    how can you handle any junk Url request in struts( if somebody requested for myprofile.jsp, without login even if there is no such myProfile.Jsp file in server…

    in such situation how can we handle dummy requested Urls in Struts ?

  6. hi
    i want to know that how can i access the session value saved in action context in an action.

  7. Vipin Khandelwal says:

    How to set session between java and jsp page in struts 2 ??

  8. prashant says:

    I just want to know how to invalidate session after user is logged from the application in struts 2.

    Please give some example.

  9. Aditya says:

    Hi,

    this is an awesome example…. Kindly give examples on otnl.

  10. I really enjoyed..thanks a lot to java4s..it is very useful to every one and simple site….. fine.

  11. Hi ,
    This demo is very useful for me and i hava one more doubt what is the scope of session and can i use this any jsp and java pages?

  12. Hi,
    This example is very useful but i have a doubt. Isn’t struts internally storing a session object in map? If so then accordingly a session is one per user and can be accessed in the whole application. So my doubt is in NextActions class why there a neccasity to once again set the session?

  13. Hello java4s, I have an application with struts2 and hibernate. As of now, we have maintained with struts2.0.11 version jars. Now we are upgrading our application with struts2.3.15.1 jars. Everything is okay, After deploying my project into tomcat server, session is invalidating immediately after creating. what may be the reason?

  14. Anusha says:

    Hi,

    If we can achieve the same thing using Application and Session aware interface. Then what is the necessity of using two different interfaces?
    Please clarify my doubt.
    Thanks in advance.
    please do reply..

  15. Ravindra says:

    I’m in TCS, and this site helped me alot to complete my training project. Good Work !! Please Keep it up admin.

  16. Ullu says:

    Wow what a tutorial ,really nice lol.

  17. gayathri says:

    hai ,
    thanks for your good explanation and code its work.but i have one doubt we take data using session it is access with in browser. this sessionaware also accessing like session ?

Name*
Mail*
Website



By posting your answer, you agree to our comments policy.
Most Recent Posts from Top Categories
Spring Boot Hibernate Spring
Contact | About Us | Privacy Policy | Advertise With Us

© 2010 - 2024 Java4s - Get It Yourself.
The content is copyrighted to Sivateja Kandula and may not be reproduced on other websites.