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的使用流程
- 设置请求编码格式
- 设置响应编码格式
- 获取请求信息
- 处理请求信息
- 响应处理结果
数据流转流程
浏览器——>服务器——->数据库
浏览器<——服务器<——-数据库