JavaWeb核⼼之Servlet

本文详细介绍了JavaWeb中的Servlet,包括Http请求和响应的工作原理,Servlet规范的实现,Servlet的生命周期,URL映射,路径解析,注解的应用,ServletConfig和ServletContext的作用,以及HttpServlet的重写方法。
摘要由CSDN通过智能技术生成

1.Http请求 request

请求行: GET /day02_war_exploded/index.html HTTP/1.1
GET: 请求方式[method] GET POST PUT DELETE
< form action enctype method >
POST: 只有在Form表单method=post时候
特点: 参数隐藏, 请求体中
参数大小没有限制, 可以是文件
GET: 直接访问, 超链接, method=get等
特点: 参数是添加在url后面 ? 连接
参数大小有限制
/day02_war_exploded/index.html: 资源地址URI
HTTP/1.1: 协议和版本
请求头: map, 客户端的基本信息
请求体: post请求方式提交的参数
Http响应 response
响应行: HTTP/1.1 200
HTTP/1.1: 协议和版本
200: 状态码 正常 [status]
304: 访问缓存
404: 资源未找到
500: 服务器端代码(java代码)异常
302: 重定向
响应头: map, 服务器端封装的数据
响应体: 服务器响应内容
一个页面[html代码]
一个文件
一些数据…

2.动态页面 Servlet规范 Server + Applet

1.自定义类, 实现Servlet接口
2.着重实现3个方法
3.注册Servlet 应用的web.xml
< servlet >
< servlet-name >自定义名字
< servlet-class >全限定类名
< /servlet >
< servlet-mapping >
< servlet-name >上面的名字[自定义名字]
< url-pattern >/地址[自定义地址]
< /servlet-mapping >
4.访问: http://localhost:8080/day02_war_exploded/hello

3.servlet的生命周期

init: 对象创建后调用, 默认第一次访问资源时创建
通过< load-on-startup >整数< /load-on-startup >
让对象在服务器启动时创建

service: 每一次访问资源时调用

destroy: 对象销毁之前调用, 服务器关闭[或者卸载应用]时销毁

4.url-pattern的书写

 <!-- 1.精确匹配: 只能通过 /hello 访问  -->
    <!-- 一个servlet资源可以对应多个url链接地址 -->
    <url-pattern>/hello</url-pattern>
<!-- 2.使用通配符匹配(目录匹配) 可以通过 /hello/任意地址 来访问 -->
    <url-pattern>/hello/*</url-pattern>

    <!-- 3.后缀匹配 可以通过 任意名字.user 来访问 -->
    <url-pattern>*.user</url-pattern>
 缺省的匹配   /  tomcat本身自动配好的 [conf/web.xml]
    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

 当访问后缀为 .html .htm  .jpg .css .js .png ...的静态资源
      就使用默认的Servlet来搜索静态资源,
      当找不到的时候, 就会搜索应用中的web.xml文件资源
      两个web.xml文件都搜索不到, 就响应404
    结论: web应用中访问的所有资源, 都是访问Servlet

5.路径

URL: http://localhost:8080/… 绝对路径
URI: 以 / 开始的就是绝对路径
URI -> URL 协议://ip:port/URI
/应用名/xx资源

6.注解取代xml文件

注解:@xx @interface
注解属性: 类型 属性名()[default]

  1. 属性没有默认值时,必须传参
  2. 只有当传入的属性只有一个,并且属性名是value的时候,属性名可以省略
  3. 属性类型是数组时,又只有一个值,可以不用{}

注解是不可以加载任意位置的,注解是可以解析的 --> 反射
注解作用:可以取代xml文件
javaEE从3.0开始支持注解

7.ServletConfig - init方法中的参数

<init-param>
    <param-name>encoding</param-name>
    <param-value>utf-8</param-value>
</init-param>

在这里插入图片描述在这里插入图片描述

8.ServletContext

获得Servlet对象

  1. config.getServletContext()
  2. request.getServletContext()
  3. this.getServletContext()
    this - > HttpServlet

整个应用中, 只有一个ServletContext对象
所有servlet, 所有客户端 可以共享的

生命周期: 服务器启动时创建, 服务器关闭销毁 Listener
作用:

  1. 获得应用名
  2. 获得应用的初始值参数
<!-- 设置应用的初始化参数 -->
        <context-param>
            <param-name>configPath</param-name>
            <param-value>classpath:config.properties</param-value>
        </context-param>
  1. 获得资源中的绝对路径
    src/a.txt
    web/b.txt
    web/WEB-INF/c.txt
    day02工程/d.txt
    在这里插入图片描述
  2. 存数据, 例如访问量, 阅读量
    域对象: 存储数据的, 有范围的对象, map
    ServletContext域的范围: 应用[服务器]运行期间
    API: setAttribute(name, value)
    value getAttribute(name)
    removeAttribute(name)
    name-String value-Object

查看上一次访问时间
在这里插入图片描述
在这里插入图片描述

9.HttpServlet

重写: doGet doPost
class HttpServlet extends GenericServlet
实现了service方法
service(HttpServletRequest, HttpServletResponse);
判断请求方式, 如果是get请求, 调用doGet方法
如果是post请求, 调用doPost方法
class GenericServlet implements Servlet

这里是引用
发送了10次请求, 访问了几次doGet(10), doPost(10), service(10), init(1), destroy(0)
创建了几个 servlet(1) 对象, 几个 request()10 对象, 几个 response(10)对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值