Java-Servlet

Posted 东血

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java-Servlet相关的知识,希望对你有一定的参考价值。

概念:运行在服务器端的小程序

  • Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则
  • 将来我们自定义一个类,实现Servlet接口,复写方法

快速入门

  1. 创建项目
  2. 定义一个类,实现Servlet接口
    • public class ServletDemo1 implements Servlet
  3. 实现接口的抽象方法
  4. 配置Servlet
     <servlet>
         <servlet-name>demo1</servlet-name>
         <servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>
     </servlet>
     <servlet-mapping>
         <servlet-name>demo1</servlet-name>
         <url-pattern>/demo1</url-pattern>
     </servlet-mapping>
    

执行原理:

  1. 当服务器接收到客户端浏览器请求后,会解析请求URL路径,获取访问的Servlet的资源路径
  2. 查找web.xml文件,是否有对应的标签体内容
  3. 如果有,则在找到对应的全类名
  4. Tomcat会将字节码文件加载进内存,并且创建其对象
  5. 调用其方法

Servlet中的生命周期:

1 .被创建 执行init方法,只执行一次

  • Servlet什么时候被创建
  • 默认情况下,第一次被访问到时,Servlet被创建
  • 可以配置执行Servlet的创建时机
    • 标签下配置
      1. 第一次被访问时,创建
        • 的值设置为负数
      2. 在服务器启动时,创建
        • 的值设置为0或正数
  • Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
  • 多个用户同时访问时,可能存在线程安全问题
  • 解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对其修改值
  1. 提供服务 执行service方法 执行多次
    • 每次访问Servlet时,service方法都会被调用一次
  2. 被销毁 执行destroy方法,只执行一次
    • Servlet被销毁时执行。服务器关闭时,Servlet被销毁
    • 只有服务器正常关闭时,才会执行destroy方法
    • destroy方法在执行时,一般用于释放资源

Servlet3.0

  • 好处
    • 支持注解配置,不需要web.xml了
  • 步骤
    1.创建JavaEE项目,选择Servlet3.0的版本以上,可以不创建web.xml
    2.定义一个类,实现Servlet接口
    3.复写方法
    4.在类上使用@WebServlet注解,进行配置
    * @WebServlet("资源路径")
  • Servlet的体系结构
    Servlet--接口
    |
    GenericServlet--抽象类
    |
    HttpServlet--抽象类
    • GenericServlet 将servlet接口中其他方法做了默认空实现,只将service()方法作为抽象
      • 将来定义Servlet类时,可以继承GenericServlet,实现service()方法即可
    • HttpServlet
  • Servlet相关配置
    1.urlpartten:Servlet访问路径
    1.一个Servlet可以定义多个访问路径:@WebServlet({"/d4","/dd4","/ddd4","/demo4"})
    2.路径定义规则
    1./xxx
    2./xxx/xxx
    3.*.do *是指通配符

HTTP

  • 概念 Hyper Text Transfer Portocol 超文本传输协议
    • 传输协议 定义了客户端和服务器端通信时,发送数据的格式
    • 特点:
      1. 基于TCP/IP的高级协议
      2. 默认端口号:80
      3. 基于请求/响应模型:一次请求对应一次响应
      4. 无状态的:每次请求之间互相独立,不能交互数据
  • 请求消息数据格式
    1. 请求行
      • 请求方式 请求url 请求协议/版本

      • GET/login.html HTTP/1.1

      • 请求方式

        • HTTP协议中有7种请求方式 常用的有两种
          • GET:
            1.请求参数在请求行中,在url后
            2.请求的url长度有限制的
            3.不太安全
          • POST
            1.请求参数在请求体中
            2.请求的url长度没有限制的
            3.相对安全
    2. 请求头
      • 请求头名称:请求头值
      • 常见的请求头
        1. user-Agent 浏览器告诉服务器 我访问你使用的浏览器版本信息
          • 可以在服务器端获取该头的信息 解决浏览器的兼容问题
        2. Referer http://localhost/login.html
          • 告诉服务器 我(当前请求)从哪里来?
            • 作用:
              1. 防盗链
              2. 统计工作
    3. 请求空行
    4. 请求体
      • 字符串格式:
        GET/login.html HTTP/1.1
        Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
        Accept-Encoding: gzip, deflate
        Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
  • 响应消息数据格式



























以上是关于Java-Servlet的主要内容,如果未能解决你的问题,请参考以下文章

Java-Servlet

Java-Servlet

java-Servlet生命周期与jsp

java-servlet过滤器和监听

2018年5月9日JAVA-servlet02

Java-Servlet--《12-WEB应用中的普通Java程序如何读取资源文件.mp4》 有疑问