架构师基础篇--Java Web之servlet

文章目录

  • Servlet
    • Servelet是什么
    • 实现Servlet的方式
      • 实现Servlet三种方式:
      • 浏览器访问Servlet
    • Servlet声明周期
    • Servlet 的注意点
      • Servlet线程安全
      • 让服务器启动时就创建Servlet
      • `

Servlet

Servelet是什么

Servlet 是java web 的三大组件之一,它属于动态资源。Servlet的作用是处理请i去,接收到的请求交给Servlet来处理,在Servlet种通常需要:

  • 接收请求数据
  • 处理请求
  • 完成响应

实现Servlet的方式

实现Servlet三种方式:

  • 实现javax.servlet.Servlet接口
  • 实现javax.servlet.GenericServlet
  • 实现avax.servlet.http.HttpServlet
    架构师基础篇--Java Web之servlet_第1张图片

浏览器访问Servlet

浏览器访问Servlet
1, 给Servlet 指定一个路径!(让Servelet和一个路径绑定)
2. 浏览器访问Servlet路径

在web.xml中进行配置

    <servlet>
        <servlet-name>AServlet</servlet-name>
        <servlet-class>cn.michael.web.AServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>AServlet</servlet-name>
        <url-pattern>/AServlet</url-pattern>
    </servlet-mapping>

Servlet声明周期

生命周期方法:

  • void init(ServletConfig): 类初始化
  • void service(): 处理请求时调用
  • void destroy: 销毁对象

特性:

  • 单例
  • 线程不安全
  • Servletl类我们实现,服务器创建,服务器调用相应的方法。

Servlet 的注意点

Servlet线程安全

  • 不要再Servlet中创建成员,只使用局部变量
  • 可以创建无状态成员
  • 可以创建有状态成员,但状态必须为只读的

让服务器启动时就创建Servlet

默认情况下,服务器再某个Servlet第一次收到求情时创建它。也可以再web.xml中对Servelt进行配置,是夫妻启动时就创建Servlet

    <servlet>
        <servlet-name>CServlet</servlet-name>
        <servlet-class>cn.michael.web.CServlet</servlet-class>
        //0表示多个时的启动顺序,数字越小越早启动,数字必须时非负的
        <load-on-startup>0</load-on-startup>
    </servlet>

>

< url-pattern>是的子元素,用来指定Servlet的访问路径,即URL。必须是一“/”开头
1) 可以在servlet-mapping中指定多个url-pattern

    <servlet-mapping>
        <servlet-name>CServlet</servlet-name>
        <url-pattern>/CServlet</url-pattern>
        <url-pattern>/EServlet</url-pattern>
    </servlet-mapping>
  1. 还可以在url-pattern 中使用通配符“”,型号可以匹配任何URL 前缀或者后缀,使用通配符可以命名一个Servlet绑定一组URL.
    通配符要么是前缀,要么是后缀,不能出现在URL 中间位置,也不能只有通配符. URL 中最多出现一个通配符
    例如: /
    .do

web.xml

在$(CATALINA_HOME)\conf\web.xml的内容,详单与想到每个项目的web.xml中,它是所有的web.xml的父文件。
tomcat中的web.xml 所有的Servlet都不能处理请求路径,最后就要用到default Servlet,这时候就会出现404的错误。

    <!-- The mapping for the default servlet -->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

ServletContext(*****)

一个项目只有一个ServletContext对象
可以在多个Servlet中获取这个唯一的对象,使用它可以给多个Servlet传递数据。

这个对象在Tomcat启动时创建,在Tomcat关闭时才销毁。

  • 获取ServletContext
  • ServletConfig#getServletContext()
  • GenericServlet# getServletContext()
  • HttpSessio#getServletContext()
  • servletContextEvent#getServletContext()

域对象功能

简单理解:用来在多个Servlet中传递 数据
Java Web四大域对象之一
PageContext, ServletRequest, HttpSession, ServletContext
所有域对象都有存取数据功能,域对象内部有一个Map。

获取资源

类路径对一个java web项目而言,就是/WEB-INF/classes和/WEB-INF/lib

可以使用下面的语句来获取class下的a.txt

		// "/"指的时相对于classes的位置
        InputStream input = this.getClass().getClassLoader().getResourceAsStream("/a.txt");

最后的总结

关于Servlet的所有东西,可以总结成为一个程序。这里把所有Servlet相关的内容都有。
反射,重定向,以及对HttpServlet#service方法的重写以及封装
github仓库地址:[email protected]:Michael-D-Sun/BaseServlet.git

你可能感兴趣的:(Architecture)