了解这方面的知识可以查看以下博客
 

1.掌握HttpServletRequest与HttpServletResponse的概述

我们在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和代表响应response。
service方法中的request的类型是ServletRequest,response的类型是ServletResponse

doGet/doPost方法的request的类型是HttpServletRequest,response的类型是HttpServletResponse,他们都是ServletRequest,ServletResponse的子接口,功能更加强大。

2.掌握抓包工具的使用

3.了解HttpServletRequest与HttpServletResponse的请求行,请求头,请求体

3.1:HttpServletRequest的请求行请求头请求体

比如抓取request请求:掌握post或者get提交的区别,了解request请求行请求头请求体有哪些重要的key和对应的api

比如请求行

String getContextPath() ---web应用的名称(常用)

比如请求头

String getHeader(String name)

Refer头的作用是用来做防盗链的,获取访问的来源

比如请求体 掌握request与表单获取有关的方法的使用

String getParameter(String name)

String[] getParameterValues(String name)

Enumeration getParameterNames()

Map<String,String[]> getParameterMap() 很好用!!!!与框架一起使用

掌握解决获取表单数据乱码的解决方案

解决post提交方式的乱码:request.setCharacterEncoding("UTF-8");

解决get提交的方式的乱码: parameter = new String(parameter.getbytes("iso8859-1"),"utf-8");

3.2:HttpServletResponse的请求行请求头请求体

了解响应行响应头响应体有哪些重要的Key和value,重点掌握几个设置响应行响应头响应体的api的使用

掌握常见的状态码有哪些和代表什么意思:200,404,500,302,

设置响应行的状态码

setStatus(int sc),如果你手动设置了的话,tomcat那边就不会在帮你设置了

设置响应头

  • addHeader(String name, String value)
  • addIntHeader(String name, int value) :有些头的值要求设置时是int类型的
  • addDateHeader(String name, long date):比如有个头  date: "Thu, 09 Nov 2017 07:32:09 GMT"
  • setHeader(String name, String value)
  • setDateHeader(String name, long date)
  • setIntHeader(String name, int value)

设置响应体文本:

PrintWriter getWriter()

获得字符流,通过字符流的write(String s)方法可以将字符串设置到response缓冲区中,随后Tomcat会将response缓冲区中的内容组装成Http响应返回给浏览器端。

解决中文输出乱码的问题:

原因:response缓冲区的默认编码是iso8859-1,此码表中没有中文,可以通过response的setCharacterEncoding(String charset) 设置response的编码

但是我们发现还是客户端还是不能正常显示文字。

原因:我们将response缓冲区的编码设置成UTF-8,但浏览器的默认编码是本地系统的编码,因为我们都是中文系统,所以客户端浏览器的默认编码是GBK,我们可以 手动修改浏览器的编码是UTF-8。

我们还可以在代码中指定浏览器解析页面的编码方式

通过response的setContentType(String type)方法指定页面解析时的编码是UTF-8

response.setContentType("text/html;charset=UTF-8");

在实际开发中只要编写 response.setContentType("text/html;charset=UTF-8");即可解决

4.掌握HttpServletRequest与HttpServletResponse的运行流程

5.掌握转发与重定向的区别

转发的api:

 request.getRequestDispatcher(转发的地址).forward(req,resp);

重定向的api:

HttpServletResponse(httpServletResponse).sendRedirect();

转发是服务器行为比如servlet1没有这个资源但是知道servlet2有于是转发到servlet2进行获取。url地址栏不会发生改变,浏览器只做了一次访问请求

重定向是比如你在某个商城注册成功就给你重定向到登陆页面去,url地址栏会发生改变,浏览器至少做了两次请求。重定向之后之前的数据全部丢失(request域的作用范围所限),而转发不会。

总的来说,转发的性能优于重定向,因为少让浏览器跳来跳去了,但是使用哪个根据实际场景分析。

使用转发与重定向目标地址的写法:

因为转发只能在服务器之间进行:可以直接写目标地址比如   request.getRequestDispatcher("/login.jsp").forward(request, response);

重定向是可以在不同站点之间进行跳转的,所以必须加上当前web应用的名称比如    response.sendRedirect(request.getContextPath() + "/login.jsp");

6.其他

request是一个域对象:其作用范围为一次请求中,具有下列三个通用的api

request.setAttribute(name,value)

request.getAttribute(name)

request.removeAttribute(name)

7.ServeletContext域与Request域比较

ServletContext

  创建:服务器启动

  销毁:服务器关闭

  域的作用范围:整个web应用

request

  创建:访问时创建request

  销毁:响应结束request销毁

  域的作用范围:一次请求中

