Servlet(四):request和response对象
Request对象:
问题:
浏览器发起请求到服务器,会遵循HTTP协议将请求数据发送给服务器。 那么服务器接受到请求的数据改怎么存储呢?不但要存,而且要保证完成性。
解决:
使用对象进行存储,服务器每接受一个请求,就创建一个对象专门的存 储此次请求的请求数据。
实现:
request对象
解释:
服务器接收到浏览器的请求后,会创建一个Request对象,对象中 存储了此次请求相关的请求数据。服务器在调用 Servlet时会将创建的 Request对象作为实参传递给Servlet的方法,比如:service方法。
使用:
获取请求头数据
req.getMethod();//获取请求方式
req.getRequestURL();//获取请求URL信息
req.getRequestURI();//获取请求URI信息
req.getScheme();//获取协议
获取请求行数据
req.getHeader("键名");//返回指定的请求头信息
req.getHeaderNames();//返回请求头的键名的枚举集合
获取用户数据
req.getParameter("键名");//返回指定的用户数据
req.getParameterValues("键名");//返回同键不同值的请求数据(多选),返回的数组。
req.getParameterNames()//返回所有用户请求数据的枚举集合
注意:
request对象由tomcat服务器创建,并作为实参传递给处理请求的servlet的service方法。
public class RequestServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//获取请求头数据
//获取请求方式
String method = req.getMethod();
System.out.println(method);
//获取请求URL
StringBuffer url=req.getRequestURL();
System.out.println(url);
//获取URI
String uri=req.getRequestURI();
System.out.println(uri);
//获取协议
String h=req.getScheme();
System.out.println(h);
//获取请求行数据
//获取指定的请求行信息
String value=req.getHeader("aaa");
System.out.println(value);
//获取所有的请求行的键的枚举
Enumeration e = req.getHeaderNames();
while(e.hasMoreElements()){
String name=(String) e.nextElement();
String value2=req.getHeader(name);
System.out.println(name+":"+value2);
}
//获取用户数据
String name=req.getParameter("uname");
String pwd=req.getParameter("pwd");
System.out.println(name+":"+pwd);
//String fav=req.getParameter("fav");
String[] favs=req.getParameterValues("fav");
if(favs!=null){
for(String fav:favs){
System.out.println(fav);
}
}
//获取所有的用户请求数据的键的枚举集合---req.getParameterNames()
}
}
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");
public class ResponseServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//获取请求信息
//获取请求头
//获取请求行
//获取用户数据
//处理请求 //响应处理结果
//设置响应头
resp.setHeader("mouse", "two fly birds");
resp.setHeader("mouse", "bjsxt");
resp.addHeader("key", "thinkpad");
resp.addHeader("key", "wollo");
//设置响应编码格式
//resp.setHeader("content-type", "text/html;charset=utf-8");
//resp.setContentType("text/plain;charset=utf-8");
//resp.setContentType("text/xml;charset=utf-8");
resp.setContentType("text/html;charset=utf-8");
//设置响应状态吗
//resp.sendError(404, "this Method is not supported");
//设置响应实体
resp.getWriter().write("<b>今天天气真好,适合学习</b>"); }
}
请求乱码问题解决:
使用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的使用流程:
设置请求编码格式
设置响应编码格式
获取请求信息
处理请求信息
响应处理结果
Servlet(四):request和response对象的更多相关文章
- java web(三):ServletContext、session、ServletConfig、request、response对象
上一篇讲了Servlet: 1)什么是Servlet[servlet本身就是一种Java类,这种Java类提供了web形式的方法,只要实现了servlet接口的类,都是一种servlet资源.] 2) ...
- spring aop 获取request、response对象
在网上看到有不少人说如下方式获取: 1.在web.xml中添加监听 <listener> <listener-class> org. ...
- request与response对象.
request与response对象. 1. request代表请求对象 response代表的响应对象. 学习它们我们可以操作http请求与响应. 2.request,response体系结构. 在 ...
- request与response对象详述
request与response对象. 1. request代表请求对象 response代表的响应对象. 学习它们我们可以操作http请求与响应. 2.request,response体系结构. 在 ...
- springMVC中获取request和response对象的几种方式(RequestContextHolder)
springMVC中获取request和response对象的几种方式 1.最简单方式:参数 2.加入监听器,然后在代码里面获取 原文链接:https://blog.csdn.net/weixin_4 ...
- Servlet之Request和Response 解析
原理 tomcat服务器会根据请求url中的资源路径,创建对应的Servlet的对象 tomcat服务器.会创建request和response对象,request对象中封装请求消息数据. tomca ...
- Request和Response对象
Request 和 Response 对象起到了服务器与客户机之间的信息传递作用.Request 对象用于接收客户端浏览器提交的数据,而 Response 对象的功能则是将服务器端的数据发送到客户端浏 ...
- 【转】Django中的request与response对象
关于request与response 前面几个 Sections 介绍了关于 Django 请求(Request)处理的流程分析,我们也了解到,Django 是围绕着 Request 与 Respon ...
- SpringMvc4中获取request、response对象的方法
springMVC4中获取request和response对象有以下两种简单易用的方法: 1.在control层获取 在control层中获取HttpServletRequest和HttpServle ...
- springboot的junit4模拟request、response对象
关键字: MockHttpRequest.Mock测试 问题: 在模拟junit的request.response对象时,会报如下空指针异常. 处理方法: 可用MockHttpServletReque ...
随机推荐
- Magento2 Service contracts 服务合同
服务合同 Magento是一个模块化系统,它使第三方开发人员能够定制和覆盖其框架的核心部分.然而,这种灵活性是有代价的. 业务逻辑倾向于泄漏Magento系统的各个层,这表现为重复且不一致的代码. 商 ...
- GO语言系列(四)- 内置函数、闭包与高级数据类型
一.内置函数.递归函数.闭包 内置函数 1. close:主要用来关闭channel 2. len:用来求长度,比如string.array.slice.map.channel 3. new:用来分配 ...
- python Django cookie和session
在一个会话的多个请求中共享数据,这就是会话跟踪技术.例如在一个会话中的请求如下: 请求银行主页: 请求登录(请求参数是用户名和密码): 请求转账(请求参数与转账相关的数据): 请求信誉卡还款(请求参 ...
- Maven 学习总结(三) 之 依赖管理
聚合 为了要一次构建多个项目,而不是到每个模块目录下分别执行mvn命令.maven聚合这一特性就是为该需求服务的.为此我们需要创建一个额外的模块aggregator, 然后通过该模块构建整个项目的所有 ...
- 微信小程序 mpvue vant
Mpvue中使用Vant Weapp组件库 https://segmentfault.com/a/1190000016228410?utm_source=tag-newest 小程序采坑记 mpvue ...
- C#使用ServiceStack读写Redis
通过C#第三方库向Redis存储数据遇到的几个问题 https://github.com/ServiceStack/ServiceStack.Redis 1.将对象转json字符串 JsonObjec ...
- Scrapy 入门
Scrapy https://docs.scrapy.org/en/latest/intro/overview.html Scrapy is an application framework for ...
- python,可变对象,不可变对象,深拷贝,浅拷贝。
学习整理,若有问题,欢迎指正. python 可变对象,不可变对象 可变对象 该对象所指定的内存地址上面的值可以被改变,变量被改变后,其所指向的内存地址上面的值,直接被改变,没有发生复制行为,也没有发 ...
- Contest2158 - 2019-3-14 高一noip基础知识点 测试3 题解版
传送门 预计得分:0 实际得分:90 还行 T1 数学卡精 二分double卡精 反正就是卡精 怎么办?卡回去!! 将double*=1e4,变成一个long long 注意四舍五入的奇技淫巧 代码 ...
- 【ARTS】01_21_左耳听风-201900401~201900407
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...