Java_Servlet处理请求流程
1、servlet如何接收请求参数
从request对象中根据key获取value值
1)一个key对应一个value值
String value = request.getParameter("key");
2)一个key对应多个value值
String[] values = request.getParameterValues("key");
2、前端get请求和post请求方式
1>请求参数存放位置 get请求是将请求参数拼接在url请求地址后面, 会显示在浏览器地址栏中 格式:url?key1=value1&key2=value2... post请求将请求参数放在请求数据包的实体部分, 在浏览器地址栏中不会显示
2>安全性 get请求不安全 post请求相对安全
3>是否适合大数据量的提交 get不适合大数量的提交,每个不同的浏览器 对url的长度都有一定的限制 post请求适合大数量的提交,理论上对数据量 大小没有限制
4>get请求和post请求 get请求:
1)浏览器地址栏直接输入地址
2)点击页面上超链接
3)带有src属性的html标签,在页面加载时 会自动向src中服务器地址发送请求
4)表单的默认提交方式
5)ajax发送get请求 post请求
1)表单的method改为post
2)ajax发送post请求
3、中文乱码解决
1>post请求中文乱码 原因:前端浏览器按照UTF-8格式对字符进行编码, 到达服务器之后,服务器默认按照ISO-8859-1 方式来进行解码 解决:在request.getParameter()之前调用 request.setCharacterEncoding("UTF-8") 设置服务器端的解码方式
2>响应中文乱码 原因:服务器在返回中文时,默认按照ISO-8859-1 方式对中文进行编码,到达浏览器后,浏览器 按照utf-8方式进行解码 解决:在response.getWriter()之前调用 response.setContentType("text/html;charset=UTF-8") 告诉前端浏览器返回的数据类型和解码方式 mimetype:媒体类型格式 一般用于表示一个资源类型 格式:大类型/小类型 image/png image/jpg text/css
4、错误页面 <error-page> <!-- 错误状态码 --> <error-code>404</error-code> <!-- 错误页面 --> <location>/404.html</location> </error-page>
5、servlet执行原理
1>浏览器依据ip和端口号与服务器之间建立连接
2>浏览器打包请求数据包,发送给服务器
3>服务器接收并解析请求数据包,同时创建 request和response两个对象,并将请求数据包中 所有数据存入到request对象中
4>服务器再依据请求路径url和web.xml配置找到 或创建servlet对象(单例),并将事先创建的 request和response两个对象传入到servlet
5>servlet从request中取出请求数据并进行处理, 将处理结果存入到response对象中
6>服务器从response对象中取出处理结果,并打包 成响应数据包,给前端浏览器返回
7>浏览器和服务器之间断开连接
8>浏览器解析响应数据包,取出响应内容,并对 浏览器页面进行渲染
6、Http请求
1>Http协议概念 HyperText Transfer Protocal 超文本传输协议,是基于TCP之上的 应用层协议,主要用于规定浏览器与 服务器之间进行超文本传输的数据格式(数据包)
2>Http协议特点 短连接:Http会为浏览器的每一次请求 都建立一个连接,响应完成后连接断开, 下次请求需要重新建立连接,目的是为了 节省服务器端的资源,可以给更多的客户端 来提供服务 3>Http数据包
1)请求数据包
1>请求行 Request Line
1.1>请求方式(GET/POST)
1.2>请求路径(GET请求还包含请求参数)
1.3>请求协议类型与版本号 GET /web02/contact.html HTTP/1.1 GET /web02/contact?name=zhangsan&age=123&sex=M&province=shanxi HTTP/1.1 POST /web02/contact HTTP/1.1
2>请求消息头 Request Headers 主要定义浏览器与服务器之间的通讯规则, 浏览器想要告诉服务器的一些信息 消息头格式key:value 获取请求消息头:request.getHeader();
3>请求实体 Request Entity 包含浏览器向服务器提交的请求参数, 只有post请求有请求实体,get请求没有
2)响应数据包
1>响应行 Response Line
1.1>协议类型与版本号
1.2>响应状态码
1.3>状态码描述 HTTP/1.1 200 OK HTTP/1.1 404 Not Found HTTP/1.1 500 Internal Server Error 2>响应消息头 Response Headers 主要包含服务器想要告诉浏览器的一些相关信息 自定义消息头(下载或解决跨域): response.setHeader() 设置或覆盖消息头 response.addHeader() 设置或追加消息头
3>响应实体 Response Entity 服务器处理完结果,给浏览器返回的具体数据内容, 浏览器可以直接显示在页面上 ems员工管理系统