Servlet与过滤器

目录

Servlet

过滤器


Servlet

Servlet做了什么

本身不做任何业务处理,只是接收请求并决定调用哪个JavaBean去处理请求,确定用哪个页面来显示处理返回的数据

Servlet是什么

Server+Applet,是一种服务器端的Java应用程序

只有当一个服务器端的程序使用了Servlet API的时候,这个服务端的程序才能称之为Servlet

如何创建Servlet

  • 实现Servlet接口
  • 继承GenericServlet类
  • 继承HttpServlet类

Servlet生命周期

  • 加载和实例化
  • 初始化
  • 处理请求
  • 销毁

|----------|--------------------|------------------------------------------------------------|
| 生命周期 | 谁来做 | 何时做 |
| 实例化 | Servlet 容器 | Servlet容器启动或者容器检测到客户端请求时 |
| 初始化 | Servlet 容器 | 实例化后,容器调用Servletinit()初始化对象 |
| 处理请求 | Servlet 容器 | 得到客户端请求并做出处理时 |
| 销毁 | Servlet 容器 | **当程序中的
Servlet
对象不再使用的时候, 或者Web**服务器停止运行的时候
|


过滤器

  • 是向Web应用程序的请求和响应添加功能的Web服务组件
  • 过滤器可以统一地集中处理请求和响应
  • 使用过滤器技术实现对请求数据的过滤

过滤器工作方式

过滤的使用步骤

  • 建立实现javax.servlet.Filter接口的类,实现过滤行为
  • 在web.xml中配置过滤器

过滤器的生命周期

  • 实例化
  • 初始化:init()
  • 过滤:doFilter()
  • 销毁:destroy()

过滤器链

多个过滤器会形成过滤器链。

配置Filter的拦截路径有2种方式,一种是注解,一种是xml方式。

xml方式

xml方式与Servlet使用xml配置方式一样,如下所示:

XML 复制代码
    <filter>
        <filter-name>myFilter</filter-name>
        <filter-class>com.clucky.filter.MyFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>myFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

注解

@WebFilter("/*")

如:

过滤乱码:

java 复制代码
package com.hz.filter;

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;
import javax.servlet.annotation.WebFilter;

/**
 * Servlet Filter implementation class CharEncodingFilter
 */
@WebFilter("/*")
public class CharEncodingFilter implements Filter {


	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		
		request.setCharacterEncoding("utf-8");//过滤乱码
		
		chain.doFilter(request, response);
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
	}

}
相关推荐
所愿ღ3 天前
JavaWeb-Servlet基础
笔记·servlet
clever1013 天前
在ubuntu系统上离线安装jenkins的做法
ubuntu·servlet·jenkins
鱼鱼说测试4 天前
Jenkins+Python自动化持续集成详细教程
开发语言·servlet·php
别来无恙1497 天前
JavaWeb核心:HttpServletRequest与HttpServletResponse详解
java·前端·servlet
典学长编程8 天前
JavaWeb从入门到精通!第二天!(Servlet)
数据仓库·servlet·javaweb
Elieal13 天前
深入浅出:Ajax 与 Servlet 实现前后端数据交互
前端·ajax·servlet
snow@li15 天前
VSCode:基础使用 / 使用积累
java·servlet·jar
W.KN17 天前
Servlet 学习笔记
笔记·学习·servlet
22:30Plane-Moon18 天前
Servlet作用域,监听器,JSP九大内置对象
java·开发语言·servlet
Resean022318 天前
SpringMVC 6+源码分析(二)DispatcherServlet实例化流程 1
java·spring boot·spring·servlet·springmvc