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

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

基本jar包:

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过期的情况哈,只是最基础的登录拦截器而已,请多多指教谢谢。

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

Struts2之Struts2-2.5.5 Interceptor的更多相关文章

  1. 18.如何自我Struts2它Struts2标签和综合汇总文章有点早

    18.如何自我Struts2它Struts2标签和综合汇总文章有点早[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了.仅仅好传到百度云上: h ...

  2. 13.怎样自学Struts2之Struts2本地化[视频]

    13.怎样自学Struts2之Struts2本地化[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了,仅仅好传到百度云上: http://pan ...

  3. 16.怎样自学Struts2之Struts2异常处理[视频]

    16.怎样自学Struts2之Struts2异常处理[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了,仅仅好传到百度云上: http://pa ...

  4. struts2(一) struts2入门

    首先推荐一本书,虽然我还没看过,但是我以后肯定会看的,<Struts+技术内幕>提取密码:kg6w .现在只是停留在会使用struts2的层次,自己也想继续深入研究,但是感觉自己的知识面还 ...

  5. 14.怎样自学Struts2之Struts2类型转换[视频]

    14.怎样自学Struts2之Struts2类型转换[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了.仅仅好传到百度云上: http://pa ...

  6. 11.怎样自学Struts2之Struts2验证[视频]

    11.怎样自学Struts2之Struts2验证[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了.仅仅好传到百度云上: http://pan. ...

  7. Java进阶知识02 Struts2下的拦截器(interceptor)和 过滤器(Filter)

    一.拦截器 1.1.首先创建一个拦截器类 package com.bw.bms.interceptor; import com.opensymphony.xwork2.ActionContext; i ...

  8. Struts2(七) Struts2访问Servlet的API

    当接受表单参数,向页面保持数据时.要用到Struts访问Servlet 的API .下面只做参考,有错误或不同意见可以发送邮箱2440867831@qq.com  .建议大家看struts文档,源代码 ...

  9. 简单模拟struts2及struts2的处理流程介绍

    用了几天模拟struts2,最后结果还是很成功的,也基本没有什么遇上比较难解决的问题,万事开头难,在最开始的时候无从下手,看着下面这张struts2工作流程图配合着网上的博客看了一天终于有了眉目. 看 ...

  10. 【struts2】Struts2的异常处理

    在Action中execute方法声明为:public String execute() throws Exception,这样,Action可以抛出任何Exception. 1)自己实现异常处理 我 ...

随机推荐

  1. Atitit 数据库事务实现原理

    Atitit 数据库事务实现原理   1.1. 自己在程序中实现事务操作. 如果只是需要事务的话,你自己给mongo操作加上事务功能就可以啦..数据库事务只不过是他自己实现了而已..如果数据库不支持事 ...

  2. 用 flow.ci 让 Hexo 持续部署

    编者按:感谢 @小小小杜 投稿,原文链接Juglans' Blog.如果你也想体验 flow.ci 的自动化持续部署,来 http://flow.ci 首页提交申请,邀请码随后会发送到邮箱:) flo ...

  3. iOS-数据持久化-对象归档

    一.简单说明 对象归档是将对象归档以文件的形式保存到磁盘中(也称为序列化,持久化),使用的时候读取该文件的保存路径读取文件的内容(也称为接档,反序列化), (对象归档的文件是保密的,在磁盘上无法查看文 ...

  4. 关于js中的同步和异步

    最近看到前端面试问到js中的同步和异步,这个问题该怎么回答? 梳理一下,js对于异步的处理,很多人的第一反应是ajax,这只能说是对了一半. 1.个人觉得,js中,最基础的异步是setTimeout和 ...

  5. WPF入门教程系列十一——依赖属性(一)

    一.依赖属性基本介绍 本篇开始学习WPF的另一个重要内容依赖属性. 大家都知道WPF带来了很多新的特性,其中一个就是引入了一种新的属性机制——依赖属性.依赖属性出现的目的是用来实现WPF中的样式.自动 ...

  6. AngularJS $http配置为form data 提交

    AngularJS $http配置为form data 提交 $scope.formData = {}; $http({ method: 'POST', url: '/user/', // pass ...

  7. Win10下PB停在欢迎窗口界面

    问题:Win10下不能打开PB12.5,PB12.6,一直停在欢迎窗口界面. 解决方法:把服务"Touch Keyboard and Handwriting Panel Service&qu ...

  8. KendoUI系列:ComboBox

    1.基本使用 1>.创建Input <input id="color" placeholder="Select Color..." /> &l ...

  9. [c++] STL = Standard Template Library

    How many people give up, because of YOU. Continue... 先实践,最后需要总结. 1. 数据流中的数据按照一定的格式<T>提取 ------ ...

  10. Deep learning:四十四(Pylearn2中的Quick-start例子)

    前言: 听说Pylearn2是个蛮适合搞深度学习的库,它建立在Theano之上,支持GPU(估计得以后工作才玩这个,现在木有这个硬件条件)运算,由DL大牛Bengio小组弄出来的,再加上Pylearn ...