HttpServletResponse

一、HttpServletResponse应用

1,使用OutputStream流向客户端浏览器输出中文数据;

String data = "中国";
OutputStream outputStream = response.getOutputStream();//获取OutputStream输出流
response.setHeader("content-type", "text/html;charset=UTF-8");//通过设置响应头控制浏览器以UTF-8的编码显示数据,如果不加这句话,那么浏览器显示的将是乱码
        /**
         * data.getBytes()是一个将字符转换成字节数组的过程,这个过程中一定会去查码表,
         * 如果是中文的操作系统环境,默认就是查找查GB2312的码表,
         * 将字符转换成字节数组的过程就是将中文字符转换成GB2312的码表上对应的数字
         * 比如: "中"在GB2312的码表上对应的数字是98
         *         "国"在GB2312的码表上对应的数字是99
         */
        /**
         * getBytes()方法如果不带参数,那么就会根据操作系统的语言环境来选择转换码表,如果是中文操作系统,那么就使用GB2312的码表
         */
byte[] dataByteArr = data.getBytes("UTF-8");//将字符转换成字节数组,指定以UTF-8编码进行转换
outputStream.write(dataByteArr);//使用OutputStream流向客户端输出字节数组

2,使用PrintWriter流向客户端浏览器输出中文数据;

PrintWriter out = response.getWriter();//获取PrintWriter输出流
response.getWriter().write("<meta http-equiv=‘content-type‘ content=‘text/html;charset=UTF-8‘/>");

3,文件下载;

文件下载功能是web开发中经常使用到的功能,使用HttpServletResponse对象就可以实现文件的下载

文件下载功能的实现思路:

  1.获取要下载的文件的绝对路径

  2.获取要下载的文件名

  3.设置content-disposition响应头控制浏览器以下载的形式打开文件

  4.获取要下载的文件输入流

  5.创建数据缓冲区

  6.通过response对象获取OutputStream流

  7.将FileInputStream流写入到buffer缓冲区

  8.使用OutputStream将缓冲区的数据输出到客户端浏览器

4,生成随机图片用作验证码;

5,设置响应头控制浏览器的行为;

  • 设置http响应头控制浏览器禁止缓存当前文档内容
    response.setDateHeader("expries", -1);
    response.setHeader("Cache-Control", "no-cache");
    response.setHeader("Pragma", "no-cache")
  • 设置http响应头控制浏览器定时刷新网页(refresh)
    response.setHeader("refresh", "5");//设置refresh响应头控制浏览器每隔5秒钟刷新一次
  • 通过response实现请求重定向

    请求重定向指:一个web资源收到客户端请求后,通知客户端去访问另外一个web资源,这称之为请求重定向。

      应用场景:用户登陆,用户首先访问登录页面,登录成功后,就会跳转到某个页面,这个过程就是一个请求重定向的过程

      实现方式:response.sendRedirect(String location),即调用response对象的sendRedirect方法实现请求重定向
      sendRedirect内部的实现原理:使用response设置302状态码和设置location响应头实现重定向

    response.sendRedirect("/JavaWeb_HttpServletResponse_Study_20140615/index.jsp")

二、web工程中URL地址的推荐写法

在JavaWeb开发中,只要是写URL地址,那么建议最好以"/"开头,也就是使用绝对路径的方式,那么这个"/"到底代表什么呢?可以用如下的方式来记忆"/":如果"/"是给服务器用的,则代表当前的web工程,如果"/"是给浏览器用的,则代表webapps目录。

1、"/"代表当前web工程的常见应用场景

①.ServletContext.getRealPath(String path)获取资源的绝对路径

/**
* 1.ServletContext.getRealPath("/download/1.JPG")是用来获取服务器上的某个资源,
* 那么这个"/"就是给服务器用的,"/"此时代表的就是web工程
 * ServletContext.getRealPath("/download/1.JPG")表示的就是读取web工程下的download文件夹中的1.JPG这个资源
* 只要明白了"/"代表的具体含义,就可以很快写出要访问的web资源的绝对路径
*/
this.getServletContext().getRealPath("/download/1.JPG")

②.在服务器端forward到其他页面

/**
* 2.forward
* 客户端请求某个web资源,服务器跳转到另外一个web资源,这个forward也是给服务器用的,
* 那么这个"/"就是给服务器用的,所以此时"/"代表的就是web工程
*/
this.getServletContext().getRequestDispatcher("/index.jsp").forward(request, response)

③.使用include指令或者<jsp:include>标签引入页面

<%@include file="/jspfragments/head.jspf" %>
<jsp:include page="/jspfragments/demo.jsp" />

  此时"/"代表的都是web工程。

详见:

http://www.cnblogs.com/xdp-gacl/p/3789624.html

http://www.cnblogs.com/xdp-gacl/p/3791993.html

