【我的javaEE学习】Servlet笔记简单小结

一、Servlet概述

1、什么是Servlet

      Servlet是一个运行在服务器端的Java小程序,通过HTTP协议用于接收来自客户端请求,并发出响应。

2、Servlet中的方法

       public void service(ServletRequest req,ServletResponse res) throws ServletException,java.io.IOException

 

       ServletRequest req:代表着请求对象,该对象中有HTTP协议的请求部分的所有内容。它的实现类由服务器提供的,封装数据也是服务器来做的。

       ServletResponse res:代表着响应对象,该对象中由我们写数据(HTTP协议的响应部分)进去。它的实现类也是由服务器提供的。

       service:由服务器调用,每次请求都会调用一次。服务器采用的是多线程机制。

二、Servlet的执行过程

 

三、Servlet的编写方式

实现javax.servlet.Servlet的接口或者继承javax.servlet.GenericServlet或者继承javax.servlet.http.HttpServlet类

1、javax.servlet.GenericServlet:通用的Servlet实现,抽象类 

2、javax.servlet.http.HttpServlet:与HTTP协议有关的,抽象类。

      注意:HttpServlet是继承GenericServlet的,不要覆盖service方法,需要覆盖doGet或doPost方法。 

 

   如果代码里没有doGet方法的话,服务器访问servlet是调用service方法,其实是调用httpservlet里的Service方法,最后是http里面的doGet方法。

     Httpservlet(HttpServletRequest、HttpServletResponse)继承GenericServlet(ServletRequest、ServletRespone)

     GenericServlet继承Servlet(接口)

3、Servlet规范中的核心接口类图

 

4、映射文件web.xml

   <servlert>

        <servlert-name>Servlet名字</servlert-name>

        <servlert-class>Servlet所属类</servlert-class>

   </servlet>

   <servlert-mapping>

        <servlert-name>Servlet名字</servlert-name>

        <url-pattern>Servlet访问路径</url-pattern>

   </servlet-mapping>

 

四、Servlet的生命周期

1、Servlet对象的生命周期

      ●诞生:用户第一次访问时,由容器创建他的实例。Init(Servlet ServlertConfig)

      ●活着:一旦创建就驻留内存(单例),内存中一个servlet的实例只有一个。每次用户的访问,容器都会调用sevice方法发出响应(多线程)。doPost(),doGet()

      ● 死亡:应用被卸载或者Tomcat关闭了.destory()

2、具体实现

       void init(ServletConfig sc)-----void service(ServletRequset req,ServletRespone res)----void destory()

五、Servlet的线程安全

因为内存中一个servlet的实例只有一个,定义实例变量的时候,每次访问service(ServletRequset req,ServletRespone res)方法,会出现一个线程安全问题。

所以尽量使用局部变量,不要使用实例变量。

如果必须使用实例变量,只能做同步处理了,会对访问限制,就变成了一个单例应用了。

 

六、Servlet的一些细节

1、一个Servlet可以被映射到多个地址上

 

也可以:

 

 

2、可以使用地址通配符*

  写法一:*.do结尾 。必须以*开头比如*.do

  写法二(比一优先级略高):以/开头,必须以*结尾     比如/action/*

 

3、默认的Servlet(tomcat默认自带的)

   默认的Servlet的映射路径是<url-pattern>/</url-pattern>。不需要大家配,因为默认的Servlet负责处理用户的请求URL找不到匹配的处理工作。一切都是Servlet。

4、应用在启动时就完成Servlet的实例化和初始化

   在web.xml里进行配置<load-on-startup></load-on-startip>使其在应用加载时就完成实例化和初始化,避免第一个访问servlet访问太慢了。

   注意这里的顺序只能从2开始,因为1已经用在默认的servlet里了,也就是tomcat里面自带的默认serclet.

 

 

七、ServletConfig:Servlet的参数配置

1、ServletConfig:代表着针对当前Servlet的参数配置(web.xml)

 

2、如何得到ServletConfig对象的引用:在初始化Servlet时,由容器(服务器)产生,并传递给你

 

 

  关于test2里的方法中paramName的是值是param-name里的值。而config.getInitParameter(paramName)获取的是param_value里的值。

  注意:每一个Servlet对象都有一个ServletConfig配置。

八、ServletContext

1、ServletContext代表着当前应用(个人认为是应用就是项目)。每个应用只有一个ServletContext对象的实例,由容器提供。是一个域(范围)对象。

2、如何获取ServletContext的实例:

      ServletConfig.getServletContext();或者直接获取getServletContext()。

      ServletContext实例是通过 getServletContext()方法获得的,由于HttpServlet继承GenericServlet的关系,GenericServlet类和HttpServlet类同时具有该方法。

3、ServletContext的生命周期

       诞生:应用被加载时就由容器创建好

      活着:应用不挂就一直活着

      死亡:应用挂了,就挂了

4、域(存活范围)对象:

      ServletContext称为应用范围域对象。

 

     servletContext 是javaWeb的四大域对象中最大的域对象

5、配置全局的web.xml参数(又叫配置应用级的参数)

    也是用servletContext 来取这个值。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值