Servlet规范(一)

一、Servlet规范

1.1、介绍

Servlet规范来自于JAVAEE规范中的一种

1.2 作用

  • 在Servlet规范中,指定动态资源文件开发步骤
  • 在Servlet规范中,指定Http服务器调用动态资源文件规则
  • 在Servlet规范中,指定Http服务器管理动态资源文件实例对象规则

二、Servlet接口实现类

  • Servlet接口来自于Servlet规范下的一个接口,这个接口存在于Http服务器所提供的jar包中
  • Tomcat服务器中lib文件夹下有一个Servlet-api.jar存放着Servlet接口
  • Servlet规范中任务,Http服务器调用的动态资源文件必须是一个Servlet接口实现类
  • 在这里插入图片描述

三、Servlet接口实现类开发步骤

我们通常都是去继承HttpServlet而不是去实现Servlet接口呢?

首先要明白的就是抽象类的好处:

	降低接口实现类对接口实现过程难度,将接口中不需要使用抽象方法交给抽象类完成
这样接口实现类只需要对接口需要的方法进行重写。

	对于Servlet接口来说,除了service方法,其余四个方法用不到,重写加大开发难度,
HttpServlet抽象类继承了GenericServlet抽象类,这个GenericServlet抽象类实现了Servlet接
口,对Servlet接口中四个不常用的方法进行了空实现,所以使用继承HttpServler为我们开发更方
便

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

3.1、Tomcat调用Servlet实现类的规则

  • Tomcat有能力创建Servlet实现类对象
Servlet oneServlet=new OneServlet();//这里假设OneServlet就是我们的实现类
  • Tomcat根据实例对象调用service方法处理请求
oneServlet.service

3.2、开发步骤

1.创建一个java类继承与HttpServlet父类,使之成为Servlet接口实现类
2.重写HttpServlet父类两个方法,doGet和doPost
3.将Servlet接口实现类信息注册到Tomcat服务器
4.为了降低用户访问servlet接口实现类难度,需要设置简短请求别名

【网站】----->【web】------>【WEB-INF】----->web.xml
将Servlet接口实现类类路径地址交给Tomcat
<servlet>
	<servlet-name>OneServlet</servlet-name>//声明一个变量存储servlet接口实现类类路径
	<servlet-class>com.bd.rj.controller.OneServlet</servlet-class>//声明servlet接口实现类类路径
</servlet>
<servlet-mapping>
	<servlet-name>OneServlet</servlet-name>
	<url-pattern>/one</url-pattern>//设置简短的请求别名,不能忘了”/“
<servlet-mapping>

四、Servlet对象生命周期

1.网站中所有的servlet接口实现类的实例对象,只能由Http服务器负责创建。
开发人员不能手动创建Servlet接口实现类的实例对象

​2.在默认的情况下,Http服务器接收到对于当前Servlet接口实现类第一次请求时自动创建这个Servlet接口实现类的实例对象

<load-on-stratup>1<load-on-startup>//表示tomcat启动时创建接口实现类对象

3.在Http服务器运行期间,一个Servlet接口实现类只能被创建出一个实例对象

​4.在Http服务器关闭的时刻自动将网站中所有的Servlet对象进行销毁

五、HttpServletResponse接口

5.1、基础介绍:

  • 这个接口来自于Servlet规范中,在Tomcat中存在servlet-api.jar
  • HttpServletResponse接口实现类由http服务器负责提供
  • ​HttpServletResponse接口负责将doGet和doPost方法执行结果写入到响应体交给浏览器
  • 开发人员习惯于将HttpServletResponse接口修饰的方对象成为【响应对象】

5.2、作用:

  • 将执行结果以二进制的形式写入到响应体
  • 设置响应头中content-type属性值,从而控制浏览器使用对应编译器将响应体二进制数据编译为【文字,图 片,视频,命令】
  • 设置响应头location属性,将一个请求地址赋值给location从而控制浏览器向指定服务器发送请求

六、HttpServletRequest接口

6.1、基础介绍:

  • HttpservletRequest接口来自于servlet规范中,在Tomcat中存在servlet-api.jar

  • HttpservletRequest接口实现类由Http服务器负责提供

  • HttpservletRequest接口负责在doGet/doPost方法运行时读取tttp请求协议包中信息

  • 开发人员习惯于将HttpservletRequest接口修饰的对象称为【请求对象】

6.2、作用:

  • 可以读取日ttp请求协议包中【请求行】信息

  • 可以读取保存在Http请求协议包中【请求头】或则【请求体】中请求参数信息

  • 可以代替浏览器向Http服务器申请资源文件调用

七、Get和Post的区别

7.1、基础介绍:

GET产生一个TCP数据包;POST产生两个TCP数据包

  • GET请求:浏览器会把Header和data一并发送出去,响应为200状态码

  • POST请求:浏览器会先发送Header过去,响应为100,浏览器会再发送data到服务器

7.2、区别:

  • 对参数的数据类型,GET只接受ASCII字符,而POST没有限制,允许二进制。
  • GET请求只能进行url编码,而POST支持多种编码方式,可以为二进制使用多重编码。
  • POST 比 GET 更安全,GET把参数包含在URL中,POST通过request body传递参数。
  • 对参数数据长度的限制,GET方法URL的长度是受限制的,最大是2048个字符,POST参数数据是没有限制的。
  • GET请求会被浏览器主动缓存,POST不会,除非手动设置。
  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
  • 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

八、字符编码问题

8.1、Http Request的编码

通常浏览在发送一个请求到服务器的时候,不会设置字符编码,在服务器端为了统一编码,可以在filter 中使用request.setCharacterEncoding(“UTF-8”)来设置编码. 一般浏览器都是用默认的ISO-8859-1字符编码,要解决中文参数乱码的时候都必须这一步。

request.setCharacterEncoding("UTF-8")

8.2 、Http response的编码

Http response中可以设置输出到浏览器的数据使用的编码方法

response.setCharacterEncoding("UTF-8")
response.setContentType("text/html; charset=UTF-8")

如果只是单纯的设置编码,最好是response.setCharacterEncoding(“UTF-8”),因为response.setContentType(“text/html; charset=UTF-8”)是针对具体的MIME类型设置对应的字符编码。需要注意的是这里设置的编码对JSP页面不一定起作用,理由是JSP页面有自己设置字符编码的方式,而且优先级更高。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

do{a++b++}while(a&b)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值