Search This Blog

Loading...

Thursday, June 12, 2008

Session Check Interceptor

There must be some way to check that the current session is valid or invalid. This can be done using interceptors in struts in a very easy way.
Here I am giving an example how to resolve this.

First of all we will make an interceptor named SessionCheck.java.

package com.demo.interceptors;

import java.util.Collections;
import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionProxy;
import com.opensymphony.xwork2.config.entities.ResultConfig;
import com.opensymphony.xwork2.interceptor.Interceptor;

public class SessionCheck implements Interceptor {

public void init() {
}

public void destroy() {
}

public String intercept(ActionInvocation invocation) throws Exception {
ActionProxy proxy;
proxy = invocation.getProxy();
Map session = ActionContext.getContext().getSession();
Map results = proxy.getConfig().getResults();
/*
* We are checking that the user
* that is set at login time is null or not
*/
if (session.get("user") != null) {

return invocation.invoke();
} else {
/* Here we are passing the result to an
* invalid page by specifying its location
*/
ResultConfig rc = new ResultConfig("invalid",
"org.apache.struts2.views.freemarker.FreemarkerResult",
Collections.singletonMap("location",
"/com/demo/interceptors/invalid.jsp"));
results.put("invalid", rc);

return "invalid";
}

}
}

Now in struts.xml put the following code

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

<interceptors>

<interceptor name="SessionCheck"
class="com.demo.interceptors.SessionCheck" />
</interceptors>
<!—- We are using this because we want it to apply for each and every action -->
<default-interceptor-ref name="SessionCheck"/>


---
---
</struts>

6 comments:

Anonymous said...

Can't we have the path to "invalid" configured in struts.xml or some other configuration file, instead of hard - coding in the interceptor/

Anonymous said...

Hi,
thank you for this solution. But when I am using this the values in the getter are getting as null in the action. Do you know why it is happening like this.

Anonymous said...

Im also getting null value in getter inside the action

Anonymous said...

Any one can give a solution for the above null value problem?

Anonymous said...

Nope, I'm unable to get anything out of the session either... no idea why.

Anonymous said...

hi, i'm getting upsupportedoperation exception if the session is null

Post a Comment