Servlet

Java类必须符合一定的 规范:

a.必须继承 javax.servlet.http.HttpServlet

b.重写其中的 doGet()或doPost()方法

  • doGet(): 接受 并处 所有get提交方式的请求
  • doPost():接受 并处 所有post提交方式的请求

Servlet要想使用,必须配置

  • Serlvet2.5:web.xml
    • 项目的根目录:WebContent 、src(所有的构建路径)

      <a href="WelcomeServlet">所在的jsp是在 WebContent目录中,因此 发出的请求WelcomeServlet 是去请求项目的根目录。

      例子:

      WebContent中有一个文件index.jsp

      src中有一个Servlet.java

      如果index.jsp中请求 <a href="abc">...</a> ,则寻找范围:既会在src根目录中找,会在WebContent根目录中找

      如果index.jsp中请求<a href="a/abc"></a>,寻找范围:先在src或WebContent中找a目录,然后再在a目录中找abc

  • Servlet3.0:@WebServlet
    • Servlet3.0不需要在web.xml中配置,但需要在 Servlet类的定义处之上编写注解@WebServlet("url-pattern的值")

    • 匹配流程: 请求地址 与@WebServlet中的值进行匹配,如果匹配成功 ,则说明 请求的就是该注解所对应的类

2个/:

  1. jsp服务器根路径  localhost:8888
  2. web.xml项目根路径  http://localhost:8888/项目名/

Servlet流程:

请求 ==> <url-pattern> ==> 根据<servlet-mapping>中的<servlet-name> 去匹配 <servlet> 中的<servlet-name>,然后寻找到<servlet-class>,求中将请求交由该<servlet-class>执行。

纯手工方法创建第一个Servlet

步骤:

  1. 编写一个类,继承HttpServlet
  2. 重写doGet()、doPost()方法
  3. 编写web.xml 中的servlet映射关系

借助于Eclipse快速生成Servlet

直接新建Servlet即可!(继承、重写、web.xml 可以借助Eclipse自动生成)

Servlet生命周期:5个阶段

1、加载

2、初始化: init() ,该方法会在 Servlet被加载并实例化的以后 执行

a、默认第一次访问 Servlet 时会被执行 (只执行这一次)

b、可以修改为 Tomcat 启动时自动执行

i、Servlet2.5:web.xml(其中的“1”代表第一个)

<servlet>
  ...
  <load-on-startup>1</load-on-startup>
</servlet>

ii、Servlet3.0

@WebServlet( value="/WelcomeServlet" ,loadOnStartup=1 )

3、服务:service() ==> doGet() doPost,调用几次,则执行几次

4、销毁:destroy(), Servlet被系统回收时执行,关闭tomcat服务时,执行一次。

5、卸载

Servlet API 

由两个软件包组成

1、对应于HTTP协议的软件包

2、对应于除了HTTP协议以外的其他软件包

即Servlet API可以适用于 任何 通信协议。 我们学习的Servlet,是位于javax.servlet.http包中的类和接口,是基础HTTP协议。

Servlet继承关系

ServletConfig:接口

ServletContext getServletContext():获取Servlet上下文对象 application

getContextPath():相对路径
getRealPath():绝对路径
setAttribute() 、getAttribute()

String getInitParameter(String name):在当前Servlet范围内,获取名为name的参数值(初始化参数)

Servlet 3.0方式 给当前Servlet设置初始值:

@WebServlet( .... , initParams= {@WebInitParam(name="serveltparaname30",value="servletparavalue30") } )

// 注意,此注解只 隶属于某一个具体的Servlet ,因此无法为 整个web容器设置初始化参数 (如果要通过3.0方式设置 web容器的初始化参数,仍然需要在web.xml中设置)

HttpServletRequest中的方法:(同request),例如setAttrite()、getCookies()、getMethod()
HttpServletResponse中的方法:同response

Servlet使用层面:

Eclipse中在src创建一个Servlet,然后重写doGet() doPost()就可以 (doGet() doPost()只需要编写一个)。

转载请注明出处:https://www.cnblogs.com/stu-jyj3621
原文地址:https://www.cnblogs.com/stu-jyj3621/p/14411365.html