栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaWeb-Servlet

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaWeb-Servlet

目录

一、基本概念

二、 Servlet的继承关系

三、 Servlet的生命周期

四、ServletConfig和ServletContext

4.1 ServletConfig

4.2  ServletContext

五、基本使用


一、基本概念
  • 什么是 Servlet

        1、 Servlet 是 JavaEE 规范之一。 规范就是接口

        2、 Servlet 就 JavaWeb 三大组件之一。 三大组件分别是: Servlet 程序、 Filter 过滤器、 Listener 监听器。

        3、 Servlet 是运行在服务器上的一个 java 小程序, 它可以接收客户端发送过来的请求, 并响应数据给客户端

        4.在整个Web应用中,Servlet主要负责处理请求、协调调度功能。我们可以把Servlet称为Web应用中的『控制器』

二、 Servlet的继承关系

 1) 继承关系: HttpServlet -> GenericServlet -> Servlet
 2) Servlet中的核心方法: init() , service() , destroy()
 3) 服务方法: 当有请求过来时,service方法会自动响应(其实是tomcat容器调用的)
            在HttpServlet中我们会去分析请求的方式:到底是get、post、head还是delete等等,然后再决定调用的是哪个do开头的方法。
           而在HttpServlet中这些do方法默认都是405的实现风格-需要我们子类去实现对应的方法,否则默认会报405错误
 4) 因此,我们在新建Servlet时,我们才会去考虑请求方法,从而决定重写哪个do方法

三、 Servlet的生命周期

     1) 生命周期对应Servlet中的三个方法:init(), service(), destroy()
    2) 默认情况下:
        第一次接收请求时,这个Servlet会进行实例化(调用构造方法)、初始化(调用init())、然后服务(调用service())
        从第二次请求开始,每一次都是服务
        当容器关闭时,其中的所有的servlet实例会被销毁,调用销毁方法
    3) 通过案例我们发现:
        - Servlet实例tomcat只会创建一个,所有的请求都是这个实例去响应。
        - 默认情况下,第一次请求时,tomcat才会去实例化,初始化,然后再服务.

                这样的好处是什么? 提高系统的启动速度 。

                这样的缺点是什么? 第一次请求时,耗时较长。
        - 如果需要提高系统的启动速度,当前默认情况就是这样。如果需要提高响应速度,我们应该设置Servlet的初始化时机。


    4) Servlet的初始化时机:
        - 默认是第一次接收请求时,实例化,初始化
        - 我们可以通过来设置servlet启动的先后顺序,数字越小,启动越靠前,最小值0


    5) Servlet在容器中是:单例的、线程不安全的
        - 单例:所有的请求都是同一个实例去响应
        - 线程不安全:一个线程需要根据这个实例中的某个成员变量值去做逻辑判断。但是在中间某个时机,另一个线程改变了这个成员变量的值,从而导致第一个线程的执行路径发生了变化

四、ServletConfig和ServletContext

4.1 ServletConfig
  • ServletConfig 类从类名上来看, 就知道是 Servlet 程序的配置信息类。
  • Servlet 程序和 ServletConfig 对象都是由 Tomcat 负责创建, 我们负责使用。
  • Servlet 程序默认是第一次访问的时候创建, ServletConfig 是每个 Servlet 程序创建时, 就创建一个对应的 ServletConfig 对象。
  • ServletConfig 类的三大作用

1、 可以获取 Servlet 程序的别名 servlet-name 的值       .getServletName();

2、 获取初始化参数 init-param           .getInitParameter("String str");

3、 获取 ServletContext 对象              .getServletContext( );



    ... ...

    
    
        name
        value
    

4.2  ServletContext
  • 1、 ServletContext 是一个接口, 它表示 Servlet 上下文对象
  • 2、 一个 web 工程, 只有一个 ServletContext 对象实例。
  • 3、 ServletContext 对象是一个域对象。
  • 4、 ServletContext 是在 web 工程部署启动的时候创建。 在 web 工程停止的时候销毁。
  • ServletContext 类的四个作用

1、 获取 web.xml 中配置的上下文参数 context-param   .getInitParameter("String str");

2、 获取当前的工程路径, 格式: /工程路径                      .getContextPath();

3、 获取工程部署后在服务器硬盘上的绝对路径                .getRealPath("/");

4、 像 Map 一样存取数据,操作域对象 

        setAttribute(k,v);         getAttribute(k);          removeAttribute(k); 

	
		… ...
		
		
			username
			context
		 
		… ...
	

五、基本使用
  • 通过继承 HttpServlet 实现 Servlet 程序

        一般在实际项目开发中, 都是使用继承 HttpServlet 类的方式去实现 Servlet 程序。

        1、 编写一个类去继承 HttpServlet 类

        2、 根据业务需要重写 doGet 或 doPost 方法

        3、 到 web.xml 中的配置 Servlet 程序的访问地址


        ServletName
        LocationOfServletClass


        ServletName
        /name

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008532.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号