0

struts2 Web アプリケーションを開発しました。セッションモニターを行う必要があります。ユーザーがシステムにログインしない場合、またはセッション タイムアウトが発生した場合、自動的にログイン ページにリダイレクトする必要があります。

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>

これは私の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();;
        }
    }
}

これは私の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> .....

いつもそれは言うThe page isn't redirecting properly。正しくリダイレ​​クトできませんでした。何が問題なのか教えてください。

4

1 に答える 1

2

Application Monitor のデバッグについてはお手伝いできませんが、Struts2 を使用している場合は、Interceptorなどの Struts2 コンポーネントを使用してみませんか?

あなたが説明していることを正確に行うためのインターセプターを作成しました。投稿を自由に読んでください

それが役立つことを願っています

于 2012-12-24T10:34:09.007 に答える