前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Servlet与过滤器

Servlet与过滤器

作者头像
xiaozhangStu
发布2023-05-04 19:21:42
发布2023-05-04 19:21:42
26400
代码可运行
举报
文章被收录于专栏:xiaozhangStuxiaozhangStu
运行总次数:0
代码可运行

Servlet与过滤器

Servlet

Server+Applet,是一种服务器端的Java应用程序 只有当一个服务器端的程序使用了Servlet API的时候,这个服务端的程序才能称之为Servlet

jsp从莫种意义上来说也是一个servlet

创建Servlet

继承HttpServlet类

Servlet中主要方法以及对象

  1. init():Servlet的初始化方法,仅仅会执行一次
  2. service():处理请求和生成响应
  3. destroy():在服务器停止并且程序中的Servlet对象不再使用的时候调用,只执行一次
ServletRequest

封装客户的请求信息 作用相当于JSP内置对象request

ServletResponse

创建响应信息,将处理结果返回给客户端 作用相当于JSP内置对象response

ServletConfig

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

Servlet生命周期

生命周期

谁来做

何时做

实例化

Servlet 容器

当Servlet容器启动或者容器检测到客户端请求时

初始化

Servlet 容器

实例化后,容器调用Servlet的init()初始化对象

处理请求

Servlet 容器

得到客户端请求并做出处理时

销毁

Servlet 容器

当程序中的Servlet对象不再使用的时候, 或者Web服务器停止运行的时候

部署运行Servlet

  1. 修改web.xml(部署描述文件)
  2. 添加<servlet>:把Servlet内部名映射到一个Servlet类名
  3. 添加<servlet-mapping>:把用户访问的URL映射到Servlet的内部名 <servlet-mapping>与<servlet>中的<servlet-name>必须一致
  4. 通过URL访问Servlet
配置
代码语言:javascript
代码运行次数:0
运行
复制
<servlet>
    <servlet-name>myServlet3</servlet-name>
    <servlet-class>demo.web.servlet.MyServlet3</servlet-class>
</servlet>
​
Servlet名称唯一
Servlet类所在路径
​
<servlet-mapping>
    <servlet-name>myServlet3</servlet-name>
    <url-pattern>/myServlet3</url-pattern>
</servlet-mapping>
​
与<servlet>的<servlet-name>设置相同
访问Servlet的URL
初始化参数设置
配置<init-param>元素
代码语言:javascript
代码运行次数:0
运行
复制
<servlet>
    ……
<init-param>
<param-name>charSetContent</param-name>
<param-value>utf-8</param-value>
</init-param>  
</servlet>
​
读取
代码语言:javascript
代码运行次数:0
运行
复制
public void init(ServletConfig config) throws ServletException {
    String initParam=config.getInitParameter("charSetContent");
    System.out.println(initParam);
}

相关对象方法

HttpServletRequest

getParameter() getRequestDispatcher()

HttpServletResponse

sendRedirect()

HttpSession

request.getSession()

过滤器

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

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

代码语言:javascript
代码运行次数:0
运行
复制
doFilter(...)  {
//过滤请求
chain.doFilter(request, response); //调用下一个过滤器或Web资源
//过滤响应
}
​
​
<filter>
    <filter-name>过滤器名</filter-name>
    <filter-class>过滤器的完全限定名</filter-class>
</filter>
<filter-mapping>
    <filter-name>过滤器名</filter-name>
    <url-pattern>过滤器映射的Web资源</url-pattern>
</filter-mapping>
​
过滤器的生命周期
  1. 实例化
  2. 初始化:init()
  3. 过滤:doFilter()
  4. 销毁:destroy()
初始化参数
配置
代码语言:javascript
代码运行次数:0
运行
复制
<filter>
<init-param>
    <param-name>Encoding</param-name>
    <param-value>UTF-8</param-value>
  </init-param>
</filter>
读取
代码语言:javascript
代码运行次数:0
运行
复制
init(FilterConfig fConfig)  {
    String encoding=fConfig.getInitParameter("Encoding");
}
新知识点

在servlet-2.3中,Filter会过滤一切请求,包括服务器内部使用forward转发请求和<%@ includefile="/index.jsp"%>的情况。 到了servlet-2.4中Filter默认下只拦截外部提交的请求

在,想过滤其他请求就要这样写

代码语言:javascript
代码运行次数:0
运行
复制
<filter>
<filter-name>TestFilter</filtername>
<filter-class>anni.TestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>TestFilter</filtername>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>EXCEPTION</dispatcher>
</filter-mapping>

如果是注解就要这样写

@WebFilter(urlPatterns = {"/WEB-INF/*"},dispatcherTypes={DispatcherType.ASYNC,DispatcherType.ERROR,DispatcherType.FORWARD,DispatcherType.INCLUDE,DispatcherType.REQUEST,} )servlet2.3还是2.4大概以tomcat8.5为界限

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Servlet与过滤器
  • Servlet
  • 创建Servlet
  • Servlet中主要方法以及对象
    • ServletRequest
    • ServletResponse
    • ServletConfig
  • Servlet生命周期
  • 部署运行Servlet
    • 配置
    • 初始化参数设置
      • 配置<init-param>元素
      • 读取
  • 相关对象方法
    • HttpServletRequest
    • HttpServletResponse
    • HttpSession
  • 过滤器
    • 简述以及作用
    • 过滤器的使用步骤
    • 过滤器的生命周期
    • 初始化参数
      • 配置
      • 读取
    • 新知识点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档