Servlet基础-4
通过前面的学习我们能够创建并运行一个简单的Servlet 程序,完成浏览器和服务器的简单交互,但是我们编写的 Servlet代码是没有对浏览器的请求进行处理的。现在我们开始学习 如何使用Servlet进行浏览器请求的处理。
Request对象
问题: 浏览器发起请求到服务器,会遵循HTTP协议将请求数据发送给服务器。 那么服务器接受到请求的数据改怎么存储呢?不但要存,而且要保证完成性。
解决: 使用对象进行存储,服务器每接受一个请求,就创建一个对象专门的存 储此次请求的请求数据。
实现: request对象
解释: 服务器接收到浏览器的请求后,会创建一个Request对象,对象中 存储了此次请求相关的请求数据。服务器在调用Servlet时会将创建的 Request对象作为实参传递给Servlet的方法,比如:service方法。
- 使用- 获取请求头数据 - 获取请求方式:String method = req.getMethod();
- 获取请求URL:StringBuffer url = req.getRequestURL();
- 获取请求URI:String uri = req.getRequestURI();
- 获取协议:String h = req.getScheme();
 
- 获取请求行数据 - 获取指定的请求信息:String value =req.getHeader(“aaa”);
- 获取所有请求行的键的枚举1 
 2
 3
 4
 5
 6Enumeration e = req.getHeaderNames(); 
 while (e.hasMoreElements()) {
 String name = (String) e.nextElement();
 String value2 = req.getHeader(name);
 System.out.println(name+":"+value2);
 }
 
- 获取用户数据(get和post请求都可以,不能获取同键不同值多项数据的全部值)1 
 2
 3
 4
 5
 6
 7
 8
 9
 10String name = req.getParameter("uname"); 
 String pwd = req.getParameter("pwd");
 String [] favs = req.getParameterValues("fav");
 System.out.println(name+":"+pwd);
 //避免当fav不存在的时候,请求fav的值造成空指针异常
 if (favs!=null) {
 for (String fav : favs) {
 System.out.print(fav);
 }
 }
 
- 获取请求头数据 
Response对象
问题: 在使用Request对象获取了请求数据并进行处理后,处理的结果如何显 示到浏览器中呢?
解决: 使用Response对象
解释: 服务器在调用指定的Servlet进行请求处理的时候,会给Servlet的方 法传递两个实参request和response。其中request中封存了请求相关的请求数据,而response则是用来进行响应的一个对象.
- 使用:- 设置响应头- setHeader(String name,String value);—–在响应头中添加响应信息,但是同键会覆盖
- addHeader(String name,String value);—–在响应头中添加响应信息,但是不会覆盖。
 
- 设置响应状态- sendError(int num,String msg);—–自定义响应状态码。- 设置响应实体
 
- resp.getWrite().write(String str);响应具体的数据给浏览器- 设置响应编码格式:
 
- resp.setContentType(“text/html;charset=utf-8”);—-告诉浏览器用html格式来解析服务器响应的数据,并且字符集为utf-8.
 
- sendError(int num,String msg);—–自定义响应状态码。
 
- 设置响应头
请求乱码问题解决
- 使用String进行重新编码:uname=new String(uname.getBytes(“iso8859-1”),”utf-8”); 
- Get方式请求: 在service方法中使用: req.setCharacterEncoding(“utf-8”);在tomcat服务器目录下的conf文件下找到server.xml文件,打开进 行如下配置:  
- Post方式请求: 在service方法中使用: req.setCharacterEncoding(“utf-8”); 
Servlet的使用流程
- 设置请求编码格式
- 设置响应编码格式
- 获取请求信息
- 处理请求信息
- 响应处理结果
数据流转流程
浏览器——>服务器——->数据库
浏览器<——服务器<——-数据库












