自定义拦截器,检查用户是否登录
- 1.创建自定义拦截器类
import javax.interceptor.InvocationContext;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
public class CheckLoginInterceptor extends MethodFilterInterceptor{
//自定义拦截器
@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
HttpSession session = ServletActionContext.getRequest().getSession();
Object attribute = session.getAttribute("user");
if (attribute==null) {
return "login";
}else {
return invocation.invoke();
}
}
}
- 2.配置struts文件
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.ui.theme" value="simple" />
<include file="user.xml"></include>
<!--修改上传大小-->
<constant name="struts.multipart.maxSize" value="10485760">
</constant>
<package name="mydefault" extends="struts-default">
<interceptors><!--拦截机组-->
<interceptor name="checklogin" class="com.itcast.interceptor.CheckLoginInterceptor"></interceptor>
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="checklogin">
<param name="excludeMethods">login</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mydefault"></default-interceptor-ref>
<global-results><!--全局结果视图要放在<default-interceptor-ref>下-->
<result>/login/login.jsp</result>
</global-results>
</package>
</struts>
3.这样一个自定义的拦截器就生效了,可以拦截任何没有登录的用户进入登录界面
在拦截器栈中添加
<
interceptor-ref
name
=
"checklogin"
>
<
param
name
=
"excludeMethods"
>
login
</
param
>
</
interceptor-ref
>
可以放过登录方法,不进行拦截。