注:感谢孤傲苍狼

时间: 2024-11-14 07:35:37

HttpServletResponse的相关文章

HttpServletResponse和HttpServletRequest详解

HttpServletResponse,HttpServletRequest详解 1.相关的接口 HttpServletRequest HttpServletRequest接口最常用的方法就是获得请求中的参数,这些参数一般是客户端表单中的数据.同时,HttpServletRequest接口可以获取由客户端传送的名称,也可以获取产生请求并且接收请求的服务器端主机名及IP地址,还可以获取客户端正在使用的通信协议等信息.下表是接口HttpServletRequest的常用方法. 说明:HttpServ

HttpServletResponse与HttpServletRequest

编码问题的原则 英文字母不会出现乱码问题,所有的编码表都包含Unicode编码表 字符流=字节流+编码表 使用tomcat服务器时,默认使用tomcat默认编码表 tomcat6.x tomcat7.x 默认全是ISO-8859-1 tomcat8.x默认使用UTF-8 在jsp编程中,getByte();默认使用ANSI 本地编码表GBK getByte()中有带有编码表的构造,可以指定字符通过什么编码返回byte数组 HTTPServletResponse getOutputStream和g

java web给手机端写接口HttpServletRequest ,HttpServletResponse

前言: 作为一名android开发人员,网络数据都是web开发人员提供,每次让他们写一个接口都跟求神拜佛一样,与其求别人还不如自己动手,这是八百年前写的word,今天把它记在csdn,防止以后忘记还可以看看. 1.接口的数据源来自于数据库.(这里没办法提供方法教你怎么查数据,自己去网站上学吧,我觉得挺不错的) http://www.w3school.com.cn/sql/sql_wildcards.asp 2.我所写接口的框架是structs+spring+ibatis,要会接口首先要学会这三个

JAVAWEB开发之HttpServletResponse和HttpServletRequest详解(下)(各种乱码、验证码、重定向和转发)

HttpServletRequest获取请求头信息 (1)获取客户机请求头 String getHeader(String name) Enumeration<String> getHeaders(String name) Enumeration<String> getHeaderNames() (2)获取具体类型客户机请求头 int  getIntHead(String name) long getDateHead(String name) 日期对应毫秒 (3)常见的请求头 re

java HttpServletRequest和HttpServletResponse詳解

這篇文章主要介紹瞭java HttpServletRequest和HttpServletResponse詳解的相關資料,需要的朋友可以參考下 最近由於CAS相關的JAR包的重新封裝,所以想盡量做到0配置,而這個過程中大量使 用HttpServletRequest,現在整理如下,以便以後查閱.(表格為從別的地方復制的,排版渣瞭點,酬和看吧.) 請求與響應相關的類和接口非常多,下表是主要的與請求和接口相關的類以及接口. 主要的與請求和接口相關的類及接口 方法 說明 ServletInputStrea

深入分析JavaWeb Item7 -- HttpServletResponse详解

Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象.request和response对象即然代表请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就行了.要向客户机输出数据,只需要找response对象就行了. 一.HttpServletResponse对象介绍 HttpServletResponse对象代表服务器的响应.这个对象中封装了向客户端发送数据.发送响应头,发送响应状态码的方法.查

Maven项目下HttpServletRequest 或 HttpServletResponse需引用的依赖包

转载: http://xyly624.blog.51cto.com/842520/865630/ Maven项目下HttpServletRequest 或 HttpServletResponse需引用的依赖包:servlet-api.jar,并将scope设置为provided. pom.xml: <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifac

关于Servlet中的HttpServletRequest和HttpServletResponse

1.HttpServletRequest 方    法 说    明 getAttributeNames() 返回当前请求的所有属性的名字集合 getAttribute(String name) 返回name指定的属性值 getCookies() 返回客户端发送的Cookie getsession() 返回和客户端相关的session,如果没有给客户端分配session,则返回null getsession(boolean create) 返回和客户端相关的session,如果没有给客户端分配s

servlet中的HttpServletRequest,HttpServletResponse对象以及service 和 doXX方法区别

一:HttpServletRequest对象作用是用于获取请求数据. 核心的API: 请求行: request.getMethod(); 请求方式 request.getRequetURI() / request.getRequetURL() 请求资源 request.getProtocol() 请求http协议版本 请求头: request.getHeader("名称") 根据请求头获取请求值 request.getHeaderNames() 获取所有的请求头名称 实体内容: req

Springmvc ModelAndView踩过的坑之HttpServletResponse response

先抛出问题.以下两个方法声明有毛区别: @RequestMapping(value = "/rg")     public void rg(@PathVariable Long pageId, @PathVariable Long moduleId) {         Map<String, Object> result = new HashMap<String, Object>();         result.put("what",