什么是servlet?servlet有什么用?
servlet概述
什么是servlet,servlet有什么用?
servlet是java编写的服务器端的程序,运行在web服务器中
作用:
- 接收用户端发来的请求
- 调用其他java程序来处理请求
- 将处理结果,返回到服务器中
servlet的生命周期
实例化-初始化-服务-消亡
1.第一次访问servlet或启动服务器时创建servlet 的实例
2.init() 只调用一次,servlet实例创建后立即执行,用于执行一些servlet初始化操作
@Override
public void init() throws ServletException {
super.init();
}
3.service方法 多次调用;每次请求都调用service方法,根据请求方式调用doGet()或doPost()方法。
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
super.service(req, res);
}
4.只调用一次,服务器关闭时,执行一些操作
@Override
public void destroy() {
super.destroy();
}
http协议
http协议 超文本传输协议, 用于定义客户端浏览器和服务器之间交换数据的过程,基于TCP/IP通信协议来传输数据;属于应用层(简洁快速,适用于分布式超媒体信息系统)
http请求
客户端连接上服务器后,向服务器端请求了web资源,就是向服务器端发送了http请求
请求包括:
-
请求行:包括http请求方式,请求资源名称,请求版本
-
请求头:主机请求地址,客户端环境信息,以键值对形式传递
Host: 127.0.0.1:8088 请求的主机地址 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 浏览器能够处理的内容类型 Accept-Encoding: gzip, deflate, br 浏览器能够处理的压缩编码 Accept-Language: zh-CN,zh;q=0.9 浏览器当前设置的语言 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 使用的浏览器和操作平台信息 Connection: keep-alive 浏览器与服务器之间连接的类型
-
请求体:代表着浏览器在post请求方式中传递给服务器的参数,请求体中参数以键值形式传递,多个用&链接,服务器接收到后再解析 例如:username=admin&userpwd=123
两种http请求方式
-
get方式
超链接访问,默认为get请求
form提交,不指定method,默认为get方式
-
post方式
form提交,指定method=post
两种的方式的区别
- get请求主要从服务器获取信息;post主要是是向服务提交的信息
- get请求在通过URL提交数据,数据在URL可以看到;post请求放置在请求体中提交
- get请求提交的数据大小受限制一般1kb(不同浏览器可能不同);post请求不受限制
HttpServletRequst
是ServletRequest的子接口;比ServletRequest多了一些针对http协议的方法;在Servlet中,用HttpServletRequest来表示请求;HttpServletRequest :封装了请求的信息,可以从中获取任何请求信息。
HttpServletRequst的一些方法
- getMethod()得到客户机请求方式
- getScheme()请求协议
- getRemoteAddr()返回发出请求的客户机的IP地址
- getServerName()服务器名(ip或域名)
- getServerPort()服务器端口
获取请求的参数的方法
- getParameter(name) — String 通过name获得值
- getParameterValues — String[ ] 通过name获得多值
http响应
一个http响应代表服务器向客户端回送的数据,它包括:响应行,响应头,响应体。响应行里包含了http协议版本,以及用于描述服务器对请求的处理结果。
状态码:
- 200:请求成功
- 302:请求重定向
- 400:语义有误,当前请求无法被服务器理解或请求参数有误
- 404:请求资源不存在,通常是路径写错了或者服务器资源删除了
- 500:服务内部错误(代码异常)
HttpServletResponse
HttpServletResponse是ServletResponse的子接口 。
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个代表响应的HttpServletResponse对象。HttpServletResponse对象代表响应
向浏览器动态生成网页内容
用getWriter()获得一个PrintWriter字符输出流输出数据response会默认以ISO8859-1将需要输出到浏览器的字符进行解码,如果输出的字符在ISO8859-1中不存在,就会导致乱码问题。
response.setContetnType(“text/html;charset=utf-8”);方法可以同时设定response所使用的字符集编码和浏览器打开所用的字符集编码
创作不易,大佬们留步… 动起可爱的双手,来个赞再走呗 (๑◕ܫ←๑)