Javaweb 8Servlet与过滤器

目录

Servlet与过滤器

Servlet概述

Servlet API

第一个Servlet

Servlet生命周期

部署运行Servlet

Servlet配置

过滤器

过滤器的生命周期

过滤器链

过滤器的应用场合


Servlet与过滤器

Servlet概述

JSP其实是一种负责显示的技术,如何只专注显示呢?

解决方案:将显示与接受请求、处理请求的工作分开

JSP

显示数据

Servlet

接受请求,调用JavaBean去处理请求

JavaBean

封装数据

业务逻辑

Servlet做了什么?

本身不做任何业务处理

只是接收请求并决定调用哪个JavaBean去处理请求

确定用哪个页面来显示处理返回的数据

Servlet是什么?

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

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

Servlet API

主要Servlet API介绍

javax.servlet.Servlet接口

所有Java Servlet的基础接口类,规定了必须由Servlet具体类实现的方法集

javax.servlet.GenericServlet类

是Servlet的通用版本,是一种与协议无关的Servlet

javax.servlet.http.HttpServlet类

在GenericServlet基础上扩展的基于Http协议的Servlet

如何创建Servlet

实现Servlet接口

继承GenericServlet类

继承HttpServlet类

第一个Servlet

Servlet中主要方法

init():Servlet的初始化方法,仅仅会执行一次

service():处理请求和生成响应

destroy():在服务器停止并且程序中的Servlet对象不再使用的时候调用,只执行一次

ServletRequest

封装客户的请求信息

作用相当于JSP内置对象request

ServletResponse

创建响应信息,将处理结果返回给客户端

作用相当于JSP内置对象response

ServletConfig

包含了Servlet的初始化参数信息

Servlet生命周期

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

部署运行Servlet

修改web.xml(部署描述文件)

添加<servlet>:把Servlet内部名映射到一个Servlet类名

添加<servlet-mapping>:把用户访问的URL映射到Servlet的内部名

注意:<servlet-mapping>与<servlet>中的<servlet-name>必须一致

通过URL访问Servlet

Servlet配置

配置<servlet>元素
<servlet>
    <servlet-name>myServlet3</servlet-name>     //Servlet名称唯一
    <servlet-class>demo.web.servlet.MyServlet3</servlet-class> //Servlet类所在路径
</servlet>
配置<servlet-mapping>元素
<servlet-mapping>
    <servlet-name>myServlet3</servlet-name> //与<servlet>的<servlet-name>设置相同
    <url-pattern>/myServlet3</url-pattern>  //访问Servlet的URL,相对于Web应用的路径,有三种配置方式
</servlet-mapping>

初始化参数设置

配置<init-param>元素
<servlet>
    ……
        <init-param>
            <param-name>charSetContent</param-name> //参数名称
            <param-value>utf-8</param-value> //参数值
        </init-param>  
</servlet>
​
    public void init(ServletConfig config) throws ServletException {
    String initParam=config.getInitParameter("charSetContent"); //通过ServletConfig对象读取初始化参数
    System.out.println(initParam);
}

Servlet的作用:

负责接收请求,调用相应Service方法,决定如何响应,本身不做业务逻辑

创建和部署Servlet(重点):

创建:继承自HttpServlet

部署:修改web.xml添加<servlet>、<servlet-mapping>

Servlet的好处:

专人专职:JSP负责显示,Servlet负责控制

学习方法:

基于了解Servlet生命周期的基础,参照本次课新闻添加功能的实现,查询帮助文档独立实现新闻修改、删除等功能

过滤器

是向Web应用程序的请求和响应添加功能的Web服务组件

过滤器可以统一地集中处理请求和响应

使用过滤器技术实现对请求数据的过滤

过滤器的使用步骤

建立实现javax.servlet.Filter接口的类,实现过滤行为

doFilter(...)  {
//过滤请求
chain.doFilter(request, response); //调用下一个过滤器或Web资源
//过滤响应
}

在web.xml中配置过滤器
<filter>
    <filter-name>过滤器名</filter-name>
    <filter-class>过滤器的完全限定名</filter-class>
</filter>
<filter-mapping>
    <filter-name>过滤器名</filter-name>
    <url-pattern>过滤器映射的Web资源</url-pattern>
</filter-mapping>

过滤器的生命周期

实例化

初始化:init()

过滤:doFilter()

销毁:destroy()

配置过滤器的初始化参数

配置<init-param>元素
<filter>
<init-param>
    <param-name>Encoding</param-name> //参数名称
    <param-value>UTF-8</param-value> //参数值
  </init-param>
</filter>

读取过滤器的初始化参数

init(FilterConfig fConfig)  {
    String encoding=fConfig.getInitParameter("Encoding"); //通过FilterConfig对象读取初始化参数
}

过滤器链

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

过滤器的应用场合

对请求和响应进行统一处理

对请求进行日志记录和审核

对数据进行屏蔽和替换

对数据进行加密和解密

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值