分享知识-快乐自己: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. ...
随机推荐
- 【数据挖掘】关联分析之Apriori(转载)
[数据挖掘]关联分析之Apriori 1.Apriori算法 如果一个事务中有X,则该事务中则很有可能有Y,写成关联规则 {X}→{Y} 将这种找出项目之间联系的方法叫做关联分析.关联分析中最有名的问 ...
- 尽管是一个CS专业的学生,小B的数学基础很好并对数值计算有着特别的兴趣,喜欢用计算机程序来解决数学问题。现在,她正在玩一个数值变换的游戏。她发现计算机中经常用不同的进制表示同一个数,如十进制数123表达为16进制时只包含两位数7、11(B),用八进制表示时为三位数1、7、3。按不同进制表达时,各个位数的和也不同,如上述例子中十六进制和八进制中各位数的和分别是18和11。
include "stdafx.h" #include<iostream> #include<vector> #include <algorithm& ...
- centos7 安装vnc服务
一,安装服务器端 1,添加用户: # useradd vnc # passwd vnc 2,安装gnome桌面 # yum groupinstall "GNOME Desktop" ...
- 解决Command "laravoole" is not defined.
版权声明:本文为博主原创文章,未经博主允许不得转载. GitHub地址:https://github.com/garveen/laravoole 先来执行正常的安装流程: 安装 要开始,将larav ...
- python 可变参数函数定义* args和**kwargs的用法
python函数可变参数 (Variable Argument) 的方法:使用*args和**kwargs语法.其中,*args是可变的positional arguments列表,**kwargs是 ...
- 自定义TextView带有各类.ttf字体的TextView
最近项目遇到了将普通文字转化为带有字体样式的文字,这里就涉及到了.ttf文件,我上网百度了不少资料最终终于实现了,现在想想其实并不复杂 1,你需要下载一种.ttf字体文件,你可以从网上找到一种字体的. ...
- 【BZOJ3143】[Hnoi2013]游走 期望DP+高斯消元
[BZOJ3143][Hnoi2013]游走 Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 ...
- 九度OJ刷题报告
从8月初到现在,已经刷了400道题,越到后面题目越难,但仍会继续努力. 现将自己所AC的代码贴到博客上整理,同时供大家交流参考. 所有代码均为本人独立完成,全部采用C语言进行编写.
- 我的Android进阶之旅------>Android中android:windowSoftInputMode的用法
面试题:如何在显示某个Activity时立即弹出软键盘? 答案:在AndroidManifest.xml文件中设置<activity>标签的android:windowSoftInputM ...
- 我的Android进阶之旅------>Android视频录制小例子
============================首先看看官网上关于视频捕捉的介绍================================ Capturing videos Video ...