Servlet中的request与response的更多相关文章

  1. JavaWeb(一)Servlet中的request与response

    一.HttpServletRequest概述 1.1.HttpServletRequest简介 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP ...

  2. servlet中的request和response

    request对象 1.什么是请求 a.浏览器向服务器发送数据就是请求. 一.request功能1--获取数据 1.获取浏览器相关的信息 getRequestURL方法 -- 返回客户端发出请求完整U ...

  3. JSP Servlet中的Request和Response的简单研究

    本文参考了几篇文章所得,参考目录如下: 1.http://www.cnblogs.com/guangshan/p/4198418.html 2.http://www.iteye.com/problem ...

  4. 【转载】Servlet中的request与response

      一.HttpServletRequest概述   1.1.HttpServletRequest简介 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时, ...

  5. struts2中获取request、response,与android客户端进行交互(文件传递给客户端)

    用struts2作为服务器框架,与android客户端进行交互需要得到request.response对象. struts2中获取request.response有两种方法. 第一种:利用Servle ...

  6. 此时servlet中的request和我们在页面jsp中的request 是同一个request.

    在tomcat容器启动的时候,jsp页面的内置对象request,response,同样是依赖于tomcat容器中的servlet-api.jar包,这个jar包和我们在web项目中的jar包是一样的 ...

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

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

  8. LoadRunner中取Request、Response

    LoadRunner中取Request.Response LoadRunner两个“内置变量”: 1.REQUEST,用于提取完整的请求头信息. 2.RESPONSE,用于提取完整的响应头信息. 响应 ...

  9. Django中的Request和Response

    接触Django这么久了,从来没有好好学习关于Django中的Request和Response对象.借着文件上传下载的相关工作,现在总结一下也不错. 当一个页面请求过来,Django会自动创建一个Re ...

随机推荐

  1. WPF,强制捕获鼠标事件,鼠标移出控件外依然可以执行强制捕获的鼠标事件

    在WPF中,只有鼠标位置在某个控件上的时候才会触发该控件的鼠标事件.例如,有两个控件都注册了MouseDown和MouseUp事件,在控件1上按下鼠标,不要放开,移动到控件2上再放开.在这个过程中,控 ...

  2. Java中的方法重载与方法重写

    重载(overload) 重载是在一个类中,同名方法拥有不同的参数列表则视为重载.不同的参数列表包括:参数数量不同,参数类型不同,参数顺序不同.重载对于返回类型没有要求,所以不能通过返回类型去判断是否 ...

  3. 详解margin: auto

    auto是margin的可选值之一.相信大家平时使用auto值时,最多的用法大概是 margin: 0 auto; 和 margin: auto; 不过你可能也发现了不论是 margin: auto; ...

  4. 我是这样搞懂一个神奇的BUG

    摘要: 通过分析用户的行为,才想得到为什么会出现这种情况! 前两天在BearyChat收到这样的一个报警消息: 409 ?Conflict ? 平时很少遇到这样的错误,貌似很严重的样子,吓得我赶紧查看 ...

  5. Eslint使用(webpack中使用)

    一.安装 npm i -D eslint npm i babel-eslint \ eslint-config-airbnb \ // Airbnb的编码规范是在业界非常流行的一套规范 eslint- ...

  6. IIS服务器被配置为不列出此目录的内容

    使用 IIS 管理器启用目录浏览. 打开 IIS 管理器. 在“功能”视图中,双击“目录浏览”. 在“目录浏览”页上,在“操作”窗格中单击“启用”.

  7. Django-Oscar小记:如何使用高版本Django开发网页的SEO模块

    在使用Google搜索Django的SEO插件时,很多插件都没有更新到Python3.x,有的插件更新到了Python的高版本,但是不适用于Django的2.x. Django在升级到版本2.x的时候 ...

  8. 网络基础 记一次HTTPS证书验证测试过程

    记一次HTTPS证书验证测试过程 by:授客 QQ:1033553122 实践 1) 安装证书 选择主机A(假设10.202.95.88)上安装https证书 说明:采用https的服务器,必须安装数 ...

  9. Elasticsearch Query DSL

    Elasticsearch Query DSL By:授客 QQ:1033553122 1. match_all 1 2. match 2 3. match_phrase 5 4. match_phr ...

  10. 关于Linux安装Mono 3.4的bug

    网上可以找到中文的办法,但作者提供了一个完整版下载.麻烦再下载不说,安全问题也得不到保障.其实解决办法很简单. 问题描述:进入mono源码目录,配置后make,然后make install,但是提示缺 ...