静海县建设局网站,WordPress长文章索引插件,网站建设 技术 哪些内容,下载教学设计的网站使用Servlet发送服务器端响应信息 Servlet API中定义一个专门的接口类javax.servlet.http.HttpServletResponse用于创建HTTP响应#xff0c;包括HTTP协议的状态行、响应头以及消息体#xff1b; HTTP响应示例 设置响应状态行 - 状态行分为HTTP协议、状态码和状态描述三个部分… 使用Servlet发送服务器端响应信息 Servlet API中定义一个专门的接口类javax.servlet.http.HttpServletResponse用于创建HTTP响应包括HTTP协议的状态行、响应头以及消息体 HTTP响应示例 设置响应状态行 - 状态行分为HTTP协议、状态码和状态描述三个部分 - 状态描述与状态码直接相关 - HTTP协议由服务器确定 - 通过设置状态码来实现许多重要功能可以把用户重定向到另一个网站可以指示附加的文档是图片、PDF或HTML…… HTTP状态码 100-199表示信息性代码标示客户端应该采取的其他动作请求正在进行。 200-299表示客户请求成功。 300-399表示用于已经移走的资源文件指示新的地址。 400-499表示由客户端引发的错误。 500-599表示由服务器端引发的错误。 设置状态码 - 使用HttpServletResponse的setStatus()方法 //setStatus方法的参数是一个整数 //使用HttpServletResponse中的常量setStatus(HttpServletResponse.SC_NOT_FOUND ); - 设置状态代码返回描述信息 response设置状态码为404 未找到文件web服务器返回404应答 HTTP的响应信息是由状态行、响应头、空行和消息体内容文档按照次序组成并以流的方式向浏览器发送的。 HTTP响应信息按次序组成并向浏览器发送数据流 提示在Servlet规范中没有规定Servlet必须缓存消息体因而要在使用PrintWriter输出消息体前设置状态码。 HttpServletResponse为两种常见的情形提供了专用的方法 - sendError方法 public void sendError(int code,String message) 该方法生成一个404应答同时生成一个简短的HTML错误信息文档发生给客户。 response.sendError(404,路径错误); sendError结果示意图 -sendRedirect方法 Public void sendRedirect(String url) 该方法生成一个302应答同时在Location头中指示新文档的URL路径类似a标签跳转效果会产生两次请求和响应。 设置响应头 HttpServletResponse对象用于操纵响应的HTTP头 - containsHeader(String name):返回一个布尔值指示是否设置了指定的响应头。 - setHeader(String name,String value):用一个给定的名称和字符串设置响应头的通用方式。如果响应头已经被设置新的值将覆盖当前的值。在设置值之前可以用containsHeader判断头是否存在 - setIntHeader(String name,int value):用一个给定的名称和整型值设置响应头。如果响应头已经被设置新的值将覆盖当前的值。在设置值之前可以用containsHeader判断头是否存在 - setDateHeader(String name,long date): 用一个给定的名称和日期值设置响应头。这里的日期值应该是反映自1970-1-1日GMT以来的精确到毫秒的长整型。如果响应头已经被设置新的值将覆盖当前的值。在设置值之前可以用containsHeader判断头是否存在 - addHeader(String name,String value):在response中添加一个给定名称和字符串值的响应头而不管是否已经存放在同名的响应头。该方法允许响应头有多个值。 - addIntHeader(String name,intvalue):在response中添加一个给定名称和整型值的响应头。该方法允许响应头有多个值。 - addDateHeader(String name,long value):在response中添加一个给定名称和日期值设置响应头。这里的日期值应该是反映自1970-1-1日GMT以来的精确到毫秒的长整型。该方法允许响应头有多个值。 - setContentType(String mimeType):用于设置返回给客户端内容内容的MIME类型。 - addCookie(Cookie cookie):用于向set-Cookie插入一个Cookie。由于在HTTP响应中会存在多个Set-Cookie行所以没有对应的setCookie方法。 目的用于告诉客户端 - 发送回来的内容的类型 - 有多少内容正被发送 - 发送内容的服务器的类型 设置响应消息体 - HttpServletResponse对象负责将信息返回给客户端 - HttpServletResponse对象只产生一个空的HTTP响应 - 传回自定义的内容需要使用getWriter()或者getOutputStream()方法 - getWriter()传送普通文本 - getOutputStream()传送二进制内容 传递文本流 getWriter()方法用于得到一个输出流 PrintWriter out response.getWriter();//与写HTML一样不过需要println和print方法去拼写out.println(html);out.println(head);out.println(titleHello World!/title”);out.println(/html);out.println(/head); 传递二进制流 getOutputStream()方法可以对发送到客户端的信息进行更多控制 该方法返回javax.servlet. ServletOutputStream对象 ServletOutputStream允许开发者写原始字节 OutputStream比使用PrinterWriter发送文本效率更高 可以动态地创建任何形式的数字内容 package com.java.downLoad; import java.io.IOException; import java.io.InputStream; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class DownLaod */ public class DownLaod extends HttpServlet { private static final long serialVersionUID 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取文件名字 String filename request.getParameter(filename); //设置文件MIME类型 ServletContext sc this.getServletContext(); response.setContentType(sc.getMimeType(filename)); //设置Content-Disposition名字为当前时间毫秒数 InputStream fiels null; response.setHeader(Content-Disposition, attachment;filenameSystem.currentTimeMillis()); //获取文件并且转化为流 fiels sc.getResourceAsStream(/downLoad/filename); //传输流 ServletOutputStream out response.getOutputStream(); byte[] buf new byte[1024]; int length 0; while((lengthfiels.read(buf))!-1){ out.write(buf, 0 ,length); } //关闭流 if(out!null){ out.close(); out.flush(); } if(fiels!null){ fiels.close(); } } } 设置请求重定向 - 可以选择别的服务器端程序来处理请求 - 把请求重定向到一个完全不同的URL上 重定向原理 浏览器发送HTTP请求 Servlet把302响应码和Location响应头发送给客户端和浏览器 浏览器根据Location头中新的URL重新发出HTTP请求 设置自动刷新和等待页 - 在指定时间内自动刷新当前页或到一个新的页面 - 根据时间来控制响应 - 想在响应中有一个短时间的暂停 response.setHeader(Refresh, time; URLurl ); 转载于:https://www.cnblogs.com/HackerBlog/p/5949049.html