简体   繁体   中英

Struts2 - SessionMonitor -The page isn't redirecting properly

I have developed struts2 web application. I need to do the session monitor. If the user doesn't login to the system/ or session time out, automaticatlly need to redirect to login page.

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>

    <filter>
        <filter-name>SessionMonitor</filter-name>
        <filter-class>com.xont.tracker.security.filters.ApplicationSessionMonitor</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>SessionMonitor</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <description>This listener class will listen to user session and assigns session for 30 minutes </description>
        <listener-class>com.xont.tracker.listeners.SessionListener</listener-class>
    </listener>

    <listener>
        <description>This listener class will listen for context listeners </description>
        <listener-class>com.xont.tracker.listeners.ContextListener</listener-class>
    </listener>

    <context-param>
        <param-name>401</param-name>
        <param-value>Not Authorized</param-value>
    </context-param>

    <context-param>
        <param-name>401:timeout</param-name>
        <param-value>Your session timed out. Please login again</param-value>
    </context-param>

    <context-param>
        <param-name>300</param-name>
        <param-value>You don't have permission to access the page</param-value>
    </context-param>

    <context-param>
        <param-name>403</param-name>
        <param-value>You must login to continue</param-value>
    </context-param>

    <error-page>
        <error-code>404</error-code>
        <location>/error_pages/error_404.jsp</location>
    </error-page>

    <error-page>
        <exception-type>java.lang.Exception</exception-type>
        <location>/error_pages/unexpected_error.jsp</location>
    </error-page>

    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>
</web-app>

This is my ApplicationSessionMonitor

 public class ApplicationSessionMonitor extends ApplicationMonitor {
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
        try {
            HttpServletRequest request = (HttpServletRequest) servletRequest;
            HttpSession session = request.getSession();
            Object user = session.getAttribute("loged-user");

            if (user == null) {
                buildTempPath(session, requestedPath(request));
                ((HttpServletResponse) servletResponse).sendRedirect(contextPath);
            } else {
                goAhead(servletRequest, servletResponse, chain);
            }
        } catch (Exception e) {
            e.printStackTrace();;
        }
    }
}

This is my struts.xml

<package name="default" extends="struts-default" namespace="/">
    <action name="login" class="com.xont.tracker.login.action.LoginAction">
        <result name="success" type="redirect">index.jsp</result>
        <result name="temp_url" type="redirect">${temp_url}</result>
        <result name="error">login.jsp</result>
        <result name="input">login.jsp</result>
    </action> .....

Always it say The page isn't redirecting properly . It couldn't redirect properly.Please anybody guide me what is an issue?

I can't help you on debugging your Application Monitor, but if you are using Struts2, why not using Struts2 components, like Interceptors (based on intercepting filter technology too) ?

I've written an Interceptor to do exactly what you are describing, feel free to read the post .

hope that helps

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM