网站正在建设中提示页面设计欣赏第二章 营销型网站建设测验

当前位置: 首页 > news >正文

网站正在建设中提示页面设计欣赏,第二章 营销型网站建设测验,千万不要去做房地产销售,搜狗引擎网站收录文章目录Response 继承体系Response 设置响应数据设置响应行数据设置响应头数据设置响应体数据Response 重定向Response 响应字符数据Response 响应字节数据Response 继承体系 前面说到#xff0c;我们使用 Request 对象来获取请求数据#xff0c;使用 Response 对象来设置响… 文章目录Response 继承体系Response 设置响应数据设置响应行数据设置响应头数据设置响应体数据Response 重定向Response 响应字符数据Response 响应字节数据Response 继承体系 前面说到我们使用 Request 对象来获取请求数据使用 Response 对象来设置响应数据。如图 其实 Response 的继承体系和 Request 有很多相似的地方如图 Java 语言提供了响应对象根接口和封装了 HTTP 协议的响应对象接口两者都是接口并且两者属于继承关系。 Servlet 类中的 services() 方法doGet() 方法doPost() 等方法都是由 Web 服务器 TomCat 来调用的所以 TomCat 提供了方法参数接口的具体实现类并完成了对象的创建这个实现类就是 ResponseFacade 类。 学习 Response 对象主要从以下几个方面入手 Response 设置响应数据Response 完成重定向Response 响应字符数据Response 响应字节数据 Response 设置响应数据 HTTP 响应数据总共分为三部分内容分别是响应行响应头和响应体。通过对应的 API 就可以简单的实现设置响应数据的功能。 设置响应行数据 对于响应行的数据的设置主要是设置响应状态码如下 void setStatus(int sc);设置响应头数据 响应头的数据格式为 key : value 。Response 提供了方法设置响应头的键值对数据如下 void setHeader(String name,String value);设置响应体数据 对于响应体是通过字符字节输出流的方式往浏览器中写数据。 获取字符输出流 PrintWriter getWriter();获取字节输出流 ServletOutputStream getOutputStream();Response 重定向 Response 重定向也是一种资源的跳转方式与请求转发不同的是重定向时浏览器发送了两次请求所以浏览器地址栏的路径会发生变化并且我们可以重定向到任何位置的资源不管是服务器内部的还是外部的。 浏览器发送请求给服务器服务器中对应的资源 a 接收到了请求如果资源 a 无法处理该请求就会响应给浏览器一个 302 状态码和一个访问资源 b 的路径 location 。 浏览器接收到状态码 302 以后就会重新发送请求到 location 对应的访问地址其访问资源 b。资源 b 接收到了请求以后进行处理步最终给浏览器返回响应结果这一个过程就叫做重定向。 重定向的实现方式 response.setStatus(302); response.setHeader(location,资源b的访问路径);下面练习 Response 重定向。 创建一个 ResponseDemo1 类接收 /res1的请求在 doGet() 方法中打印 resp1…创建一个 ResponseDemo2 类接收 /res2 的请求在 doGet() 方法中打印 resp2…在 ResponseDemo1 的方法中实现重定向测试 第一步创建 ResponseDemo1 类 WebServlet(/resp1) public class ResponseDemo1 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(resp1…);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);} }第二步创建 ResponseDemo2 类 WebServlet(/resp2) public class ResponseDemo2 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(resp2…);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);} }第三步在 ResponseDemo1 类方法中实现重定向 //重定向 //1.设置响应状态码302 response.setStatus(302); //2.设置响应头 location response.setHeader(location,/servlet-project/resp2);第四步测试 启动服务器访问 http://location:8080/servlet-project/resp1此时控制台输出 这里 /resp1 和 /resp2 都被访问到了表示重定向成功了。其实 Response 还提供了一种更加简便的方式来实现重定向如下 resposne.sendRedirect(/servlet-project/resp2)Response 响应字符数据 服务器接收到浏览器发送的请求之后经过一系列的逻辑处理后就要发送响应给浏览器而把数据写回浏览器是十分重要的一部分我们一般使用输出流的方式将响应数据写回浏览器。 Response 对字符数据和字节数据的响应方式是不同的要想将字符数据写到浏览器需要完成下面两个步骤 获取字符输出流通过字符输出流写数据 下面练习将一个简单的字符串写到浏览器。 WebServlet(/demo) public class ServletDemo extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType(text/html;charsetutf-8);PrintWriter writer response.getWriter();writer.write(helloWorld);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);} }下面练习将一个 html 字符串返回给浏览器并且被浏览器解析。 PrintWriter writer response.getWriter(); //content-type 告诉浏览器返回的数据类型是HTML类型数据这样浏览器才会解析HTML标签 response.setHeader(content-type,text/html); writer.write(h1helloWorld/h1);注意返回的中文字符数据时要把字符编码方式设置为 utf-8。在一次请求结束后response 对象会被销毁所以这里的流对象不需要手动释放。 Response 响应字节数据 要想将字节数据写到浏览器只需要下面两个步骤 获取字节输出流对象通过字节输出流写数据 下面练习将一个图片文件写回到浏览器。 WebServlet(/demo) public class ResponseDemo extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1. 用于读取文件FileInputStream fis new FileInputStream(d://a.jpg);//2. 获取response字节输出流ServletOutputStream os response.getOutputStream();//3. 完成流的复制byte[] buff new byte[1024];int len 0;while ((len fis.read(buff))! -1){os.write(buff,0,len);}fis.close();}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);} }Java 的 IO 流操作是开发中比较常用的技术但是如果每次都使用原生的 IO 流来操作会显得比较繁琐。我们可以使用 commons-io 来简化操作commons-io 是一个工具包用来帮助 IO 功能的开发感兴趣的朋友可以去了解一下。 使用前我们要先往 pom.xml 配置文件中添加对应的依赖坐标。 dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion2.6/version /dependency此时将图片返回给浏览器的代码可以优化为 WebServlet(/demo) public class ServletDemo extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {FileInputStream fis new FileInputStream(C:\Users\24091\Desktop\46cfac1918ae3f7831e746684c0bd42.jpg);ServletOutputStream os response.getOutputStream();IOUtils.copy(fis,os);fis.close();}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);} }你问我青春还剩几年我的回答是趁现在正当时。身边朋友都在问我怎样学好一门编程语言怎样学好Java怎样通过 Java 找到一份满意的工作推荐学习此专栏Java编程基础教程系列零基础小白搬砖逆袭 下期见。