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对象的更多相关文章

  1. java web(三):ServletContext、session、ServletConfig、request、response对象

    上一篇讲了Servlet: 1)什么是Servlet[servlet本身就是一种Java类,这种Java类提供了web形式的方法,只要实现了servlet接口的类,都是一种servlet资源.] 2) ...

  2. spring aop 获取request、response对象

    在网上看到有不少人说如下方式获取: 1.在web.xml中添加监听 <listener>          <listener-class>              org. ...

  3. request与response对象.

    request与response对象. 1. request代表请求对象 response代表的响应对象. 学习它们我们可以操作http请求与响应. 2.request,response体系结构. 在 ...

  4. request与response对象详述

    request与response对象. 1. request代表请求对象 response代表的响应对象. 学习它们我们可以操作http请求与响应. 2.request,response体系结构. 在 ...

  5. springMVC中获取request和response对象的几种方式(RequestContextHolder)

    springMVC中获取request和response对象的几种方式 1.最简单方式:参数 2.加入监听器,然后在代码里面获取 原文链接:https://blog.csdn.net/weixin_4 ...

  6. Servlet之Request和Response 解析

    原理 tomcat服务器会根据请求url中的资源路径,创建对应的Servlet的对象 tomcat服务器.会创建request和response对象,request对象中封装请求消息数据. tomca ...

  7. Request和Response对象

    Request 和 Response 对象起到了服务器与客户机之间的信息传递作用.Request 对象用于接收客户端浏览器提交的数据,而 Response 对象的功能则是将服务器端的数据发送到客户端浏 ...

  8. 【转】Django中的request与response对象

    关于request与response 前面几个 Sections 介绍了关于 Django 请求(Request)处理的流程分析,我们也了解到,Django 是围绕着 Request 与 Respon ...

  9. SpringMvc4中获取request、response对象的方法

    springMVC4中获取request和response对象有以下两种简单易用的方法: 1.在control层获取 在control层中获取HttpServletRequest和HttpServle ...

  10. springboot的junit4模拟request、response对象

    关键字: MockHttpRequest.Mock测试 问题: 在模拟junit的request.response对象时,会报如下空指针异常. 处理方法: 可用MockHttpServletReque ...

随机推荐

  1. Magento2 Service contracts 服务合同

    服务合同 Magento是一个模块化系统,它使第三方开发人员能够定制和覆盖其框架的核心部分.然而,这种灵活性是有代价的. 业务逻辑倾向于泄漏Magento系统的各个层,这表现为重复且不一致的代码. 商 ...

  2. GO语言系列(四)- 内置函数、闭包与高级数据类型

    一.内置函数.递归函数.闭包 内置函数 1. close:主要用来关闭channel 2. len:用来求长度,比如string.array.slice.map.channel 3. new:用来分配 ...

  3. python Django cookie和session

    在一个会话的多个请求中共享数据,这就是会话跟踪技术.例如在一个会话中的请求如下:  请求银行主页: 请求登录(请求参数是用户名和密码): 请求转账(请求参数与转账相关的数据): 请求信誉卡还款(请求参 ...

  4. Maven 学习总结(三) 之 依赖管理

    聚合 为了要一次构建多个项目,而不是到每个模块目录下分别执行mvn命令.maven聚合这一特性就是为该需求服务的.为此我们需要创建一个额外的模块aggregator, 然后通过该模块构建整个项目的所有 ...

  5. 微信小程序 mpvue vant

    Mpvue中使用Vant Weapp组件库 https://segmentfault.com/a/1190000016228410?utm_source=tag-newest 小程序采坑记 mpvue ...

  6. C#使用ServiceStack读写Redis

    通过C#第三方库向Redis存储数据遇到的几个问题 https://github.com/ServiceStack/ServiceStack.Redis 1.将对象转json字符串 JsonObjec ...

  7. Scrapy 入门

    Scrapy https://docs.scrapy.org/en/latest/intro/overview.html Scrapy is an application framework for ...

  8. python,可变对象,不可变对象,深拷贝,浅拷贝。

    学习整理,若有问题,欢迎指正. python 可变对象,不可变对象 可变对象 该对象所指定的内存地址上面的值可以被改变,变量被改变后,其所指向的内存地址上面的值,直接被改变,没有发生复制行为,也没有发 ...

  9. Contest2158 - 2019-3-14 高一noip基础知识点 测试3 题解版

    传送门 预计得分:0 实际得分:90 还行 T1 数学卡精 二分double卡精 反正就是卡精 怎么办?卡回去!! 将double*=1e4,变成一个long long 注意四舍五入的奇技淫巧 代码 ...

  10. 【ARTS】01_21_左耳听风-201900401~201900407

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...