Servlet基础详解

一、  什么是Servlet

     1.1、定义

           servlet就是指一个在web服务器上运行的java程序, Servlet从web客户端接收服务请求并响应之,通常使用继承了servlet接 口的HttpServlet进行web业务操作。servlet是一个单例多线程的java应用程序,多个客户端(游览器)可以访问同一个servlet。
            
     1.2、servlet 生命周期

           

生命周期特点:

 (1)一个实例只会执行一次无参构造器和init()初始化方法;

 (2)游览器每提交一次servlet请求,就会执行一次service方法;

 (3)服务端应用程序停止时,执行destory方法销毁当前的servlet示例;

 (4)一般不会为servlet定义可修改的成员变量,因为servlet是单例多线程的,而成员变量存放于JVM虚拟机 堆区可由多个线程共享操作,当达到一定的并发量,则会造成线程安全问题。

 (5) 默认情况下web容器启动时不会实例化servlet,只有我们设置web.xml中的<load-on-startup>标签的值设置为大于0的整数。

1.3、web.xml配置文件

     作用:web.xml配置文件是用来存放servlet配置信息的文件,建立与servlet程序的mapping映射关系,是web工程中最重要的一部分。

     常用标签如下:

       

        标签名称                                                标签作用
   url-patterns用于设置servlet的URL请求路径,可以设置多个。
   load-on-startup设置servlet示例化的优先级,优先级高的先实例化,如果标签数值为负数则不会实例化这个servlet。
  init-param设置servlet的初始化参数,键值对的方式赋值,仅仅适用于当前servlet
  context-param

上下文参数也有init-param标签,可以以键值对的方式设置初始化参数,作用范围是整个应用程序,它是独立于servlet标签的,当前工程下的所有servlet都可以获取此标签的初始化参数。

  servlet-name设置servlet的名字。

                                                                                                                                                                                                             1.4、web.xml映射原理

          

           PS:web.xml默认有两张映射表,如果请求url通过Map1找不到要请求得servlet示例,则会继续通过Map2的class          名称找到对应的servlet示例,如果Map1能查找的到servlet示例,则不会执行Map2。

 

二、HttpServlet详解

       HttpServlet是采用了http协议通讯的servlet,HttpServlet继承了Servlet接口并实现了Servlet所有的特性,http协议是一种无状态的TCP协议,故http协议主要是以字节流端对端的方式进行传输,是目前web工程开发的主要协议。

    2.1、HttpServlet容器响应客户端请求流程如下

         (1)web客户向servlet容器发送http请求;

         (2)servlet容器解析客户端的http请求;

         (3)servlet容器创建一个HttpServlet对象,在这个对象中封装HTTP请求信息;

           (4)   servlet容器创建一个HttpServletResponse对象;

        (5)servlet容器调用httpservlet的service方法,把HttpServletRequest和HttpServletResponse对象作为service方法的参数传递给HttpServlet对象;

        (6)HttpServlet调用HttpServletRequest的有关方法,获取Http请求信息;

        (7)HttpServlet调用HttpServletResponse的有关方法,生成响应数据;

        (8)Servlet容器把HttpServlet的相应结果传递给Web客户

    2.2、ServletConfig基础点

       定义:ServletConfig是获取web.xml中servlet标签内配置信息的对象,每一个servlet都有一个ServletConfig对象,通过这个对象我们可以获得应用程序的上下文以及当前servlet的所有信息,可以通过getServletConfig获取。

       ServletConfig常用方法:

                  

方法名方法作用使用范围
getServletContext获取上下文对象,一个web工程仅有一个上下文,多个servlet共享 
getInitParameterNames获取servlet标签中自定义的初始化参数名数组当前servlet
getServletName获取当前servlet的名字当前servlet
getInitParamter(name)通过参数名获取制定的初始化参数当前servlet

       ServletContext常用方法:

方法名方法作用使用范围
getInitParameterNames获取<context-param>标签内初始化参数名数组整个web应用工程,多个servlet共享
getInitParamter(name)通过参数名获取<context-param>标签内制定的参数整个web应用工程,多个servlet共享
setAttribute(key,value)以键值对的方式设置上下文的域属性整个web应用工程,多个servlet共享
getContextPath()获取当前web工程的根路径 

2.3、HttpRequest和HttpResponse

      定义:HttpServletRequest继承了ServletRequest,HttpServletResponse继承了ServletResponse,这两个对象参数主要存在于HttpServlet的doGet()、doPost()、doPut()等方法中。

      Servlet主要服务方法介绍:

        (1)doGet():调用服务器的资源,doGet的调用在URL里显示正在传送给servlet的数据,这在系统的安全方面会带来很大的问题,常见的是用户登录账户和密码信息泄露;

       (2)doPost():用于把客户端的数据传给服务端,使用它可以以隐藏方式将数据传递给服务端,post适合发送大量的数据。

    HttpRequest方法详解:

        (1)   getParameter(name):通过参数名获取请求参数的值;

     (2) getParameterNames():获取所有请求参数名,以枚举数组的方式返回;

     (3) getParamterValues(name):通过参数名获取name对应的所有参数值以一个数组的方式返回;

       (4)    getParamterMap():获取请求参数存放的Map对象;

    (5) 请求参数Map原理分析:Map<name,value[...]> 用于存放前端递交过来的参数,一个name可能对应多个参数。servlet后台服务器本质上是从Map中拿到相应的参数值。

HttpResponse方法详解:

     (1)getWriter():获取字符输出流;

     (2)getOutputStream():获取字节输出流  ;

     (3)addCookie():响应流中添加cookie

 

三、Servlet三大作用域

      定义:servlet三大作用域是ServletContext域属性、Request域属性、session域属性。何为作用域属性,作用域属性就是attribute,使用作用域可以传递数据和存储数据。作用域属性与param参数最大的不同点是param只能在java代码中获取不能通过java代码创建,而域属性则可以在后台代码中创建和获取,常用的方法就是getAttribut(name)和setAttribute(name,value)。

     作用范围列表:

      

 web应用程序内会话范围(跨请求,多个servlet)当前请求用处
ServletContext(Application)YYY所有用户均能获取此信息,只需要设置一次,一般用于在多个客户端间共享数据时使用
Session YY常用于web开发中的登录验证界面
HttpServletRequest(Jsp)  Y用于服务器间同一请求不同页面之间的参数传递,常用于表单控件值的传递

   生命周期:

   (1)request:只限于一次请求,随着请求的消亡而消亡

   (2)session:基于一次会话(多次请求),会话结束时消亡

   (3)servletContext:项目的加载到卸载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
Servlet 是 Java Web 开发中最基础的组件之一,其主要作用是处理客户端(浏览器)发出的 HTTP 请求并返回响应结果。在 Servlet 中,有一些常用的方法,下面对这些方法进行详细介绍。 1. `init()` 方法 `init()` 方法是 Servlet 的生命周期方法之一,表示 Servlet 初始化时调用的方法。在 Servlet 对象被创建后,容器会自动调用 `init()` 方法,用来对 Servlet 进行初始化,例如读取配置文件、建立数据库连接等。`init()` 方法只会被调用一次。 2. `service()` 方法 `service()` 方法是 Servlet 的核心方法,用来处理客户端发送的请求并生成响应结果。在每次客户端请求时,容器都会调用 `service()` 方法,将请求信息封装为一个 `ServletRequest` 对象和一个 `ServletResponse` 对象,然后调用具体的 `doXXX()` 方法(如 `doGet()`、`doPost()` 等)来处理请求。 3. `destroy()` 方法 `destroy()` 方法也是 Servlet 的生命周期方法之一,表示 Servlet 被销毁时调用的方法。在 Servlet 对象被销毁前,容器会自动调用 `destroy()` 方法,用来释放资源、关闭数据库连接等。`destroy()` 方法只会被调用一次。 4. `doGet()` 方法 `doGet()` 方法是处理 HTTP GET 请求的方法。当客户端发送 GET 请求时,容器会自动调用 `doGet()` 方法,并将请求信息封装为一个 `HttpServletRequest` 对象和一个 `HttpServletResponse` 对象,然后在此方法中编写处理逻辑,并通过 `HttpServletResponse` 对象生成响应结果。 5. `doPost()` 方法 `doPost()` 方法是处理 HTTP POST 请求的方法。当客户端发送 POST 请求时,容器会自动调用 `doPost()` 方法,并将请求信息封装为一个 `HttpServletRequest` 对象和一个 `HttpServletResponse` 对象,然后在此方法中编写处理逻辑,并通过 `HttpServletResponse` 对象生成响应结果。 6. `doPut()` 方法 `doPut()` 方法是处理 HTTP PUT 请求的方法。当客户端发送 PUT 请求时,容器会自动调用 `doPut()` 方法,并将请求信息封装为一个 `HttpServletRequest` 对象和一个 `HttpServletResponse` 对象,然后在此方法中编写处理逻辑,并通过 `HttpServletResponse` 对象生成响应结果。 7. `doDelete()` 方法 `doDelete()` 方法是处理 HTTP DELETE 请求的方法。当客户端发送 DELETE 请求时,容器会自动调用 `doDelete()` 方法,并将请求信息封装为一个 `HttpServletRequest` 对象和一个 `HttpServletResponse` 对象,然后在此方法中编写处理逻辑,并通过 `HttpServletResponse` 对象生成响应结果。 以上是 Servlet 中常用的方法,了解这些方法可以帮助我们更好地理解 Servlet 的工作原理,并能够编写出符合规范的 Servlet 程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值