`

servlet 原理

阅读更多

1Servlet过滤器
1.1 什么是过滤器
过滤器是一个程序,它先于与之相关的servletJSP页面运行在服务器上。过滤器可附加到一个或多个servletJSP页面上,并且可以检查进入这些资源的请求信息。在这之后,过滤器可以作如下的选择:
①以常规的方式调用资源(即,调用servletJSP页面)。
②利用修改过的请求信息调用资源。
③调用资源,但在发送响应到客户机前对其进行修改。
④阻止该资源调用,代之以转到其他的资源,返回一个特定的状态代码或生成替换输出。
 
1.2 Servlet过滤器的基本原理
Servlet作为过滤器使用时,它可以对客户的请求进行处理。处理完成后,它会交给下一个过滤器处理,这样,客户的请求在过滤链里逐个处理,直到请求发送到目标为止。例如,某网站里有提交“修改的注册信息”的网页,当用户填写完修改信息并提交后,服务器在进行处理时需要做两项工作:判断客户端的会话是否有效;对提交的数据进行统一编码。这两项工作可以在由两个过滤器组成的过滤链里进行处理。当过滤器处理成功后,把提交的数据发送到最终目标;如果过滤器处理不成功,将把视图派发到指定的错误页面。
2Servlet过滤器开发步骤
开发Servlet过滤器的步骤如下:
①编写实现Filter接口的Servlet类。
②在web.xml中配置Filter
开发一个过滤器需要实现Filter接口,Filter接口定义了以下方法:
destory()由Web容器调用,初始化此Filter
initFilterConfig filterConfig)由Web容器调用,初始化此Filter
doFilterServletRequest request,ServletResponse response,FilterChain chain)具体过滤处理代码。
3.一个过滤器框架实例
SimpleFilter1.java
package com.zj.sample;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
 
public class SimpleFilter1 implements Filter {
    @SuppressWarnings("unused")
    private FilterConfig filterConfig;
 
    public void init(FilterConfig config) throws ServletException {
       this.filterConfig = config;
    }
 
    public void doFilter(ServletRequest request, ServletResponse response,
           FilterChain chain) {
       try {
           System.out.println("Within SimpleFilter1:Filtering the Request...");
           chain.doFilter(request, response);// 把处理发送到下一个过滤器
           System.out .println("Within SimpleFilter1:Filtering the Response...");
       catch (IOException ioe) {
           ioe.printStackTrace();
       catch (ServletException se) {
           se.printStackTrace();
       }
    }
 
    public void destroy() {
       this.filterConfig = null;
    }
}
 
SimpleFilter2.java
package com.zj.sample;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
 
public class SimpleFilter2 implements Filter {
    @SuppressWarnings("unused")
    private FilterConfig filterConfig;
 
    public void init(FilterConfig config) throws ServletException {
       this.filterConfig = config;
    }
 
    public void doFilter(ServletRequest request, ServletResponse response,
           FilterChain chain) {
       try {
           System.out.println("Within SimpleFilter2:Filtering the Request...");
           chain.doFilter(request, response); // 把处理发送到下一个过滤器
           System.out.println("Within SimpleFilter2:Filtering the Response...");
       catch (IOException ioe) {
           ioe.printStackTrace();
       catch (ServletException se) {
           se.printStackTrace();
       }
    }
 
    public void destroy() {
       this.filterConfig = null;
    }
}
 
web.xml
<filter>
    <filter-name>filter1</filter-name>
    <filter-class>com.zj.sample.SimpleFilter1</filter-class>
</filter>
<filter-mapping>
    <filter-name>filter1</filter-name>
    <url-pattern>/*</url-pattern>//为所有的访问做过滤
</filter-mapping>
 
<filter>
    <filter-name>filter2</filter-name>
    <filter-class>com.zj.sample.SimpleFilter2</filter-class>
</filter>
<filter-mapping>
    <filter-name>filter2</filter-name>
    <url-pattern>/*</url-pattern>//为所有的访问做过滤
</filter-mapping>
 
打开web容器中任意页面输出结果:(注意过滤器执行的请求/响应顺序)
Within SimpleFilter1:Filtering the Request...
Within SimpleFilter2:Filtering the Request...
Within SimpleFilter2:Filtering the Response...
Within SimpleFilter1:Filtering the Response...
4.报告过滤器
我们来试验一个简单的过滤器,只要调用相关的servletJSP页面,它就打印一条消息到标准输出。为实现此功能,在doFilter方法中执行过滤行为。每当调用与这个过滤器相关的servletJSP页面时,doFilter方法就生成一个打印输出,此输出列出请求主机和调用的URL。因为getRequestURL方法位于HttpServletRequest而不是ServletRequest
分享到:
评论

相关推荐

    servlet原理

    本篇文章将深入探讨Servlet的原理,包括其生命周期、执行流程以及如何在实际开发中使用。 首先,我们来了解Servlet的生命周期。Servlet的生命周期分为三个主要阶段:初始化、服务和销毁。在初始化阶段,Servlet容器...

    servlet原理的概述

    ### servlet原理的概述 在深入探讨servlet的原理之前,我们先来定义一下servlet是什么。Servlet是一种服务器端的Java应用程序,它运行在容器(如Tomcat)内,用于处理客户端请求并生成动态响应。Servlet可以被视为...

    servlet原理和实践

    本章节将深入探讨Servlet的原理和实践,帮助你理解如何在实际项目中运用这项技术。 1. **C/S与B/S架构** C/S(Client/Server)架构是一种传统的两层架构,客户端直接与服务器通信。而B/S(Browser/Server)架构,...

    java视屏\5.WEB SERVER\6.Servlet原理.mp4

    java视屏\5.WEB SERVER\6.Servlet原理.mp4

    Servlet运行原理图

    Servlet运行原理图,描述servlet运行的步骤方向和servlet运行过程

    servlet运行原理及生命周期.pdf

    ### Servlet 运行原理及生命周期详解 #### 一、Servlet简介 Servlet 是 Java Web 开发中的一个重要组成部分,它主要用于处理客户端发送至服务器端的 HTTP 请求,并返回相应的响应结果。Servlet 技术允许开发者以 ...

    servlet工作原理

    ### Servlet工作原理详解 #### 一、Servlet简介与工作流程 Servlet是一种服务器端的Java应用程序,主要用于接收客户端发送的HTTP请求,并返回响应结果。Servlet在Java Web开发中扮演着核心角色,它负责处理用户...

    Servlet原理大大大大大大大大大大大大大大大大大大大

    在深入理解Servlet的原理之前,我们先明确一下Servlet的基本概念。Servlet是一个Java类,遵循Servlet API规范,由Web服务器加载并执行,用于扩展服务器的功能,特别是处理客户端的HTTP请求。在本篇文章中,我们将...

    jsp+servlet原理入门

    JSP (JavaServer Pages) 和 Servlet 是 Java EE (Java Platform, Enterprise Edition) 中用于开发动态Web应用的两种技术。它们可以用于创建动态网站内容,将业务逻辑和HTML页面分离,便于维护和开发。JSP是一种基于...

    servlet工作原理讲解

    详细讲解servlet的机制及使用方法,其中有非常容易理解的实例和图解,推荐。

    Servlet 工作原理解析

    Servlet 工作原理解析

    SERVLET基本原理

    SERVLET 基本原理 SERVLET 基本原理是指 SERVLET 的装载、初始化、服务和销毁等过程。SERVLET 是一种小型的 Java 程序,可以在 Web 服务器中运行,提供动态网页服务。 SERVLET 生命周期是指 SERVLET 从创建到销毁...

    jsp+servlet小项目(实现图片上传功能)

    2. Servlet原理:Servlet是Java编程语言中处理HTTP请求的服务器端组件。它们接收来自客户端的请求,处理数据,然后返回响应。在图片上传功能中,Servlet将处理文件的接收、验证和存储。 3. 图片上传流程: - 用户...

    servlet容器工作原理

    ### Servlet容器工作原理 #### 一、概述 Servlet容器,如Tomcat,是Java Web应用的基础组成部分之一。本文旨在深入探讨Tomcat中的Servlet容器工作原理,重点解释Servlet容器如何加载和管理Servlet,以及如何处理...

Global site tag (gtag.js) - Google Analytics