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")

六.查询员工案例

posted @ 2017-04-24 00:49  等你,在雨中  阅读(647)  评论(0)    收藏  举报