Skip to main content

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>

Comments

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

    ReplyDelete
  2. 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.

    ReplyDelete
  3. Im also getting null value in getter inside the action

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

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

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

    ReplyDelete
  7. Maybe it works with this
    ---
    final ActionContext context = invocation.getInvocationContext ();
    HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST);
    HttpSession session = request.getSession (true);
    ---
    instead
    ---
    Map session = ActionContext.getContext().getSession();
    ---

    ReplyDelete
    Replies
    1. ActionContext context = actionInvocation.getInvocationContext();
      HttpServletRequest request = (HttpServletRequest) context.get(StrutsStatics.HTTP_REQUEST);
      HttpSession session = request.getSession (true);

      Delete
  8. Hi,
    Am new to java.Could u please post a simple program in stuts using logging filter.

    ReplyDelete

Post a Comment

Popular posts from this blog

Getting height and width of image in Java

Yesterday I was working on something that requires manipulation of image for getting its properties. After searching over the internet I found a very intersting class on Java i.e ImageIO and BufferedImage class. These classes are good enough to manipulate images. there are many other claases also. But what I need i got it from these. I found many developers searching over internet for getting properties of image and there is no good small example for that. Thats why I thought why not creating a simple code to manipulate the image and help the developers. Here is the small code that helps to get the height and width of the image. Enjoy it!! import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class GetImage { public static void main(String[] args) { try { File f = new File("E:/Vinod/Docs/Pics/krishna_01.jpg"); BufferedImage image = ImageIO.read(f); int height = image.getHeight(); in

Struts 2 Hello World Example

I had seen many new deveopers struggling against struts2 hello world example. So I decided to write a small example. Below are the required libraries to run this example which are easily availabel struts2-core-2.1.8.1 xwork-core-2.1.6 commons-logging-1.0.4 commons-logging-api-1.1 freemarker-2.3.8 ognl-2.7.3 commons-fileupload-1.2 The structure of the applictaion which I am following is (Eclipse IDE) Struts2Demo |---src | |----org | | |----vinod | | | |----action | | | | |----HelloWorld।java |---struts.xml |---WebContent | |---jsp | |---HelloWorld।jsp |---index.jsp |---WEB-INF | |---lib | |---web.xml Struts 2 in Action It is true that different IDE's use different structure, but at last when war is build they follow same structure. Lets start... HelloWorld.java import com.opensymphony.xwork2.ActionSupport; public class HelloWorld extends ActionSupport { String greetings = null; public String execute() throws Exception { setGreetings("Hel

Struts 2 Ajax drop down Example

Struts 2 has emerged as boon for developers. But the documentation available is very small. So I had decided to give a brief demonstration of the ajax used in struts 2.1.8.1 Libraries used: commons-beanutils-1.7.0.jar commons-fileupload-1.2.jar commons-logging-1.1.jar commons-logging-api-1.1.jar freemarker-2.3.8.jar struts2-core-2.1.8.1.jar struts2-dojo-plugin-2.1.8.1.jar xwork-core-2.1.6.jar In this example when u select from one drop down the other will populate accordingly. You can use it as it is or play with it. Enjoy !! index.jsp <%@ taglib prefix="s" uri="/struts-tags" %> <s:action name="ListingAction" executeResult="true"></s:action> listing.jsp <%@ taglib prefix="s" uri="/struts-tags"%> <%@ taglib prefix="sx" uri="/struts-dojo-tags"%> Listing detail.jsp <%@ taglib prefix="s" uri="/struts-tags"