Servlet

作者: 橙味菌 | 来源:发表于2019-10-04 19:37 被阅读0次

Servlet

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用于交互式地浏览和生成数据,生成动态Web内容。

进化史

  1. 实现Servlet接口必须实现所有方法

  2. GenericServlet抽象类:只需重写需要的方法

  3. HttpServlet继承自GenericServlet类,将ServletRequst和ServletResponse对象分别转换程HttpServletRequest和HttpServletResponse

  4. JSP 不需要编译的Servlet

    • EL表达式轻松访问应用程序对象
    • JSTL标签库在EL的基础上进一步解决了遍历Map,集合,条件测试,XML处理,数据库操作访问等操作的问题
    • Filter拦截Request请求
  5. Spring MVC
    Servlet动态加载可以在不重启web应用前提下添加新的web对象
    实现依赖注入方法

    Module模型:JavaBeans

    View视图:JSP页面

    Controller控制器:Servlet

请求响应流程

HTTP请求响应流程
  1. Web服务器将Http请求传给Servlet容器
  2. Servlet容器
    1. 根据请求链接创建Servlet(init()))
    2. 创建ServletRequest封装请求,同时创建ServletResponse封装响应
      1. 调用Web应用定 义的过滤器链(递归调用),链尾会调用Servlet
    3. 调用Servlet处理请求(service(ServletRequest,ServletResponse))
  3. Servlet处理请求,结束Web过滤器链的递归调用
  4. Servlet容器根据ServletResponse中生成HTTP响应,并传给Web服务器

web服务器

即HTTP服务器,仅能响应静态html页面请求,单向连接于Servlet容器以响应动态资源

Apache

  • 当今(2019.6.20)世界上最流行的Web服务器,可以处理浏览器的HTTP请求,默认端口为80
  • Apache只支持HTML等静态普通网页,可以单向连通Tomcat(Apache可以访问Tomcat的资源,反之不然)

Servlet容器

Servlet容器是Web服务器的一部分

  • 为Servlet提供运行环境,通过XML文件配置Servlet,加载、实例化、调用和回收Servlet

  • 单个Web项目会被Servlet容器封装成ServletContext

Web应用ServletContext

  • 获取
    getServletContext

  • 提供全局域
    get/set/removeAttribute 全局属性键值对

  • 获取全局配置
    getInitParameter 读取全局参数(需在web.xml中配置<context-param>)

  • 获取工程目录下的资源文件
    getRealPath 目录绝对路径
    getResourceAsStream 获取资源的输入流

  • 监听Web启动和终止

    ​ Servlet容器启动或终止Web应用(Context)时,触发事件ServletContextEvent,调用ServletContextListener接口

    contextInitialized 此方法在Filter初始化前调用
    contextDestoryed 此方法在所有Servlet和Filter销毁后调用

    1. 重写ServletContextListener接口
    2. 在web.xml配置 <listener><listener-class>重写类/>/>

Servlet过滤器Filter

​ Web服务器不会直接调用指定web资源(Servlet)的service方法前后,而是通过调用FilterChain的doFilter方法调用对应Servlet的service方法

FilterChain.doFilter(ServletRequest req,ServletResponse resp,FilterChain chain):

  • 如果链中有下一个Filter,调用其doFilter(req,resp,chain)方法
  • 否则,调用指定Servlet的service(req,resp)方法

自定义Filter.doFilter(ServletRequest req,ServletResponse resp,FilterChain chain):

  • 通过调用chain.doFilter(req,resp,chain)实现递归调用整个链中所有Filter的过滤方法并最终调用Servlet的service(req,resp)方法

常用过滤器

详情参考博客园文章《Tomcat常用的过滤器》

作用 过滤器
控制跨域请求的访问权限 CorsFilter
防止跨站请求伪造(Cross-site request forgery) CsrfPreventionFilter
防止参数丢失 FailedRequestFilter
获取客户端IP RemoteAddrFilter
获取客户端主机 RemoteHostFilter
获取原始客户端IP RemoteIpFilter
设置字符编码 SetCharacterEncodingFilter

相关文章

  • servlet 笔记

    servlet servlet 声明周期 Servlet 的线程安全 Servlet 获取配置信息 Servlet...

  • Servlet

    Servlet介绍 Servlet开发步骤 创建Servlet 配置Servlet 配置Servlet中设置初始化...

  • 深入理解Servlet技术

    1. 什么是servlet servlet Servlet是javax.servlet.Servlet包中定义的一...

  • Servlet与Jsp(1)

    Servlet 实现原理Servlet接口使Servlet容器能将Servlet类载入内存,并在Servlet实例...

  • web.xml不同版本之间头信息的区别

    一、Servlet 2.3 二、Servlet 2.4 三、Servlet 2.5 四、Servlet 3.0 五...

  • Servlet入门

    Servlet简介 Servlet(Servlet Applet)是Java Servlet的简称,称为小服务程序...

  • Servlet 实例

    Servlet 实例 Servlet 是服务 HTTP 请求并实现 javax.servlet.Servlet 接...

  • Java Servlet API

    Servlet 支持的版本 Servlet 3.0 新特性详解 Servlet 3.0 新特性概述Servlet ...

  • 简单认识Servlet

    Servlet与JSP的关系 初识Servlet Servlet层级关系 顶层Servlet接口 GenericS...

  • 2019-10-14 SpringMVC与Servlet接口 S

    SpringMVC与Servlet接口 Servlet接口规范 Servlet 接口 定义servlet接口规范i...

网友评论

      本文标题:Servlet

      本文链接:https://www.haomeiwen.com/subject/jayspctx.html