servlet

CGI和servlet的区别与联系

前提是你 提交于 2020-03-06 04:43:16
1、CGI(Common GateWay Interface)通用网关接口 通用网关接口,简称CGI,是一种根据请求信息动态产生回应内容的技术。通过CGI,Web 服务器可以将根据请求不同启动不同的外部程序,并将请求内容转发给该程序,在程序执行结束后,将执行结果作为回应返回给客户端。也就是说,对于每个请求,都要产生一个新的进程进行处理。 CGI弊端: 因为每个进程都会占有很多服务器的资源和时间,这就导致服务器无法同时处理很多的并发请求。 CGI衰落: 另外CGI程序都是与操作系统平台相关的,虽然在互联网爆发的初期,CGI为开发互联网应用做出了很大的贡献,但是随着技术的发展,开始逐渐衰落。 但是servlet的功能远比CGI强大的多,现在以CGI方式运行的服务器应该已经没有了 2、servlet 一种服务器端的Java应用程序,现在提起Servlet,指的都是Java Servlet。Java Servlet要求必须运行在Web服务器当中,与Web服务器之间属于分工和互补关系。确切的说,在实际运行的时候Java Servlet与Web服务器会融为一体,如同一个程序一样运行在同一个Java虚拟机(JVM)当中。 Servlet与CGI区别: 与CGI不同的是,Servlet对每个请求都是单独启动一个线程,而不是进程。这种处理方式大幅度地降低了系统里的进程数量,提高了系统的并发处理能力

JavaWeb Filter

Deadly 提交于 2020-03-05 17:12:06
1. 过滤器概述 1.1. 什么是过滤器 Filter 译为过滤器,是 JavaWeb 的三大组件之一,用于在 Servlet 之外对 Request 或者 Response 进行修改。对于 Web 应用程序来说,过滤器是一个驻留在服务器端的 Web 组件,它可以截取客户端和服务器端之间的请求与响应信息。 1.2. 发展历史 由于 Servlet 规范是开放的,借助于公众与开源社区的力量, Servlet 规范越来越科学,功能也越来越强大。 2000 年, Sun 公司在 Servlet2.3 规范中添加了 Filter 功能,并在 Servlet2.4 中对 Filter 进行了细节上的补充。目前主流版本为 Servlet2.5 的 Filter 。 1.3. 运行原理 Servlet 是服务器端用于处理客户端的请求与响应的,而 Filter 就是介于客户端与服务器端拦截客户端的请求或服务器端的响应,并对其修改或过滤。具体实现流程如下: 当客户端向服务器端发送一个请求时,如果有对应的过滤器进行拦截,过滤器可以改变请求的内容、或者重新设置请求协议的相关信息等,然后再将请求发送给服务器端的 Servlet 进行处理。当 Servlet 对客户端做出响应时,过滤器同样可以进行拦截,将响应内容进行修改或者重新设置后,再响应给客户端浏览器。在上述过程中

Spring 梳理 - filter、interceptor、aop实现与区别 -第二篇

情到浓时终转凉″ 提交于 2020-03-05 16:06:30
spring mvc中的Interceptor可以理解为是Spring MVC框架对AOP的一种实现方式。一般简单的功能又是通用的,每个请求都要去处理的,比如判断token是否失效可以使用spring mvc的HanlderInterceptor, 复杂的,比如缓存,需要高度自定义的就用spring aop。一般来说service层更多用spring aop,controller层有必要用到request和response的时候,可以用拦截器。 servlet filter和spring mvc Interceptor区别: 1.拦截器是基于java的反射机制的,而过滤器是基于函数回调。 2.拦截器不依赖与servlet容器,过滤器依赖与servlet容器。 3.拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。 4.拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。 5.在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。 6.拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。 servlet filter和spring mvc Interceptor执行顺序: ===========before doFilter1 ========

spring filter lister servlet

风流意气都作罢 提交于 2020-03-05 14:21:42
https://blog.csdn.net/nacey5201/article/details/8547772 https://blog.csdn.net/xwl617756974/article/details/7451773 springboot 配置 Servlet、Filter、Listener spring 加入了web作用域 <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/webAllbean.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> # 早期版本的web容器(Servlet2.4以前),那么你要使用一个javax.servlet.Filter的实现

013-Servlet初步

烂漫一生 提交于 2020-03-05 13:05:57
目录 概述 快速入门 Servlet生命周期 Servlet3.0 IDEA与tomcat的相关配置 Servlet的体系结构 Servlet相关配置 概述 Servlet: Servlet(Server Applet)是 Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的 服务器 端程序,具有独立于平台和 协议 的特性,主要功能在于交互式地浏览和生成数据,生成动态 Web 内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。 简单理解: 运行在服务器端的小程序; Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则; 将来我们自定义一个类,实现Servlet接口,复写方法来实现接口逻辑。 快速入门 1. 创建JavaEE项目,在idea中创建一个Java EE 项目 2. 任意定义一个类,实现Servlet接口 package cn.itcast.web.servlet; import javax.servlet.*; import java

基于复杂方案OWSAP CsrfGuard的CSRF安全解决方案(适配nginx + DWR)

