過濾器
package com.xy.filter;
import java.io.ioexception;
import javax.servlet.filter;
import javax.servlet.filterchain;
import javax.servlet.filterconfig;
import javax.servlet.servletexception;
import javax.servlet.servletrequest;
import javax.servlet.servletresponse;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
import javax.servlet.http.httpsession;
public class isloginfilter implements filter
{
public void destroy()
{
}
public void dofilter(servletrequest req, servletresponse resp, filterchain
chain)throws ioexception, servletexception
httpservletrequest request = (httpservletrequest) req;
httpservletresponse response = (httpservletresponse) resp;
httpsession session = request.getsession();
if (null == session.getattribute("uinfo"))
{
request.setattribute("msg", "您未登入或者離線時間過長,請重新登入");
request.getrequestdispatcher("/tologinaction")
.forward(request, response);
}
else
chain.dofilter(request, response);
public void init(filterconfig arg0) throws servletexception
}
login.jsp
<input type="hidden" value="${requestscope.msg}" id="msg" />
<script type="text/javascript">
var msg = document.getelementbyid("msg").value;
if ("" != msg) {
alert(msg);
</script>
當然可以在js中直接擷取${requestscope.msg}。
web.xml
<filter>
<filter-name>login</filter-name>
<filter-class>com.xy.filter.isloginfilter</filter-class>
</filter>
<filter-mapping>
<filter-name>login</filter-name>
<url-pattern>/logined/*</url-pattern>
</filter-mapping>
</filter>
下面是攔截器
package com.xy.interceptor;
import org.apache.struts2.servletactioncontext;
import com.opensymphony.xwork2.actioninvocation;
import com.opensymphony.xwork2.interceptor.abstractinterceptor;
import com.xy.pojo.manager;
public class authinterceptor extends abstractinterceptor
@override
public string intercept(actioninvocation invocation) throws exception
httpsession session = servletactioncontext.getrequest().getsession();
servletactioncontext.getrequest()
.setattribute("loginmsg", "您未登入或者離線時間過長,請重新登入");
manager login = (manager) session.getattribute("manager");
if (login != null) return invocation.invoke();
else return "mustlogin";
$(function (){
var loginmsg ='<s:property value="#request.loginmsg" escape="false"/>';
if(""!=loginmsg)
alert(loginmsg);
});
struts.xml
<package name="default" namespace="/" extends="struts-default">
<interceptors>
<!-- 權限控制攔截器 -->
<interceptor name="login" class="com.xy.interceptor.authinterceptor"></interceptor>
<!-- 定義一個包含權限控制的攔截器 -->
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultstack"></interceptor-ref>
<interceptor-ref name="login"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-action-ref name="tomain"></default-action-ref>
<!-- 定義全局處理結果 -->
<global-results>
<result name="mustlogin">/login.jsp</result>
</global-results>
<action name="tomain" class="com.xy.action.tomainaction">
<result name="success">/main.jsp</result>
</action>
<action name="tologin" class="com.xy.action.tologinaction">
<result>/login.jsp</result>
<action name="loginverify" class="com.xy.action.loginverifyaction">
<result name="success" type="chain">tomain</result>
<result name="error">/login.jsp</result>
<action name="stu_*" class="com.xy.action.studentaction"
method="{1}">
<interceptor-ref name="mydefault" />
<result name="tomodify">/modify.jsp</result>
<result name="toadd">/add.jsp</result>
</package>