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
	}

}
相关推荐
像污秽一样17 小时前
基于Servlet实现MVC
servlet·mvc
爬山算法2 天前
Tomcat(6) 什么是Servlet容器?
java·servlet·tomcat
小菜日记^_^3 天前
增删改查基础项目总结
java·数据库·spring boot·后端·spring·servlet·tomcat
ajsbxi5 天前
苍穹外卖学习记录
java·笔记·后端·学习·nginx·spring·servlet
记录成长java5 天前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet
长安初雪5 天前
Request 和 Response 万字详解
计算机网络·servlet
A-bodgie5 天前
Spring 中的 Environment 对象
java·后端·spring·servlet·springboot
笔墨登场说说6 天前
JDK 里面的线程池和Tomcat线程池的区别
java·servlet·tomcat
听潮阁7 天前
【SpringCloud详细教程】-01-一文了解微服务
开发语言·spring boot·spring cloud·servlet·java-ee·mybatis
阑梦清川7 天前
JavaEE初阶-----servlet-api,Maven创建项目,部署,打包,测试全过程
servlet·java-ee·maven