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
	}

}
相关推荐
就叫_这个吧1 天前
IDEA中Javaweb项目创建+servlet,实现简单的信息录入获取
java·servlet·intellij-idea·web
就叫_这个吧1 天前
servlet整合tomcat项目启动报错解决,org.apache.tomcat.util.descriptor.web.WebXml.setVersion
java·servlet·tomcat·apache
江华森1 天前
Jenkins CI/CD 实战博客教程
servlet·ci/cd·jenkins
Volunteer Technology1 天前
SpringSecurity中的权限管理
java·数据库·servlet
摇滚侠2 天前
JavaWeb 全套教程 Listener 112-113
java·开发语言·servlet·tomcat·intellij-idea
我登哥MVP2 天前
Spring Boot 从“会用”到“精通”:自定义参数绑定原理
java·spring boot·后端·spring·servlet·maven·intellij-idea
我登哥MVP2 天前
Spring Boot 从“会用”到“精通”:参数绑定体系全景
java·spring boot·spring·servlet·maven·intellij-idea·mybatis
摇滚侠2 天前
JavaWeb 全套教程 Filter 107-111
java·开发语言·servlet
摇滚侠3 天前
JavaWeb 全套教程 Servlet 75-81
servlet
摇滚侠3 天前
JavaWeb 全套教程 Servlet 66-74
java·servlet·tomcat·intellij-idea·jar