我想实现的就是除了登录页面,访问其他的都需要登录后才能访问,各位慕课网的朋友帮忙看看代码哪里有问题。谢谢!!
LoginInterceptor.java
package 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>
出任CEO迎娶白富美
相关分类