我想实现的就是除了登录页面,访问其他的都需要登录后才能访问,各位慕课网的朋友帮忙看看代码哪里有问题。谢谢!!LoginInterceptor.javapackage com.yeka.oa.interceptor;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
import com.yeka.oa.entity.SysEmployee;
@SuppressWarnings("serial")
public class LoginInterceptor extends MethodFilterInterceptor {
@SuppressWarnings("unchecked")
@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
ActionContext context = invocation.getInvocationContext();
//通过ActionContext获取session的信息,以Map形式返回
Map session = context.getSession();
//获取容器里面的username值,如果存在说明该用户已经登录,让他执行操作,如果未登录让他进行登录
SysEmployee user = (SysEmployee) session.get("user");
if(user!=null){
invocation.invoke();
}
context.put("nologin", "对不起,你没有登录,不能进行该操作");
return "login";
}
}struts.xml配置<!-- 配置拦截器 -->
<package name="my-default" extends="struts-default">
<interceptors>
<!-- 配置未登录进行操作的拦截器 -->
<interceptor name="loginInterceptor" class="com.struts2.interceptor.LoginInterceptor">
</interceptor>
<!-- 重新封装一个默认的拦截器栈 -->
<interceptor-stack name="myDefaultStack">
<interceptor-ref name="loginInterceptor" />
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<!-- 为这个包设置默认的拦截器栈 -->
<default-interceptor-ref name="myDefaultStack" />
<!-- 设置全局的返回值 -->
<global-results>
<result name="login" type="redirect">login.jsp</result>
</global-results>
</package>
添加回答
举报
0/150
提交
取消