HttpServletResponse 类
Posted 一个风轻云淡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HttpServletResponse 类相关的知识,希望对你有一定的参考价值。
a)HttpServletResponse 类的作用
HttpServletResponse 类和 HttpServletRequest 类一样。每次请求进来,Tomcat 服务器都会创建一个 Response 对象传 递给 Servlet 程序去使用。HttpServletRequest 表示请求过来的信息,HttpServletResponse 表示所有响应的信息,
我们如果需要设置返回给客户端的信息,都可以通过 HttpServletResponse 对象来进行设置
b)两个输出流的说明。
字节流 getOutputStream(); 常用于下载(传递二进制数据)
字符流 getWriter(); 常用于回传字符串(常用)
两个流同时只能使用一个。
使用了字节流,就不能再使用字符流,反之亦然,否则就会报错。
c)如何往客户端回传数据
public class Responseioservlet extends HttpServlet
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException
// 要求 : 往客户端回传 字符串 数据。
PrintWriter writer = resp.getWriter();
writer.write("response's content!!!");
d)响应的乱码解决
解决响应中文乱码方案一(不推荐使用):
// 设置服务器字符集为 UTF-8
resp.setCharacterEncoding("UTF-8");
// 通过响应头,设置浏览器也使用 UTF-8 字符集
resp.setHeader("Content-Type", "text/html; charset=UTF-8");
解决响应中文乱码方案二(推荐):
// 它会同时设置服务器和客户端都使用 UTF-8 字符集,还设置了响应头
// 此方法一定要在获取流对象之前调用才有效
resp.setContentType("text/html; charset=UTF-8");
e)请求重定向
请求重定向,是指客户端给服务器发请求,然后服务器告诉客户端说。我给你一些地址。你去新地址访问。叫请求 重定向(因为之前的地址可能已经被废弃)
请求重定向的第一种方案:
// 设置响应状态码 302 ,表示重定向,(已搬迁)
resp.setStatus(302);
// 设置响应头,说明 新的地址在哪里
resp.setHeader("Location", "http://localhost:8080");
请求重定向的第二种方案(推荐使用):
resp.sendRedirect("http://localhost:8080");
HelloServlet类继承HttpServlet利用HttpServletResponse对象
HelloServlet类继承HttpServlet利用HttpServletResponse对象
HelloServlet类的doGet()方法先得到username请求参数,对其进行中文字符编码转换,然后判断username是否为空,如果为空就返回403响应状态代码,否则就通过HttpServletResponse对象的getWriter()方法得到一个PrinterWriter对象,然后通过PrintWriter对象来输出HTML文档
HelloServlet.java
package com.demo.servlet;
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; /* Created by 谭雪娇 on 2017/4/5. */ public class HelloServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{ //获得sername的请求参数 String username=request.getParameter("username"); /*字符编码转换 * HTTP请求的默认字符编码为ISO-8859-1,如果请求中包含中文需要把它转换为GB2312中文编码。*/ if(username!=null){ username=new String(username.getBytes("ISO-8859-1"),"UTF-8"); if(username==null){ response.sendError(response.SC_FORBIDDEN); return; } //设置HTTP响应的正文的MIME类型及字符编码 response.setContentType("text/html;charset=UTF-8"); /*输出HTML文档*/ PrintWriter out=response.getWriter(); out.println("<html><head><title>HelloServlet</title><head>"); out.println("<body>"); out.println("你好:"+username); out.println("</body></html>"); System.out.println("before close():"+response.isCommitted()); out.close(); System.out.println("before close():"+response.isCommitted()); } } }
|
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>com.demo.servlet.RequestInfoServlet</servlet-class>
</servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/info</url-pattern> </servlet-mapping> <servlet> <servlet-name>dispatcher1</servlet-name> <servlet-class>com.demo.servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>dispatcher1</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>
|
运行结果
Tomcat所在控制台结果
浏览器结果:
以上是关于HttpServletResponse 类的主要内容,如果未能解决你的问题,请参考以下文章
Servlet进阶4(HttpServletResponse 类)
Java Web HttpServlet
HttpServletResponse 工具类
HttpServletResponse类
HelloServlet类继承HttpServlet利用HttpServletResponse对象
HttpServletResponse类