Servlet之Http协议,Servlet运行原理
一.HTTP协议
1.什么是HTTP协议
- 就是W3C制定的规范
- 规定了浏览器和服务器如何通信及数据格式
2.如何通信
- 建立连接
- 发送请求
- 返回响应
- 关闭连接
为什么采取这种通信方式:一次请求一次连接,尽量降低服务器的压力
3.数据格式
3.1请求数据
- 请求行:本次请求的基本信息
- 消息头:对发送内容的描述信息
- 实体内容:浏览器向服务器发送的具体内容
3.2 响应数据
- 状态行:本次响应的基本信息
- 消息头:对响应内容的描述信息
- 实体内容:服务器向浏览器发送的具体内容
4.开发时需要做的事情
4.1不需要开发做的事情
- 通信的方式已经由浏览器和服务器实现了
- 浏览器自动组装并发送请求数据
- 服务器自动组装并发送响应数据
4.2需要开发做的事情
- 使用request处理(接收)请求数据
- 使用response处理(拼接)响应数据
二.注册功能

案例:
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <title>注册</title>
6 </head>
7 <body>
8 <!--
9 访问路径是书写方式:
10 1.完整路径
11 http://localhost:8080/servlet2/reg
12 2.绝对路径
13 /servlet2/reg
14 注意:以"/项目名/网名"开头
15 3.相对路径
16 写出当前访问的资源和将要访问的资源的相对关系.
17 当前:/servlet2/reg.html
18 目标:/servlet2/reg
19 -->
20 <form action="reg" method="post">
21 <p>
22 账号:<input type="text" name="userName"/>
23 </p>
24 <p>
25 密码:<input type="password" name="pwd"/>
26 </p>
27 <p>
28 性别:
29 <input type="radio" name="sex" value="M"/>男
30 <input type="radio" name="sex" value="F"/>女
31 </p>
32 <p>
33 兴趣:
34 <input type="checkbox" name="interest" value="friend"/>社交
35 <input type="checkbox" name="interest" value="read"/>阅读
36 <input type="checkbox" name="interest" value="game"/>竞技
37 </p>
38 <p><input type="submit" value="注册"/></p>
39 </form>
40 </body>
41 </html>
1 package web;
2
3 import java.io.IOException;
4 import java.io.PrintWriter;
5
6 import javax.servlet.ServletException;
7 import javax.servlet.http.HttpServlet;
8 import javax.servlet.http.HttpServletRequest;
9 import javax.servlet.http.HttpServletResponse;
10
11 public class RegServlet extends HttpServlet {
12
13 @Override
14 protected void service(
15 HttpServletRequest req,
16 HttpServletResponse res) throws ServletException, IOException {
17 req.setCharacterEncoding("utf-8");
18 //1.接收请求数据
19 String userName =
20 req.getParameter("userName");//接受单个参数
21 String pwd = req.getParameter("pwd");
22 String sex = req.getParameter("sex");
23 String[] interests =
24 req.getParameterValues("interest");//接受多个参数
25 //处理请求的乱码
26 //byte[] bs = userName.getBytes("iso8859-1");
27 //userName = new String(bs,"utf-8");
28 //2.处理业务逻辑
29 System.out.println(userName);
30 System.out.println(pwd);
31 System.out.println(sex);
32 if(interests != null) {
33 for(String interest: interests) {
34 System.out.println(interest);
35 }
36 }
37 //3.发送响应信息
38 res.setContentType("text/html");
39 PrintWriter out = res.getWriter();
40 out.println("<p>Welcome,"+userName+"</p>");
41 out.close();
42 }
43
44 }
三.Servlet运行原理

四.请求方式
1.什么是请求方式
- 浏览器向服务器发送请求数据的方式
2.分类
- 请求方式有很多种,需掌握其中的2种:GET和POST
3.GET和POST请求的区别(*)
1)GET
- 采用路径传参
- 参数在传递的过程中可见,隐私性差
- 只能传递少量参数
所有默认的请求都是GET请求
2)POST
- 采用实体内容传参
- 参数在传递过程中不可见,隐私性好
- 传递的数据量不受限制
在form上加method="post"
4.使用建议
- 查询数据时建议用GET,因为往往查询条件不多
- 保存、提交数据时建议用POST,因为往往保存、提交的数据较多
五.乱码解决方案

处理请求乱码:1,2,3;处理响应乱码:res.setContentType("text/html;charset=utf-8")
六.查询员工案例

温壶月光当茶饮

浙公网安备 33010602011771号