Servlet & Filter

Servlet

  Java Servlets是运行在web或应用服务器上的程序,在来自web浏览器及其他HTTP客户端的请求和数据库及HTTP服务器上的应用之间起中间件作用。

  使用Servlets,你可以从网页表单获取用户输入,从数据库或其他资源展示数据记录,并动态地创建网页。 (selvlet类似于cgi)

Servlet architecture

Servlet 和 CGI

  CGI stands for Common Gateway Interface (CGI). 例如 cgit就使用了cgi。

  cgi可移植性不如servlet. 一般每次的CGI请求都需要新生成一个程序的副本来运行。

Servlet的优点:

  • Performance is significantly better.
  • Servlets execute within the address space of a Web server. It is not necessary to create a separate process to handle each client request.
  • Servlets are platform-independent because they are written in Java.
  • Java security manager on the server enforces a set of restrictions to protect the resources on a server machine. So servlets are trusted.
  • The full functionality of the Java class libraries is available to a servlet. It can communicate with applets, databases, or other software via the sockets and RMI mechanisms that you have seen already.

Filter

  过滤用户数据是Web应用安全的基础。它是验证数据合法性的过程。通过对所有的输入数据进行过滤,可以避免恶意数据在程序中被误信或误用。大多数Web应用的漏洞都是因为没有对用户输入的数据进行恰当过滤所引起的。

  • 过滤器(filter)与拦截器(interceptor) (以struts2为例)
1、拦截器是基于java的反射机制的,而过滤器是基于函数回调。
2、过滤器依赖与servlet容器,而拦截器不依赖与servlet容器。
3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能。
5、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。

  Interceptors can execute code before and after an Action is invoked. Most of the framework‘s core functionality is implemented as Interceptors. Features like double-submit guards, type conversion, object population, validation, file upload, page preparation, and more, are all implemented with the help of Interceptors. Each and every Interceptor is pluggable, so you can decide exactly which features an Action needs to support.

参考:

  https://www.oschina.net/question/565065_86561

时间: 2024-11-25 12:16:48

Servlet & Filter的相关文章

can not be cast to javax.servlet.Filter等问题的解决方法

问题1:can not be cast to javax.servlet.Filter 一位从测试转开发的同事首次更新代码,并编译在本地启动web项目时,报如下错误: Exception starting filter encodingFilterjava.lang.ClassCastException:com.gaochao.platform.web.context.filter.ContextFilter2 can not be cast to javax.servlet.Filter 根据

javax.servlet.Filter

javax.servlet.Filter 接口 http://docs.oracle.com/javaee/6/api/javax/servlet/Filter.html 接口原型 public interface Filter { public void init(FilterConfig filterConfig) throws ServletException; public void doFilter(ServletRequest request, ServletResponse res

servlet/filter/listener/interceptor区别与联系

由于最近两个月工作比较清闲,个人也比较“上进”,利用工作空余时间,也继续学习了一下,某天突然想起struts2和struts1的区别的时候,发现为什么struts1要用servlet,而struts2要用filter呢?一时又发现,servlet和filter有什么区别呢?于是看了看web.xml,一时又发现,咦,servlet.filter.listener?还有个interceptor?对于这几个概念,本应是初学者就掌握的东东了,可惜本人基础学的不好,只能是现在补课.于是就有了这篇博客. 慢

【转载】Servlet Filter(过滤器)、Filter是如何实现拦截的、Filter开发入门

Servlet Filter(过滤器).Filter是如何实现拦截的.Filter开发入门 Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. Servlet API中提供了一个Filter接口,开发web应用时

How to define Servlet filter order of execution using annotations

If we define Servlet filters in web.xml, then the order of execution of the filters will be the same as the order in which they are defined in the web.xml. But, if we define the filters using annotation, what is the order of execution of filters and

servlet/filter/listener/interceptor区别与联系(转)

由于最近两个月工作比较清闲,个人也比较"上进",利用工作空余时间,也继续学习了一下,某天突然想起struts2和struts1的区别的时候,发现为什么struts1要用servlet,而struts2要用filter呢?一时又发现,servlet和filter有什么区别呢?于是看了看web.xml,一时又发现,咦,servlet.filter.listener?还有个interceptor?对于这几个概念,本应是初学者就掌握的东东了,可惜本人基础学的不好,只能是现在补课.于是就有了这篇

java.lang.IllegalStateException: class utils.filter.ContentFilter is not a javax.servlet.Filter

1.错误描述 2016-01-12 11:27:01.787:WARN:oejuc.AbstractLifeCycle:FAILED ContentFilter: java.lang.IllegalStateException: class utils.filter.ContentFilter is not a javax.servlet.Filter java.lang.IllegalStateException: class utils.filter.ContentFilter is not

Servlet Filter 中init和destroy问题

测试源码如下: 1 package com.FilterTest.Filter; 2 3 import java.io.IOException; 4 5 import javax.servlet.Filter; 6 import javax.servlet.FilterChain; 7 import javax.servlet.FilterConfig; 8 import javax.servlet.ServletException; 9 import javax.servlet.Servlet

cannot be cast to javax.servlet.Filter 报错, 原因servlet-api.jar冲突

使用maven开发web应用程序, 启动的时候报错: jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class 然后输出错误: 严重: Exception starting filter encodingFilter java.lang.ClassCastException: org.springframework.web.filter.CharacterEn

Servlet Filter与Spring interceptor 功能区别

Servlet Filter与Spring interceptor 而且在功能上差不多,都可以针对URL规则来进去处理 多个Servlet Filter的执行顺序 顺序就是filter Mapping的配置的先后顺序,filter的执行顺序就考filter mapping在web.xml中的顺序. 多个spring interceptor的执行顺序 spring interceptor也是这样的执行顺序,不过interceptor多一个配置参数order通过他也可以来实现interceptor的