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

Servlet与过滤器

作者头像
xiaozhangStu
发布2023-05-04 19:21:42
2370
发布2023-05-04 19:21:42
举报
文章被收录于专栏:xiaozhangStuxiaozhangStu

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
复制
<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
复制
<servlet>
    ……
<init-param>
<param-name>charSetContent</param-name>
<param-value>utf-8</param-value>
</init-param>  
</servlet>
​
读取
代码语言:javascript
复制
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
复制
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
复制
<filter>
<init-param>
    <param-name>Encoding</param-name>
    <param-value>UTF-8</param-value>
  </init-param>
</filter>
读取
代码语言:javascript
复制
init(FilterConfig fConfig)  {
    String encoding=fConfig.getInitParameter("Encoding");
}
新知识点

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

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

代码语言:javascript
复制
<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
                • 过滤器
                  • 简述以及作用
                    • 过滤器的使用步骤
                      • 过滤器的生命周期
                        • 初始化参数
                          • 配置
                          • 读取
                        • 新知识点
                        相关产品与服务
                        容器服务
                        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档