Struts2之Struts2-2.5.5 Interceptor
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的更多相关文章
- 18.如何自我Struts2它Struts2标签和综合汇总文章有点早
18.如何自我Struts2它Struts2标签和综合汇总文章有点早[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了.仅仅好传到百度云上: h ...
- 13.怎样自学Struts2之Struts2本地化[视频]
13.怎样自学Struts2之Struts2本地化[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了,仅仅好传到百度云上: http://pan ...
- 16.怎样自学Struts2之Struts2异常处理[视频]
16.怎样自学Struts2之Struts2异常处理[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了,仅仅好传到百度云上: http://pa ...
- struts2(一) struts2入门
首先推荐一本书,虽然我还没看过,但是我以后肯定会看的,<Struts+技术内幕>提取密码:kg6w .现在只是停留在会使用struts2的层次,自己也想继续深入研究,但是感觉自己的知识面还 ...
- 14.怎样自学Struts2之Struts2类型转换[视频]
14.怎样自学Struts2之Struts2类型转换[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了.仅仅好传到百度云上: http://pa ...
- 11.怎样自学Struts2之Struts2验证[视频]
11.怎样自学Struts2之Struts2验证[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了.仅仅好传到百度云上: http://pan. ...
- Java进阶知识02 Struts2下的拦截器(interceptor)和 过滤器(Filter)
一.拦截器 1.1.首先创建一个拦截器类 package com.bw.bms.interceptor; import com.opensymphony.xwork2.ActionContext; i ...
- Struts2(七) Struts2访问Servlet的API
当接受表单参数,向页面保持数据时.要用到Struts访问Servlet 的API .下面只做参考,有错误或不同意见可以发送邮箱2440867831@qq.com .建议大家看struts文档,源代码 ...
- 简单模拟struts2及struts2的处理流程介绍
用了几天模拟struts2,最后结果还是很成功的,也基本没有什么遇上比较难解决的问题,万事开头难,在最开始的时候无从下手,看着下面这张struts2工作流程图配合着网上的博客看了一天终于有了眉目. 看 ...
- 【struts2】Struts2的异常处理
在Action中execute方法声明为:public String execute() throws Exception,这样,Action可以抛出任何Exception. 1)自己实现异常处理 我 ...
随机推荐
- 知方可补不足~SqlServer自动备份数据库及清理备份文件
回到目录 对于SQLSERVER这个关系型数据库来说,为了保持数据的安全,备份是必须的,当你的一个误操作导致数据丢失,这可能是灾难性的,是不被允许发生的,这时,我们必须要做好定期的备份工作,如我们可以 ...
- MySQL账户安全设置
一般来说,安装完MySQL后,默认的用户是root,密码123456,外网不能访问. 有时候也希望在外网访问,则可以添加一个账户.建议不要用root. 如下表,存在安全问题: mysql> se ...
- 模糊测试——强制发掘安全漏洞的利器(Jolt 大奖精选丛书)
模糊测试——强制发掘安全漏洞的利器(Jolt 大奖精选丛书) [美]Sutton, M.Greene, A.Amini, P. 著 段念赵勇译 ISBN 978-7-121-21083-9 2013年 ...
- Gitlab备份、升级、恢复
一.备份 1.使用Omnibus安装包安装 --gitlab-rake gitlab:backup:create 2.使用源码安装 --./use_gitlab----如果备份失败,PATH路径错误, ...
- iOS开发——UI精选OC篇&UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍
UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍 一:UIApplication:单例(关于单例后面的文章中会详细介绍,你现在只要知道 ...
- Enterprise Solution 开发框架功能点
1. 通用查询模块,可以通过关联数据库表,存储过程或程序代码开发查询,多个查询之间也可构成主从关联查询. 2. 业务异常处理 支持统一的异常处理. 3. 内置一个简单的SQL Server查询分析器, ...
- Netbeans 中创建数据连接池和数据源步骤(及解决无法ping通问题)
1.启动glassfish服务器, 在浏览器的地址栏中输入 http://localhost:4848 2.首先建立JDBC Connection Pools: 3.new 一个Connectio P ...
- hdu4750Count The Pairs(最小生成树找瓶颈边)
/* 题意:就是给你一个图,图的每两个点都有多条路径,每一条路径中都有一条最大边, 所有最大边的最小边(也就是瓶颈边)就是这两点之间的val值!然后给你一个值f, 问有多少个顶点对的val>=f ...
- java多线程的等待唤醒机制及如何解决同步过程中的安全问题
/* class Person{ String name; String sex; boolean flag = true; public void setPerson(String name, St ...
- Java多线程系列--“JUC集合”05之 ConcurrentSkipListMap
概要 本章对Java.util.concurrent包中的ConcurrentSkipListMap类进行详细的介绍.内容包括:ConcurrentSkipListMap介绍ConcurrentSki ...