分享知识-快乐自己: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. ...
随机推荐
- linux heads分析(转)
内核默认的运行地址为PHY_OFFSET+0x8000,即物理地址开始后的0x8000字节处,前面是留给参数用的.参数以atag方式存储,默认放在0x100偏移位置. http://blog.chin ...
- 【Github】之突然访问不了Github地址
访问Github突然上不去了 解决办法: 一.修改hosts 1.打开Dns检测|Dns查询 - 站长工具2.在检测输入栏中输入http://github.com官网3.把检测列表里的TTL值最小的I ...
- 什么是 Service Mesh
作者|敖小剑 微服务方兴未艾如火如荼之际,在 spring cloud 等经典框架之外,Service Mesh 技术正在悄然兴起.到底什么是 Service Mesh,它的出现能带来什么,又能改变什 ...
- 功能强大的图片截取修剪神器:Android SimpleCropView及其实例代码重用简析(转)
功能强大的图片截取修剪神器:Android SimpleCropView及其实例代码重用简析 SimpleCropView是github上第一个第三方开源的图片修剪截取利器,功能强大,设计良好.我个人 ...
- zendstudio的安装和破解
参考博客地址:http://www.oxox.work/web/php-basic/zendstudio/ 注明:还未验证
- python+pip+adb
最近开始玩python,用它写一些小程序游戏的辅助,现在做下总结 下面进入正文. 本文适用对象为WIN10系统,安卓用户.目的在于让丝毫没有接触过Python的小伙伴都能成功运行,如果你恰好是这样的对 ...
- 纯JS实现动态时间
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- lua面向对象铺垫
Account = { balance = , withdraw = function(self, v) self.balance = self.balance - v end } --:操作符隐藏了 ...
- poj1408(求线段交点)
求出所有线段的交点,然后利用叉乘求四边形面积即可. // // main.cpp // poj1408 // // Created by 陈加寿 on 15/12/31. // Copyright ( ...
- Windows7 配置两个版本的java环境,可自由切换
1. 准备工作 下载jdk: jdk1.7[http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads ...