Servlet

作者: 闫子扬 | 来源:发表于2018-05-02 11:22 被阅读0次

1、Servlet

  • 定义:ervlet是一种服务器端的Java应用程序,即Java服务器小程序,其是由服务器端调用和执行的、按照Servlet自身规范编写的Java类。

  • 特点:

  • 1、其实就是一个特殊的java类。

  • 2、特殊在能够处理http请求和响应。(处理请求信息并将响应发送到客户端)

  • 3、特殊在内嵌了HTML代码。(用内嵌的HTML代码生成HTML页面发送到客户端。)

2、Servlet使用以下两个包中的类和接口:

1、javax.servlet     包含了可以支持通用、跨协议的servlet的类
1、Servlet接口的方法:
    init(ServeltConfig config):用于初始化Servlet。
    destroy():销毁Servlet。
    getServletInfo():获得Servlet的信息。
    getServletConfig():获得Servlet配置相关信息。
    service(ServletRequest req, ServletResponse res):运行应用程序逻辑的入口点,它接收两个参数,ServletRequest表示客户端请求的信息,ServletResponse表示对客户端的响应。

2、GenericServlet类

3、ServletConfig
        在Servlet的初始化中,初始化方法使用ServletConfig对象作为参数,通常这个方法保存这个对象,以便能够有方法getServletConif()返回。

4、Javax.servlet包
    ServletException
        ServletException包含几个构造方法和一个获得异常原因的方法
        getRootCause()其返回造成这个ServletException的原因。

    UnavailableException
        当Servlet或者Filter暂时或者永久不能使用时,就会抛出这个异常

     ServletRequest
        代表了Servlet的请求,它是一个高层的接口,HttpServletRequest是它的子接口

    ServletResponse
        代表了Servlet的响应,它是一个高层的接口,HttpServletResponse是它的子接口

    ServletInputStream
        Servlet的输入流

    ServletOutputStream
        Servlet的输出流

    ServletContext
        Servlet上下文

    RequestDispatcher
        forward(ServletRequest request,ServletResponse response):把请求转发到服务器上的另一个资源(Servlet、JSP、HTML)。
        include(ServletRequest request,ServletResponse response):把服务器上的另一个资源(Se-rvlet、JSP、HTML)包含到响应中。

2、javax.servlet.http        包中的类增加了用于HTTP的功能。每个Servlet都必须实现 javax.servlet.Servlet接口。
HttpServlet类扩展了GenericServlet,提供Servlet接口的HTTP协议的特定实现
    doGet:支持Http Get请求
    doPost:支持Http Post请求
    doPut:支持Http Put请求
    doDelete:支持Http Delete请求
    init和destroy:管理Servlet占用的资源
    getServletInfo:获得Servlet自身的信息
  • HttpServletRequest接口可以获取由客户端传送的参数名称,也可以获取客户端正在使用的通信协议,可以获取产生请求并且接收请求的服务器远端主机名和其IP地址等信息

  • HttpServletResponse代表了对客户端的Http响应。它允许Servlet设置内容长度和回应的MIME类型,并且提供输出流ServletOutputStream

  • HttpSession这个接口被Servlet引擎用来实现Http客户端和Http会话两者之间的关联

3、Servlet体系结构。

  • 1、Servlet 该接口主要作用是提供Servlet生命周期的init()、service()和destory()方法。
  • 2、GenericServlet 是一种与协议无关的Servlet、提供了service()方法所有接口中方法的缺省实现。
  • 3、HttpServlet 该类扩展了GenericServlet、提供Servlet接口的HTTP协议的特定实现。如果Servlet必须遵循HTTP协议,则只能扩展HttpServlet类并覆盖所需的方法。

4、在web.xml 中配置 Servlet。

  • 1、命名Servlet,需要用到web-app内servlet元素的servlet-name(可以选取任意名称)和servlet-class(完全限定类名)子元素。

    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>com.hejin.helloservlet.servlet.HelloServlet</servlet-class>
    </servlet>
    
  • 2、要将URL赋予已命名的Servlet,需要使用servlet-mapping元素的servlet-name(之前指定的名称)和url-pattern(URL前缀,由斜杠开始)子元素。

    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/helloServlet</url-pattern>
    </servlet-mapping>
    
  • 3、注意: 许多服务器具有“热部署”能力或方法,可以交互式地重启web应用。因此,除非使用服务器专有的特性,否则每次修改完web.xml文件还是要重新启动服务器。

5、Servlet get和post的区别 。

  • 1、这两种方法有本质的区别,get只有一个流,参数附加在url后,大小个数有严格限制且只能是字符串。post的参数是通过另外的流传递的,不通过url,所以可以很大,也可以传递二进制数据,如文件的上传。

  • 2、在servlet开发中,以doGet()和doPost()分别处理get和post方法。

  • 3、另外还有一个service(),它是一个调度方法,当一个请求发生时,首先执行service(),不管是get还是post。也可以直接编写service()方法,这样不管是get还是post。都会执行这个方法。

6、使一个Servlet上同时支持GET和POST。在Servlet的编写中常常遇到在同一个Servlet上需要同时支持GET和POST方法 。

public void doGet(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException{
    //----显示Hello,Servlet World! 
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException{
    doGet(req, res); 
}

7、Servlet和JSP的关系。

  • 1、JSP技术主要用来表现页面 ,Servlet技术主要是用来完成大量的逻辑处理
  • 2、JSP本身没有任何的业务处理逻辑,它只是简单地检索Servlet创建的JavaBean或者对象,再将动态的内容插入到预定义的模块中
  • 3、Servlet创建JSP需要的JavaBean和对象,再根据用户的行为,决定处理哪个JSP页面并发送给用户

8、Servlet的声明周期。

  • Servlet的生命周期包含了下面4个阶段

1、加载和实例化
2、初始化阶段 调用init()方法
3、响应客户请求阶段  调用service()方法
4、终止阶段  调用destroy()方法

  • Servlet初始化阶段:
      在下列时刻Servlet容器装载Servlet:
        1,Servlet容器启动时自动装载某些Servlet,实现它只需要在web.XML文件中的之间添加如下代码:
        2,在Servlet容器启动后,客户首次向Servlet发送请求
        3,Servlet类文件被更新后,重新装载Servlet
      Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在Servlet的整个生命周期内,init()方法只被调用一次。

9、Servlet中接收和响应请求参数时设置编码格式。

1、request.setCharacterEncoding("utf-8");//设置请求参数编码
2、/*response.setCharacterEncoding("utf-8");*///设置响应参数编码
3、response.setContentType("text/html;charset=utf-8");//设置响应内容编码

10、参数的传递。

1、get 提交 url后边直接传。
2、post提交 放在作用域里、传到下一个页面。

相关文章

  • servlet 笔记

    servlet servlet 声明周期 Servlet 的线程安全 Servlet 获取配置信息 Servlet...

  • Servlet

    Servlet介绍 Servlet开发步骤 创建Servlet 配置Servlet 配置Servlet中设置初始化...

  • 深入理解Servlet技术

    1. 什么是servlet servlet Servlet是javax.servlet.Servlet包中定义的一...

  • Servlet与Jsp(1)

    Servlet 实现原理Servlet接口使Servlet容器能将Servlet类载入内存,并在Servlet实例...

  • web.xml不同版本之间头信息的区别

    一、Servlet 2.3 二、Servlet 2.4 三、Servlet 2.5 四、Servlet 3.0 五...

  • Servlet入门

    Servlet简介 Servlet(Servlet Applet)是Java Servlet的简称,称为小服务程序...

  • Servlet 实例

    Servlet 实例 Servlet 是服务 HTTP 请求并实现 javax.servlet.Servlet 接...

  • Java Servlet API

    Servlet 支持的版本 Servlet 3.0 新特性详解 Servlet 3.0 新特性概述Servlet ...

  • 简单认识Servlet

    Servlet与JSP的关系 初识Servlet Servlet层级关系 顶层Servlet接口 GenericS...

  • 2019-10-14 SpringMVC与Servlet接口 S

    SpringMVC与Servlet接口 Servlet接口规范 Servlet 接口 定义servlet接口规范i...

网友评论

      本文标题:Servlet

      本文链接:https://www.haomeiwen.com/subject/yhgqrftx.html