Struts2之Struts2-2.5.5 Interceptor

来源:互联网 发布:linux 查看当前用户组 编辑:程序博客网 时间:2024/06/06 12:55

Struts2-2.5.5版本是目前为止最新的版本了,相对于之前的2.3版本以及再之前的版本而言,新版本改动了很多。

好了,废话不多说,GO CODE!

基本jar包:

Struts2之Struts2-2.5.5 Interceptor

web.xml核心配置,这里要注意咯!

        <!-- struts2核心控制器 -->    <filter>        <filter-name>struts2</filter-name> <!-- 这里要格外注意咯 -->        <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>        <!-- 设置struts2默认编码集为UTF-8 -->        <init-param> <param-name>struts.il8.encoding</param-name> <param-value>UTF-8</param-value>        </init-param>        <!-- 设置struts.xml文件位置 -->        <init-param> <param-name>filterConfig</param-name> <param-value>classpath:struts.xml</param-value>        </init-param>    </filter>    <filter-mapping>        <filter-name>struts2</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>

web.xml

接下来是struts.xml

<struts>    <!-- 设置默认编码集为UTF-8 -->    <constant name="struts.il8n.encoding" value="UTF-8" />    <!--设置开发者模式 -->    <constant name="struts.devMode" value="true" />    <!-- 当 struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生 产环境下使用),开发阶段最好打开 -->    <constant name="struts.configuration.xml.reload" value="true" />    <!--设置主题 -->    <!-- <constant name="struts.ui.theme" value="simple" /> -->    <!-- 该 属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即 所有匹配*.action的请求都由Struts 2处理。如         果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开 -->    <constant name="struts.action.extension" value="action," />    <!-- 设置是否支持动态方法调用,true为支持,false不支持. -->    <constant name="struts.enable.DynamicMethodInvocation" value="false" />    <!-- 设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭 -->    <constant name="struts.serve.static.browserCache" value="false" />    <constant name="struts.convention.default.parent.package" value="common"/>    <!-- 公共package -->    <package name="common" namespace="/" extends="struts-default">        <!-- 配置拦截器 -->        <interceptors> <!-- 注册拦截器 --> <interceptor name="loginInterceptor" class="com.Struts2Dashboard.action.LoginInterceptor" /> <!-- 引用已经注册了拦截器,形成自定义拦截器栈,自定义拦截器栈,将覆盖到默认栈 ,必须手动再自定义拦截器栈中 引用默认栈 --> <interceptor-stack name="loginStack"> <!-- 默认 --> <interceptor-ref name="defaultStack"></interceptor-ref> <!-- 自定义 --> <interceptor-ref name="loginInterceptor"></interceptor-ref> </interceptor-stack>        </interceptors>        <!-- 修改当前<package>默认栈,修改后package下的所有的action都将使用此栈 -->        <default-interceptor-ref name="loginStack"></default-interceptor-ref>        <!-- 全局结果集 -->        <global-results> <!-- 没有登陆 --> <result name="noLogin">/WEB-INF/pages/sweet/404.jsp</result>        </global-results>    </package></struts>

struts.xml

可有可无,不要怕麻烦,前期是为了后期维护做准备的。

bean就不在粘贴了哈,需要的话,可以评论留言哈。

/** * 登录拦截器action */@SuppressWarnings("serial")public class LoginInterceptor implements Interceptor {    //初始化        public void init {    }    //拦截    public String intercept(ActionInvocation invocation) throws Exception {                /*if(LoginAction.class == invocation.getAction.getClass){   return invocation.invoke;          }*/        Object action = invocation.getAction;        if (action instanceof LoginAction) {   //如果是LoginAction,则进行执行,即不做拦截 return invocation.invoke;          }        //判读session是否存在用户        User user =  (User) ActionContext.getContext.getSession.get("user");        System.out.println(user);                if(user == null){ System.out.println("action"); return "noLogin";        }        //放行        return invocation.invoke;    }    //销毁    public void destroy {    }}

LoginInterceptor

public class LoginAction extends ActionSupport implements ModelDriven<User> {    private User user = new User;    @Override    public User getModel {        // TODO Auto-generated method stub        return user;    }    @Action(value="login")    public String execute throws Exception {        ActionContext actionContext = ActionContext.getContext;        if ("admin".equals(user.getUsername) && "admin".equals(user.getPassword)) { actionContext.getSession.put("user", user); System.out.println("success"); return "success";        } else { System.out.println("input"); return "input";        }    }}

LoginAction

只是部分关键性代码,需要项目的话,评论处留下联系方式。

没有考虑session过期的情况哈,只是最基础的登录拦截器而已,请多多指教谢谢。

转载请注明出处,谢谢!未经授权请勿私自对本文相关图片进行添加水印!

0 0
原创粉丝点击