旧时模样 提交于 2020-03-05 11:15:36
摘要: OWASP是一个开源的、非盈利的全球性安全组织,致力于应用软件的安全研究。提供的CsrfGuard Project是防御CSRF的安全解决方案,但针对我们生产实际运用,在配置上还需要琢磨才能正常使用,比如在DWR框架下,如果采用才能使之有效。比如在nginx分发多servers情况下配置时有哪些需要注意的。 1、什么是CSRF? 已经有很多博文讲解其过程和攻击手段,在此就不重复了。 O(∩_∩)O 不清楚的同学,请自行搜索或按链接去了解: http://blog.csdn.net/Flaght/article/details/3873590 2、CSRFGuard_Project 开源项目 CSRFGuard,介绍了如何使用在 HTTP 请求中加入 token 并验证的方法来抵御 CSRF。 https://www.owasp.org/index.php/Category:OWASP_CSRFGuard_Project 3、检测CSRF方法? OWASP上面有一个叫做CSRFTester的工具,可以构建进行测试。 下载链接: https://www.owasp.org/index.php/CSRFTester 教程指引: http://www.zyiqibook.com/article216.html 4、如何防御CSRF? 我们采用CSRFGuard_Project方案

基于复杂方案OWSAP CsrfGuard的CSRF安全解决方案(适配nginx + DWR)

一笑奈何 提交于 2020-03-05 11:05:52
1、什么是CSRF? 已经有很多博文讲解其过程和攻击手段,在此就不重复了。 O(∩_∩)O 不清楚的同学,请自行搜索或按链接去了解: http://blog.csdn.net/Flaght/article/details/3873590 2、CSRFGuard_Project 开源项目 CSRFGuard,介绍了如何使用在 HTTP 请求中加入 token 并验证的方法来抵御 CSRF。 https://www.owasp.org/index.php/Category:OWASP_CSRFGuard_Project 3、检测CSRF方法? OWASP上面有一个叫做CSRFTester的工具,可以构建进行测试。 下载链接: https://www.owasp.org/index.php/CSRFTester 教程指引: http://www.zyiqibook.com/article216.html 4、如何防御CSRF? 我们采用CSRFGuard_Project方案 JAVA DOM方式。 配置如下: 1)引入csrfguard-3.1.0.jar到你的工程: 2)配置web.xml: <!-- 基于复杂方案OWASP CsrfGuard的CSRF安全过滤 --> <servlet> <servlet-name>JavaScriptServlet</servlet-name>

设计模式课程 设计模式精讲 25-3 责任链模式源码解析

五迷三道 提交于 2020-03-05 07:10:12
1    源码解析 1.1     源码解析1 (Servlet过滤器的应用 ) 1    源码解析 1.1     源码解析1 (Servlet过滤器的应用 ) 重点讲解: 1  filterchain中有很多的filter,filter按照一定的顺序组装成一个链条,可以理解成责任链模式。 2  每次filter 执行dofilter方法的时候,都会调到filterchain,filterchain又会执行下一个filter的dofiltet方法,这样实现了循环调用dofilter方法(见filterchain和filter实现类标红部分)。 Filter: // // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package javax.servlet; import java.io.IOException; public interface Filter { void init(FilterConfig var1) throws ServletException; void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3)

TOMCAT web.xml 整理说明

风流意气都作罢 提交于 2020-03-05 05:37:28
JavaWeb项目中web.xml有关servlet的基本配置: 我们注意到,tomcat下的conf中也有一个web.xml文件,没错的,所有的JavaWeb项目中web.xml都继承自服务器下的web.xml。 看一下这个web.xml: [html] view plain copy <? xml version= "1.0" encoding= "ISO-8859-1" ?> < web-app xmlns= "http://java.sun.com/xml/ns/javaee" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version= "3.0" > < servlet > < servlet-name >default </ servlet-name > < servlet-class >org.apache.catalina.servlets.DefaultServlet </ servlet-class > < init-param > < param-name >debug </ param

Java Web学习之GenericSerlvet

邮差的信 提交于 2020-03-05 01:16:30
一、GenericSerlvet GenericSerlvet是一个 Serlvet。是 Servlet 接口和 ServletConfig 接口的实现类。但是一个抽象类。其中的 service 方法为抽象方法。 如果新建的 Servlet 程序直接继承 GenericSerlvet 会使开发更简洁。 二、具体实现 在 GenericServlet 中声明了一个 SerlvetConfig 类型的成员变量,在 init(ServletConfig) 方法中对其进行了初始化。 利用 servletConfig 成员变量的方法实现了 ServletConfig 接口的方法。 还定义了一个 init() 方法,在 init(SerlvetConfig) 方法中对其进行调用,子类可以直接覆盖 init() ,用来实现对 Servlet 的初始化。 不建议直接覆盖 init(ServletConfig),因为如果忘记编写super.init(config);而还是用了 SerlvetConfig 接口的方法,则会出现空指针异常。 新建的 init(){} 并非 Serlvet 的生命周期方法。而 init(ServletConfig) 才是生命周期相关的方法。 三、源码 public abstract class GenericServlet implements Servlet ,