day14 HTTP&Servlet

HTTP协议

含义:是TCP、IP协议之上的应用层协议

作用:规定浏览器和服务器数据之间的交互格式

注意:该协议的端口为80,Tomcat是8080

http的特点

1.无状态,无记忆

2.“1.0”版本需要多次请求和响应,1.1一次连接后可以处理多个请求

3.基于请求和响应

4.简单快速,灵活

请求:浏览器访问服务器的过程

响应:服务器响应数据给浏览器

浏览器发送请求(request)的结构极其内容

请求行:请求的方式,地址,协议,版本

请求头:有键值对组成

请求体:浏览器向服务其发送想要什么数据的请求,只有post有请求体,get没有请求体,可以在html文件中设置method=“post”进行规定

请求方发post和get的区别
postget
地址栏发送的数据不在地址栏显示发送的数据会在地址栏显示
大小没有限制不能大于2k
安全性安全不安全,
缓存没有使用缓存使用了缓存
服务器响应(response)数据的结构和内容

响应行:响应的方式,地址,协议,版本

响应头:有键值对组成,服务器返回给浏览器的

响应体:服务器发送数量给浏览器

常见的状态码及其含义
状态码含义
200服务器正常响应
302页面进行跳转
304服务器告诉浏览器使用本地缓存
404请求的资源找不到
405servlet执行doget和dopost方法
500通常是java代码出问题
servlet(处理请求和响应)

含义:是一种动态的web资源,用于连接服务器

总结:servlet运行在web服务器,由java编写的程序,用于连接后端

servlet的开发方式(资源名称使用/开头)

先要导入javax.api.jar包

将一个类实现Servlet接口,并重写里面的方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cyu60bzo-1684894010717)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230411191155237.png)]

方法1.写web.xml文件

<servlet>
    <!--名字一般使用实现类的名字命名-->
    <servlet-name>HellowServlet</servlet-name>
    <!--tomcat根据servlet的全限定名创建对象-->
    <servlet-class>cn.wolfcode._01_hellow.HellowServlet</servlet-class>
</servlet>
        
<servlet-mapping>
    <servlet-name>HellowServlet</servlet-name>
    <!--
    给外界提供一个访问当前servlet的资源名称
    注意:必须使用/开头
    -->
    <url-pattern>/hellow</url-pattern>
</servlet-mapping>

使用浏览器对别名进行访问:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9f9yPDYa-1684894010720)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230411191624722.png)]

方式2:在类名上方添加WebServlet注解,里面要加"/"

注解中的name可以不用,默认使用的类名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UyROz1VP-1684894010721)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230411191918823.png)]

Servlet的生命周期[单例,使用的缓存池]

**Servlet创建对象:**tomcat第一次访问时创建,只有一次

**初始化操作(init)😗*只初始化一次

**运行操作(service)😗*可以多次处理请求和响应

**销毁操作(destory)😗*正常关闭服务器时销毁Servlet对象

servelet的请求流程(接口)

**1.请求:**http://localhost:80/life

**2.localhost:**主机

**3.80端口,**tomcat

4.上下文路径:/,表示当前项目名称是空,可以省略,不存在404

5.资源路径:/life,确定唯一的web资源(静态的,动态的),不存在404

6.启动服务器:加载相关的配置文件(注解/xml),资源路径与类的全限定名一致

7.检查当前Sservlet是否创建:使用的缓存

8.根据资源名称找到对应类的全限定名

9.使用反射创建对象

10.创建ServletConfig对象,调用init方法,完成初始化操作

11.创建ServletRequest和ServletRespons对象,调用service方法队请求的客户端做出响应

servelet的请求流程(继承)

1.找到AServlet对象

2.Tomcat调用service中的(ServletRequest servletRequest, ServletResponse servletResponse)

3.AServlet中没有该方法,找父类(HTTPServlet)中的service并执行

4.调用service(HttpServletRequest req,HttpServletReponse resq)方法

5.如果AServlet中没有重写该方法,则执行父类中的方法,此时需要AServlet重写doGet和doPost方法,否则报错405

6.如果AServlet重写了该方法,则执行AServlet中的service方法

Servlet 的继承体系

HttpServlet 继承 GenericServlet

GenericServlet实现Servlet ,ServletConfig

**GenericServlet作用:**用于处理各种协议发出的请求和响应

HttpServlet的作用: 专门用于处理HTTP协议发送的请求和响应

ServletConfig 对象

作用:用于解决Servlet初始化时硬编码问题

使用**servletConfig.getInitParameter(“对象”)**进行解决

有两种方法获取ServletConfig对象

方法1.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YuFB5rMC-1684894010722)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230411201147032.png)]

方法2.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mEX5SM4E-1684894010722)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230411201242369.png)]

loadOnStartup 属性(取值越小越先加载:1-10)

作用:在启动web服务器的时候就创建对象,减少第一个用户访问时的等待时间

方式1:在web-xml中进行配置,下面1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nbgcGatD-1684894010723)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230411214349987.png)]

面进行添加loadOnStartup = 1,里面的注解名需要添加value

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZGzUgFfc-1684894010724)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230411214407679.png)]

细节

1.一个 中写多个

2.一个 对应多个

3.通配符映射"*"

格式说明
/* ,/目录名/*匹配该目录下所有的地址
*.扩展名匹配某个扩展名结尾的访问地址
注意:中不能叫default和jsp
格式说明
/* ,/目录名/*匹配该目录下所有的地址
*.扩展名匹配某个扩展名结尾的访问地址
注意:中不能叫default和jsp
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值