电路图中blen是什么意思

Struts2(33)
Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做一些业务逻辑判断等。其工作原理是,只要你在web.xml文件配置好要拦截的客户端请求,它都会帮你拦截到请求,此时你就可以对请求或响应(Request、Response)统一设置编码,简化操作;同时还可进行逻辑判断,如用户是否已经登陆、有没有权限访问该页面等等工作。它是随你的web应用启动而启动的,只初始化一次,以后就可以拦截相关请求,只有当你的web应用停止或重新部署的时候才销毁。在web.xml中配置
MyCharsetFilter.java 编码过滤器
package ...;
import ...;
// 主要目的:过滤字符编码;其次,做一些应用逻辑判断等.
// Filter跟web应用一起启动
// 当web应用重新启动或销毁时,Filter也被销毁
public class MyCharsetFilter implements Filter {
private FilterConfig config = null;
public void destroy() {
System.out.println(&MyCharsetFilter准备销毁...&);
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain chain) throws IOException, ServletException {
// 强制类型转换
HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse)arg1;
// 获取web.xm设置的编码集,设置到Request、Response中
//request.setCharacterEncoding(config.getInitParameter(&charset&));
//response.setContentType(config.getInitParameter(&contentType&));
     //response.setCharacterEncoding(config.getInitParameter(&charset&));
// 将请求转发到目的地
chain.doFilter(request, response);
public void init(FilterConfig arg0) throws ServletException {
this.config = arg0;
System.out.println(&MyCharsetFilter初始化...&);
以下是 MyCharsetFilter.java 在web.xml 中配置:
&filter-name&filter&/filter-name&
&filter-class&dc.gz.filters.MyCharsetFilter&/filter-class&
&init-param&
&param-name&charset&/param-name&
&param-value&UTF-8&/param-value&
&/init-param&
&init-param&
&param-name&contentType&/param-name&
&param-value&text/charset=UTF-8&/param-value&
&/init-param&
&filter-mapping&
&filter-name&filter&/filter-name&
&!-- * 代表截获所有的请求
或指定请求/test.do
/xxx.do --&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
现在来说说Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。主要作用是: 做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。他会对特定的事件产生一个处理。监听在很多模式下用到。比如说观察者模式,就是一个监听来的。又比如struts2
可 以用监听来启动。Servlet监听器用于监听一些重要事件的发生,监听器对象可以在事情发生前、发生后可以做一些必要的处理。好比如果说Servlet 的监听器Listene。在web.xml中配置。
MyServletContextListener.java
package dc.gz.
import javax.servlet.ServletC
import javax.servlet.ServletContextE
import javax.servlet.ServletContextL
import mons.dbcp.BasicDataS
* Web应用监听器
public class MyServletContextListener implements ServletContextListener {
// 应用监听器的销毁方法
public void contextDestroyed(ServletContextEvent event) {
ServletContext sc = event.getServletContext();
// 在整个web应用销毁之前调用,将所有应用空间所设置的内容清空
sc.removeAttribute(&dataSource&);
System.out.println(&销毁工作完成...&);
// 应用监听器的初始化方法
public void contextInitialized(ServletContextEvent event) {
// 通过这个事件可以获取整个应用的空间
// 在整个web应用下面启动的时候做一些初始化的内容添加工作
ServletContext sc = event.getServletContext();
// 设置一些基本的内容;比如一些参数或者是一些固定的对象
// 创建DataSource对象,连接池技术 dbcp
BasicDataSource bds = new BasicDataSource();
bds.setDriverClassName(&com.mysql.jdbc.Driver&);
bds.setUrl(&jdbc:mysql://localhost:3306/hibernate&);
bds.setUsername(&root&);
bds.setPassword(&root&);
bds.setMaxActive(10);//最大连接数
bds.setMaxIdle(5);//最大管理数
//bds.setMaxWait(maxWait); 最大等待时间
// 把 DataSource 放入ServletContext空间中,
// 供整个web应用的使用(获取数据库连接)
sc.setAttribute(&dataSource&, bds);
System.out.println(&应用监听器初始化工作完成...&);
System.out.println(&已经创建DataSource...&);
web.xml中配置如下,很简单:
&!-- 配置应用监听器
&listener&
&listener-class&dc.gz.listeners.MyServletContextListener&/listener-class&
&/listener&
拦截器是在面向切面编程中应用的,就是在你的service或者一个方法前调用一个方法,或者在方法后调用。是基于JAVA的反射机制。拦截器在struts.xml中配置,
&PermissionInterceptor权限控制类
public class PermissionInterceptor extends MethodFilterInterceptor {
private static final long serialVersionUID = -9852006L;
/**拦截每一个action请求
* @see com.opensymphony.xwork2.interceptor.MethodFilterInterceptor#doIntercept(com.opensymphony.xwork2.ActionInvocation)
protected String doIntercept(ActionInvocation invocation) throws Exception {
System.out.println(&进入MyMethodInterceptor方法权限拦截器!!!!!!!!!!!!!&);
// 获取当前action的类
// final Class objClass=invocation.getAction().getClass();
// 获取当前用户session
Map&String, Object& session = invocation.getInvocationContext().getSession();
// 从session获取用户等信息
// User user = (User) session.get(&login_&);
// String name=user.getUName();
// 判断当前用户权限,是否可以操作,struts.xml配置的方法,如果有权限就通过
//(Integer) ServletActionContext.getRequest().getSession().getAttribute(&UAuth&)==1
if (Util.isHavePermission()) {
System.out.println(&有权限,并且请求成功&);
// 表示通过验证,可以执行该action
return invocation.invoke();
// Object actionObj=objClass.newInstance();
// objClass.getDeclaredField(&opMsg&).set(actionObj,
// &对不起,您的权限不够,无法进行该操作!&);
// objClass.getDeclaredMethod(&setOpMsg&,
// String.class).invoke(actionObj, &对不起,您的权限不够,无法进行该操作!&);
invocation.getInvocationContext().put(&msg&, &对不起,您的权限不够,无法进行该操作!&);
session.put(&msg&, &对不起,您的权限不够,无法进行该操作!&);
System.out.println(&权限不够被拒绝&);
return &error&;
struts2配置文件:
&!--&/package& --&
&!-- 定义包,名字basePackage,继承struts默认包 --&
&package name=&basePackage& extends=&struts-default&&
&!--struts 拦截器实现 --&
&interceptors&
&!-- 配置权限拦截器 --&
&interceptor name=&permission&
class=&com.xx.interceptor.PermissionInterceptor&&
&!-- 需要拦截的方法 --&
&!-- execludeMethods:该参数指定拦截器拒绝拦截的方法列表,多个方法用“,”隔开(支持通配符*,例如add*,表示所有以add开头的方法),
如果指定了这个参数拦截器不会拦截指定列表中的方法,就是所谓的黑名单
includeMethods: 该参数指定拦截器需要拦截的方法列表,多个方法用“,”隔开(支持通配符*,例如add*,表示所有以add开头的方法),
如果指定了参数,则指定的Action在执行前会被拦截,即白名单。 --&
&param name=&includeMethods&&deleteUser,deleteAccount,deleteRecord&/param&
&!-- 不需要拦截的方法 --&
&param name=&excludeMethods&&query*&/param&
&/interceptor&
&!-- 定义拦截器栈 --&
&interceptor-stack name=&permissionStack&&
&interceptor-ref name=&permission& /&
&interceptor-ref name=&defaultStack& /&
&/interceptor-stack&
&/interceptors&
&!-- 定义默认拦截器 --&
&default-interceptor-ref name=&permissionStack&&&/default-interceptor-ref&
&/package&
4.下面再详谈过滤器、拦截器的区别:
1、拦截器是基于java反射机制的,而过滤器是基于函数回调的。
2、过滤器依赖于servlet容器,而拦截器不依赖于servlet容器。
3、拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。
4、拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。
5、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。
6、过滤器:取你需要的东西,忽视那些不需要的东西!在程序中,你希望选择中一篇文章中的所有数字,你就可以针对性的挑选数字!
7、拦截器:针对你不要的东西进行拦截,比如说,在一个BBS里面你希望人家不要留“小乌鸦”的这个词,那你就可能采用拦截器!
8、过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts2的 action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者&struts2的action前统一设置字符集,或者去除掉一些非法字符
9、拦截器,是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。
10、执行顺序&:过滤前 - 拦截前 - Action处理 - 拦截后 -过滤后。个人认为过滤是一个横向的过程,首先把客户端提交的内容进行过滤(例如未登录用户不能访问内部页面的处理);过滤通过后,拦截器将检查用户提交数据的验证,做一些前期的数据处理,接着把处理后的数据发给对应的Action;Action处理完成返回后,拦截器还可以做其他过程,再向上返回到过滤器的后续操作。
相关文章:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:577212次
积分:6871
积分:6871
排名:第3115名
原创:50篇
转载:759篇
评论:31条
(4)(19)(10)(1)(25)(1)(1)(194)(275)(149)(87)(55)(10)(9)(1)扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
struts2拦截器的作用是什么(它拦截什么)?过滤器的作用是什么呢(过滤什么)?
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
拦截器是对调用的Action起作用,它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行.同时也是提供了一种可以提取action中可重用的部分的方式.过滤器是对整个的请求过程起作用!换句话说就是拦截器没有过滤器的范围广
为您推荐:
扫描下载二维码1011人阅读
面试的时候经常会问到 拦截器和过滤器区别:
1、什么是拦截器?
&&& 是在面向切面编程(AOP)的就是在你的service或者一个方法前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。
2、什么是过滤器
&&&&& 是在web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不是login.do或者login.action的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符.
两者先后顺序 先进行过滤,再拦截,这里面用到的设计模式,拦截器用到了代理模式,过滤器用到了责任链的设计模式,
1、拦截器用到的是java反射机制,过滤器是函数回调。
2、拦截器可以访action上下文, 值栈里的对象而过滤器不能。
3、拦截器对action创建过程有效,过滤器扩展对所有的请求进行过滤比如:过滤非法url
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:39451次
排名:千里之外
原创:35篇
转载:10篇
(1)(1)(4)(3)(1)(4)(6)(3)(4)(3)(4)(4)(9)(1)Struts2拦截器 实现未登录拦截和权限控制 -
- ITeye技术网站
博客分类:
最近在研究struts,把以前做项目时候用拦截器实现的一些功能回想起来跟大家分享一下:
先创建一个拦截器,实现MethodFilterInterceptor这个抽象类,可以进行方法的限制和包含过滤。
该拦截器实现未登录不能进行访问的功能,可以扩展成对权限进行控制。
import java.util.M
import com.opensymphony.xwork2.A
import com.opensymphony.xwork2.ActionI
import com.opensymphony.xwork2.interceptor.AbstractI
public class LogonInterceptor extends AbstractInterceptor {
public String intercept(ActionInvocation arg0) throws Exception {
Map session = arg0.getInvocationContext().getSession();
user =session.get("user");
if (存在该用户) {
return arg0.invoke();
return Action.LOGIN;
然后将这个拦截器配置的struts.xml里面:
&!-- 配置拦截器 --&
&package name="my-default" extends="struts-default"&
&&&& &interceptors&
&&&&&&&& &!-- 配置未登录进行操作的拦截器 --&
&&&&&&&& &interceptor name="loginInterceptor" class="com.struts2.interceptor.LogonInterceptor"&
&&&&&&&&&&&& &param name="param"&测试参数&/param&
&&&&&&&& &/interceptor&
&&&&&&&& &!-- 重新封装一个默认的拦截器栈 --&
&&&&&&&& &interceptor-stack name="myDefaultStack"&
&&&&&&&&&&&&&& &interceptor-ref name="loginInterceptor" /&
&&&&&&&&&&&&&& &interceptor-ref name="defaultStack" /&
&&&&&&&& &/interceptor-stack&
&&&& &/interceptors&
&&&& &!-- 为这个包设置默认的拦截器栈 --&
&&&& &default-interceptor-ref name="myDefaultStack" /&
&&&& &!-- 设置全局的返回值 --&
&&&& &global-results&
&&&&&&&&& &result name="login"&/login.jsp&/result&
&&&& &/global-results&
&action name="login" class="LoginAction" method="load"&
&interceptor-ref name="paramsPrepareParamsStack" /&
&!--result元素设置页面跳转值,其中name值为目标页面的字符串标识,如下,登录失败时回到login.jsp页面,成功时,转向success.jsp页面 --&
&result name="error"&/error.jsp&/result&
&result name="success"&/main.jsp&/result&
&result name="input"&/login.jsp&/result&
&/package&
浏览: 118008 次
来自: 苏州
除了火狐正常外,ie和谷歌下载的文件名称都没有后缀,如何解决
springmvc提供的excel导出还是挺方便的.
不错,很详细
我用的是spring3.0.5也出现这个问题,到底是少了那个j ...
在吗?能帮忙解决一下问题吗?Struts2.0(2)
拦截器和过滤器的区别:
1、拦截器是基于java的反射机制的,而过滤器是基于函数回调
2、过滤器依赖与servlet容器,而拦截器不依赖与servlet容器
3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用
4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能
5、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次
&拦截器 :是在面向切面编程的就是在你的service或者一个方法前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。
下面通过实例来看一下过滤器和拦截器的区别:
使用拦截器进行/admin 目录下jsp页面的过滤
下面是我实现的Interceptor class:&
&过滤器:是在javaweb中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者
struts的action前统一设置字符集,或者去除掉一些非法字符.
使用过滤器进行/admin 目录下jsp页面的过滤,首先在web.xml进行过滤器配置:&
下面是过滤的实现类:&
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:61001次
排名:千里之外
原创:24篇
转载:45篇
(1)(2)(1)(2)(1)(1)(2)(1)(2)(2)(4)(2)(1)(2)(7)(3)(3)(2)(9)(4)(4)(5)(7)(1)

我要回帖

更多关于 电路图 的文章

 

随机推荐