- 浏览: 1500894 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (798)
- struts2 (42)
- servlet (20)
- quartz (4)
- jquery & ajax (24)
- tomcat (5)
- javascript (15)
- struts1 (8)
- 搜索关键字及链接 (3)
- fckeditor (3)
- Apache (5)
- spring (22)
- linux (3)
- 企业应用 (8)
- 综合应用 (13)
- 服务器 (2)
- 数据库 (85)
- 性能调优 (21)
- 网络应用 (15)
- 缓存技术 (8)
- 设计模式 (39)
- 面试题 (7)
- 程序人生&前辈程序员 (29)
- java基础 (59)
- hibernate (75)
- log4j (4)
- http (11)
- 架构设计 (28)
- 网页设计 (12)
- java邮件 (4)
- 相关工具 (11)
- ognl (7)
- 工作笔记 (18)
- 知识面扩展 (12)
- oracle异常 (1)
- 正则表达式 (2)
- java异常 (5)
- 项目实践&管理 (1)
- 专业术语 (11)
- 网站参考 (1)
- 论坛话题 (2)
- web应用 (11)
- cxf&webservice (22)
- freemarker (3)
- 开源项目 (9)
- eos (1)
- ibatis (6)
- 自定义标签 (3)
- jsp (3)
- 内部非公开文档(注意:保存为草稿) (0)
- 国内外知名企业 (2)
- 网店 (3)
- 分页 (1)
- 消费者习惯 (2)
- 每日关注 (1)
- 商业信息 (18)
- 关注商业网站 (1)
- 生活常识 (3)
- 新闻 (2)
- xml&JSON (5)
- solaris (1)
- apache.common (3)
- BLOB/CLOB (1)
- lucene (2)
- JMS (14)
- 社会进程 (8)
- SSH扩展 (2)
- 消费心理 (1)
- 珠三角 (1)
- 设计文档 (1)
- XWork&webwork (1)
- 软件工程 (3)
- 数据库及链接 (1)
- RMI (2)
- 国内外知名企业&人物 (1)
最新评论
-
司c马:
简介易懂、
OutputStream和InputStream的区别 -
在世界的中心呼喚愛:
解决我的问题
Java获取客户端的真实IP地址 -
bo_hai:
都是些基本的概念呀!
SSO -
tian_4238:
哥们,你也是搞水利这块的吧。
巧用SQLQuery中的addScalar -
loveEVERYday:
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp小结
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://shenzhenchufa.blog.51cto.com/730213/269722
|
(1)
Filter与struts2x拦截器区别:
Filter:
当程序请求servlet,jsp时,Filter会进行拦截。程序将先经过filter后,才到达目标的servlet,jsp;常用于系统权限管理(即用户访问某些页面之前,进行Filter权限检查)
struts2x拦截器:
只是在程序访问Action之前进行拦截。常用于记录系统操作日志,或添加额外功能。
(2)
Filter简介:
Filter的三个方法:init(),destroy(),doFilter();
三个实例如下:
(1)-------<利用filter进行中文字符处理>------------
1) 在web.xml中的配置: <filter> <filter-name>encoding</filter-name> <filter-class> org.lxh.myzngt.filter.EncodingFilter </filter-class> <init-param> <param-name>charset</param-name> <param-value>gbk</param-value> </init-param> </filter> <filter-mapping> <filter-name>encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 2)
JAVA代码: public class EncodingFilter implements Filter { private String charset = null; public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException { req.setCharacterEncoding(this.charset); chain.doFilter(req, resp); } //Filter获取web.xml中的初始参数;
public void init(FilterConfig arg0) throws ServletException {
this.charset = arg0.getInitParameter("charset"); } } (2)<利用filter进行用户登录过滤>------------
1) <filter> <filter-name>userlogin</filter-name> <filter-class> org.lxh.myzngt.filter.UserLoginFilter </filter-class> </filter> <filter-mapping> <filter-name>userlogin</filter-name> <url-pattern>/jsp/user/*</url-pattern> </filter-mapping> <filter-mapping> -->可以多个匹配!!!! <filter-name>userlogin</filter-name> <url-pattern>/jsp/ques/*</url-pattern> </filter-mapping> 2) public class UserLoginFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) arg0; if (req.getSession().getAttribute("userid") != null) { arg2.doFilter(arg0, arg1); } else { req.getRequestDispatcher("forward.htm").forward(arg0, arg1) ; } } public void init(FilterConfig arg0) throws ServletException {
} } (3)
在用户访问目标页面之前,利用Filter进行进行权限查询:
1.用户是否已登录(即session中是否有相应的记录)
2.用户权限是否符合访问页面要求。
如下:
(1)在web.xml中添加:
<filter> <filter-name>PrivilegeFilter</filter-name> <filter-class>com.demo.web.filter.PrivilegeFilter</filter-class> <init-param> <param-name>doNotFilterURL</param-name> <param-value> admin/rand, /login, admin/logout, /common/, /images/, /style/, /js/,
/fckeditor/, /userFilesAbsolutePath, /editPass
</param-value> </init-param> </filter> <filter-mapping>
<filter-name>PrivilegeFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> (2)
com.demo.web.filter.PrivilegeFilter定义: public class PrivilegeFilter implements Filter {
/** 不需要过滤的URL */
private String[] doNotFilterURL; public void init(FilterConfig filterConfig) throws ServletException {
String params = filterConfig.getInitParameter("doNotFilterURL"); if (params != null) { String urls[] = params.split(","); doNotFilterURL = new String[urls.length]; for (int i = 0, size = urls.length; i < size; i++) { doNotFilterURL[i] = urls[i]; } } } HttpServletRequest req = (HttpServletRequest) request; String requestPath = req.getRequestURI(); //如:demo/login.action String contextRoot = req.getContextPath(); //如:demo int length = contextRoot.length();
String path = requestPath.substring(length); //如:/login.action if (path != null && path.length() != 0) { path = path.trim(); } /** 登录页面不进行拦截 */
if (Constants.FIRST_LOGIN_URL.getStringValue().equals(path)) { return true; } //获取请求的地址,比对不需要过滤的URL的数组doNotFilterURL。 boolean doNotFilter = false; if (doNotFilterURL != null) { for (String url : doNotFilterURL) { if (url != null && path.contains(url.trim())) {
doNotFilter = true; break; } } } //对不属于不用过滤的,查询数据表,看用户是否有权访问。若没,则返回提示用户无限访问页面。若有,则直接通过。
}
本文出自 “Changes we need ! ” 博客,请务必保留此出处http://shenzhenchufa.blog.51cto.com/730213/269722 |
发表评论
-
Struts2对Action名称的搜索顺序
2011-08-03 22:47 1382新建一个struts2项目,命名为struts2。按照如下XM ... -
探究Struts2运行机制:StrutsPrepareAndExecuteFilter 源码剖析
2011-08-03 19:09 1772一、概述 Struts2的核心是一个Filter ... -
struts2 FilterDispatcher 和 StrutsPrepareAndExecuteFilter 的区别
2011-08-03 18:02 1345FilterDispatcher是struts2.0.x到2. ... -
框架学习之Struts2 第二节 Action的详解
2011-08-03 17:50 1375http://www.cnblogs.com/ying ... -
Struts2的模板和主题theme及自定义theme
2011-08-03 16:59 8266Struts2提供了三种主题,ajax, simple, cs ... -
struts2 action基类 ActionSupport
2011-08-03 16:14 2637Struts 2的Action无须实现 ... -
Struts2访问Web元素(RequestAware,SessionAware,ApplicationAware)
2011-08-03 14:50 9702在Struts2中,动作类虽然继承ActionSupport类 ... -
Struts2自定义拦截器实例—Session超时的处理
2011-08-03 10:49 3399版本:struts2.1.6 实例功能:当用户登陆后,ses ... -
Struts2数据传输的背后机制:ValueStack(值栈)
2011-07-11 15:34 1343今天看到一篇讲struts2的valuestack的很好文章, ... -
struts2文件上传的采用的三种方式解析
2011-07-06 18:29 1372文件上传几乎是每个项目实现的一个必须的模块。 上传就是将 ... -
Struts2 <s:token/>标签
2011-03-01 09:24 16121、使用Struts2的表单标签,其中需要增加token标签。 ... -
struts2的Action配置通配符
2011-02-28 17:05 22231.注意,书写代码的时候一定要注意命名的规则,不要胡乱的命名, ... -
struts2中form的theme属性
2011-02-28 16:00 2381struts2中theme属性包括xhtml,html,sim ... -
Struts2的类型转换器
2011-02-24 17:27 1392一、概述 在B/S应用中,将字符串请求参数转换为相应的 ... -
Struts2标签--s:url
2011-02-23 17:09 1882<!--action就是struts2 acti ... -
hgdfghgdfh
2011-01-06 17:57 0datealocaltonight.com -
Struts2 默认的模板配置 theme
2010-10-29 10:26 1474在使用struts2标签时,默认情况下生成的html代码会添加 ... -
Struts2自定义Theme
2010-10-29 10:21 15951. Struts2 Theme与WebWork Theme ... -
Struts2 的四种theme类型
2010-10-29 10:13 1677struts2 中有四种 theme 类型: simple ... -
struts2数据校验流程图
2010-10-29 09:40 2151通过我在blog中写到关于利用Struts 2完成手动校验这篇 ...
相关推荐
Struts2的拦截器是基于Java的Servlet Filter机制实现的,但是更加强大和灵活。 2. **拦截器链**:在Struts2中,多个拦截器可以形成一个拦截器链,每个拦截器按照定义的顺序依次执行。如果所有拦截器都允许Action...
在本案例中,我们将深入探讨如何使用Struts2拦截器实现登录权限验证,同时结合Servlet Filter进一步加强安全性。 首先,让我们理解Struts2拦截器的工作原理。拦截器是基于AOP(面向切面编程)的概念设计的,它们...
7. **拦截器(Interceptor)**:Struts2 的拦截器可以实现登录检查、权限控制等功能。 8. **过滤器(Filter)**:可能包括字符编码过滤器、Spring Security 过滤器等,用于处理请求和响应。 在实际开发中,还需要...
Struts2 中拦截器与过滤器的区别及执行顺序 Struts2 中的拦截器(Interceptor)和过滤器(Filter)是两个不同的概念,虽然它们都可以影响请求的处理过程,但它们的作用域、执行顺序和实现机制都有所不同。 拦截器...
在Struts 2框架中,过滤器(Filter)和拦截器(Interceptor)都是用于处理请求的关键组件,但它们之间存在本质的区别。正确理解这些差异有助于开发者更高效地利用这两种工具来优化应用程序的性能和安全性。 #### 二、...
Struts2 拦截器是基于Java的Servlet Filter设计模式的一种实现,它提供了一种在Action执行前后插入额外逻辑的方式。拦截器是Struts2框架的核心组件之一,用于增强应用的功能,比如权限验证、日志记录、数据校验等。 ...
这个名为"Struts2编写的通用(拦截器,过滤器)Filter"的项目,主要目标是防止用户非法访问未授权的页面,确保只有登录用户才能访问特定的资源。 **拦截器(Interceptor)** 拦截器是Struts2框架的核心特性之一,它...
2. **拦截器(Interceptor)**:拦截器是Struts2的核心特性,它允许开发者在Action执行前后插入自定义逻辑。在这个项目中,拦截器可能用于实现登录验证、权限检查等功能,确保只有合法用户才能访问特定资源。 3. **...
自定义拦截器可以扩展Struts2的功能,使我们的应用更加灵活和模块化。 首先,要创建一个自定义拦截器,我们需要定义一个新的Java类并实现`Interceptor`接口或继承`AbstractInterceptor`类。这个类需要覆盖`...
3. **配置Struts2**:设置Struts2的配置文件,定义Action和结果,同时配置Struts2的拦截器,集成Shiro Filter。 4. **整合MyBatis**:配置MyBatis的SqlSessionFactory,编写Mapper接口和XML配置文件,实现SQL的动态...
**Struts2配置**:Struts2的配置主要集中在`struts.xml`中,定义Action、拦截器、结果类型等,确保框架能够根据配置处理请求。 #### CRUD功能开发流程 1. **实体类设计**:基于业务需求设计实体类,并使用...
Struts2的核心组件包括Filter Dispatcher(核心控制器)、Action类(业务逻辑处理)、Result(视图渲染)和Interceptor(拦截器)。拦截器是Struts2的一大特色,允许开发者在Action执行前后插入自定义逻辑,例如日志...
- 在 Struts2 中,拦截器的工作方式类似于过滤器(Filter),但更面向业务逻辑。它们按照预定义的顺序组成一个拦截器栈,当请求到达Action时,会逐个执行这些拦截器。 2. **拦截器的配置** - 在 `struts.xml` ...
Struts2 工作原理及拦截器和过滤器 Struts2 框架的工作原理可以分为以下几个步骤: 1. 客户端发出一个指向 Servlet 容器的请求(Tomcat); 2. 这个请求会经过几个过滤器,最后会到达 FilterDispatcher 过滤器。...
7. **过滤器(Filter)**:如`struts2-convention-plugin.xml`,用于设置Struts2的拦截器,实现URL映射和权限控制。 8. **测试类**:JUnit或Mockito测试代码,用于验证功能正确性。 通过这个SSH内容管理系统,...
在Struts2中,拦截器扮演着至关重要的角色,它们是框架的核心组件,能够增强应用的功能并实现诸如日志记录、权限检查、事务管理等通用任务。本文将深入探讨如何模拟Struts2的拦截器,并通过一个实际的Filter类来阐述...
Java+Struts2 防盗链(Filter 不可过滤 Action) 防盗链是指防止在没有通过合理的登录界面,直接进入到系统中的机制...使用 Filter 和 Struts2 的拦截器,我们可以实现防盗链机制,避免用户直接访问系统中的某些页面。
在Java Web开发中,"Spring+...在学习和实践中,你需要理解每个框架的核心概念,如Spring的IoC容器、Struts2的拦截器和Action、Mybatis的动态SQL,以及它们之间的交互机制。这将为你后续的Java Web开发打下坚实的基础。
与Servlet规范中的Filter相比,虽然两者都用于处理请求,但拦截器在Struts2中具有独立的生命周期和更灵活的调用顺序管理。 4.1.1 拦截器的调用时机与流程 拦截器的调用主要由`...