分享知识-快乐自己:Struts2 拦截器 与 过滤器
拦截器的使用以及配置:
package com.gdbd.interceptor; import com.gdbd.pojo.UserInfo;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor; import java.util.Map; /**
* 登陆拦截器:(拦截的只是 Action 请求路径)
* (可根据自行情况进行更改)
* @author asus
*/
public class LoginInterceptor implements Interceptor {
@Override
public void destroy() {
System.out.println("销毁");
} @Override
public void init() {
System.out.println("初始化");
} @Override
public String intercept(ActionInvocation invocation) throws Exception {
System.out.println("---------------拦截器-------------------");
String actionName = invocation.getProxy().getActionName();
Map<String, Object> session = invocation.getInvocationContext().getSession();
UserInfo userInfo = (UserInfo) session.get("userInfo");
if ("login".equals(actionName)) {
String invoke = invocation.invoke();
return invoke;
}
if (userInfo != null) {
String invoke = invocation.invoke();
return invoke;
}
return "login";
}
}
struts.xml:关键配置
<!--
定义拦截器
-->
<interceptors>
<!--自定义拦截器-->
<interceptor name="loginInter" class="com.gdbd.interceptor.LoginInterceptor"/>
<!--拦截器栈-->
<interceptor-stack name="MyStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="loginInter"/>
</interceptor-stack>
</interceptors>
<!--全局范围拦截定义-->
<default-interceptor-ref name="MyStack"/> 或者...指定 Action
<action name="login" class="userLoginAction" method="password">
<result name="login">/login.jsp</result>
<result name="main" type="redirect">/main.jsp</result>
<interceptor-ref name="MyStack"/>
</action>
过滤器的使用以及配置:
package com.gdbd.filter;
import com.gdbd.pojo.UserInfo;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException; /**
* 原理是,将所有的地址中包含JSP的访问拦截,将访问重定位到网站的跟目录
* (根据自行情况可进行更改)
* @author asus
*/
public class URLFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("Filter 初始化");
} @Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
throws IOException, ServletException {
System.out.println("---------------过滤器-------------------");
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
//获取请求的URL路径
StringBuffer url = httpServletRequest.getRequestURL();
HttpSession session = httpServletRequest.getSession();
UserInfo userInfo = (UserInfo) session.getAttribute("userInfo");
if (userInfo != null) {
filterChain.doFilter(request, response);
return;
}
//判断地址中是否包含"JSP"
if (url.indexOf("login.jsp") > 0) {
filterChain.doFilter(request, response);
} else if (url.indexOf("jsp") > 0) {
HttpServletResponse httpres = (HttpServletResponse) response;
//跳转到网站根目录,也可以根据自己的需要重定位到自己的Action
httpres.sendRedirect("/login.jsp");
return;
} else { //不包含JSP,则继续执行
filterChain.doFilter(request, response);
}
}
@Override
public void destroy() {
System.out.println("Filter 销毁");
}
}
WEB.XML 配置
<!--过滤请求的URL路径-->
<filter>
<filter-name>URLfilter</filter-name>
<filter-class>com.gdbd.filter.URLFilter</filter-class>
</filter> <filter-mapping>
<filter-name>URLfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
提示:
楼主A:在进行SSH整合的时候使用到 拦截器 与 过滤器 (基本配置);发现 会先走 拦截器 然后再走 过滤器 。
分享知识-快乐自己:Struts2 拦截器 与 过滤器的更多相关文章
- struts2拦截器与过滤器
转载:http://www.cnblogs.com/JohnLiang/archive/2011/12/15/2288376.html 过滤器,是在java web中,你传入的request,resp ...
- 简单理解Struts2中拦截器与过滤器的区别及执行顺序
简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...
- struts2中拦截器与过滤器之间的区别
首先是一张经典的struts2原理图 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标准的过滤器链 c) ...
- struts2动态调用+Servlet过滤器+struts2拦截器
周末真的是懒到心慌...... 本文是在完整s2sh项目基础上添加的,不太了解s2sh项目构建的朋友可以先参考一下这几篇文章: eclipse环境下基于tomcat-7.0.82构建struts2项目 ...
- Struts2 拦截器配置以及实现
@(Java ThirdParty)[Struts|Interceptor] Struts2 拦截器配置以及实现 Struts2的拦截器应用于Action,可以在执行Action的方法之前,之后或者两 ...
- struts2 拦截器
拦截器:对Action的访问.可以拦截到Action中某个方法.与过滤器不同,过滤器过滤的是请求.过滤JSP.html.但是拦截器不能拦截jsp.html的访问. Struts2 拦截器在访问某个 A ...
- struts2拦截器
一.自定义拦截器 struts2拦截器类似于servlet过滤器 首先定义一个拦截器这个拦截器实现了Interceptor接口: package cn.orlion.interceptor; impo ...
- 浅谈Struts2拦截器的原理与实现
拦截器与过滤器 拦截器是对调用的Action起作用,它提供了一种机制可以使开发者定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行.同时也是提供了 ...
- Struts2拦截器原理以及实例
一.Struts2拦截器定义 1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现. 2. ...
随机推荐
- emacs的常用配置备份
据说有人搞丢了自己的emacs的配置,然后一怒之下抛弃了emacs投身vim,我还是做个emacs配置的备份吧, 虽然我现在也算不上emacs的发烧友. 这里的配置大多是从网上参考的,最多的是下面的链 ...
- Gradle 的配置和引用
我们的Android studio工程有时会存在很多共同的构建包 这里我会新建一个gradle 文件 config.gradle ext{ android = [ applicationId : &q ...
- 关于PHP反射
本文实例讲述了PHP反射机制原理与用法.分享给大家供大家参考,具体如下: 反射 面向对象编程中对象被赋予了自省的能力,而这个自省的过程就是反射. 反射,直观理解就是根据到达地找到出发地和来源.比如,一 ...
- RecyclerView的使用(3)之加入Header和Footer
原创文章.转载请注明 http://blog.csdn.net/leejizhou/article/details/50742544 李济洲的博客 RecyclerView尽管作为ListView的替 ...
- 获取系统时间的DOS命令
DOS C:\Users\yaozhendong>echo %date:~0,10% %time%2011/12/24 19:45:41.25 前段时间工作中需要对一个地址做定时PING操作,并 ...
- 为什么要对url进行encode
发现现在几乎所有的网站都对url中的汉字和特殊的字符,进行了urlencode操作,也就是: http://hi.baidu.com/%BE%B2%D0%C4%C0%CF%C8%CB/creat/bl ...
- 我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(三)Android客户端功能实现
我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(一)PC服务器端(地址:http://blog.csdn.net/ouyang_pen ...
- mysql(root用户密码设置)
root密码重置 修改root用户的密码: /*登录mysql*/ mysql -uroot -p123 /*切换数据库*/ use mysql /*修改root用户的密码*/ update user ...
- linux c编程:管道
2在前面介绍过,进程之间交换信息的唯一途径就是传送打开的文件.可以经由fork或者exec来传送.这一章将介绍新的进程共享方式 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都 ...
- docker centos yum 源
aliyun yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.rep ...