手动去设置HTTP响应行、响应头、响应体

①手动去设置HTTP响应行中的状态码,这里用到了response的setStatus(int sc);这个方法

package com.itheima.line;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class StatusServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//手动去设置HTTP响应行中的状态码response.setStatus(1014);//这里的状态码设置为1014}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}

建立的工程如下:

在这里插入图片描述

最后的结果如下:

在这里插入图片描述

②通过response设置响应头

addHeader(String name, String value)
addIntHeader(String name, int value)
addDateHeader(String name, long date)

setHeader(String name, String value) 重点
setIntHeader(String name, int value)
setDateHeader(String name, long date)

其中,add表示添加,而set表示设置

为编辑之前的在这里插入图片描述

在这里插入图片描述

package com.itheima.header;import java.io.IOException;
import java.util.Date;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class HeaderServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {Date date = new Date();//设置响应头response.addHeader("name", "beyondyy");//若重复,则接着添加response.addHeader("name", "beyondwsq");response.addIntHeader("age", 19);response.addDateHeader("birthday", date.getTime());}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}

编辑之后的结果:

在这里插入图片描述

同样的道理,add表示有相同的往后接着添加,set只保留一个,前面的会被后面的给取代。

③重定向(302)

老版

重定向:说白了就是,当你访问servlet1时,它没有资源,它给你说servlet2有,然后你就会再访问servlet2。

重定向 状态码 302
响应头 Location (代表重定向地址)
//servlet1
package com.itheima.header;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class Servlet1 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//没有响应资源 告知客户端去重定向到servlet2//1.设置状态码为302response.setStatus(302);//2.设置一个响应头Locationresponse.setHeader("Location", "/WEB14/servlet2");}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}
//servl2
package com.itheima.header;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class Servlet2 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.getWriter().write("hello beyondsq...");}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}

web.xml里面url分别设置为servlet1和servlet2

由于重定向的方法每次都那么写麻烦,javaEE进行封装成一个叫重定向的方法sendRedirect(url);

封装之后的servlet1

新版

//servlet1
package com.itheima.header;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class Servlet1 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//没有响应资源 告知客户端去重定向到servlet2//封装成一个重定向的方法sendRedirect(url);response.sendRedirect("/WEB14/servlet2");}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}

④定时刷新(跟重定向一样,就是多了一个时间延迟而已)

//refresh
package com.itheima.header;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class RefreshServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置定时刷新的头response.setHeader("refresh", "5;url=//www.baidu.com");//5s之后再跳转到url为百度的地址}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
} 

⑤js完成页面的定时跳转

案例:5秒后自动跳转到百度
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">window.onload = function(){var time = 5;var secondEle = document.getElementById("second");var timer = setInterval(function(){secondEle.innerHTML = time;time--;if(time==0){clearInterval(timer);	location.href="http://www.baidu.com";}},1000);//1000ms表示1s变一次}
</script>
</head>
<body>恭喜你,注册成功,<span style="color:red" id="second">5</span>秒后跳转。如不跳转,请点击<a href="http://www.baidu.com">这里</a>
</body>
</html>

⑥通过response设置响应体

//text
package com.itheima.content;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class TextServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置response查询的码表response.setCharacterEncoding("UTF-8");//通过一个头Content-Type告知客户端使用何种码表进行解码response.setHeader("Context-Type", "text/html;charset=UTF-8");//文本为HTML类型,编码为UTF-8 PrintWriter writer = response.getWriter();writer.write("原谅我这一生不羁放纵爱自由wsq");}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}

在这里插入图片描述

工程创建在这里插入图片描述

新(进行代码封装之后)

package com.itheima.content;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class TextServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//进行方法封装之后	response.setContentType("text/html;charset=UTF-8");PrintWriter writer = response.getWriter();writer.write("原谅我这一生不羁放纵爱自由wsq");}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}

牢记这行代码即可:

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

⑦response的outputstream来获得服务器上的图片

响应头设置字节

ServletOutputStream getOutputStream()
获得字节流,通过该字节流的write(byte[] bytes)可以向response缓冲区中写入字 节,在由Tomcat服务器将字节内容组成Http响应返回给浏览器。

//byte
package com.itheima.content;import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class ByteServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//使用response获得字节输出流ServletOutputStream out = response.getOutputStream();//获得服务器上的图片String realPath = this.getServletContext().getRealPath("a.jpg");//相对地址,相对web应用的InputStream in = new FileInputStream(realPath);int len = 0;byte[] buffer = new byte[1024];while((len = in.read(buffer))>0){out.write(buffer,0,len);}in.close();out.close();	}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/379668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java SecurityManager checkListen()方法与示例

SecurityManager类的checkListen()方法 (SecurityManager Class checkListen() method) checkListen() method is available in java.lang package. checkListen()方法在java.lang包中可用。 checkListen() method invokes checkPermission with the given SocketPermission(&q…

基本的二分查找、寻找第一个和最后一个数的二分查找

二分查找1 二分查找的框架2 寻找一个数&#xff08;基本的二分搜索&#xff09;3 寻找左侧边界的二分搜索4 寻找右侧边界的二分查找5 合并二分查找场景&#xff1a;有序数组寻找一个数、寻找左侧边界&#xff08;有序数组第一个等目标数的下标&#xff09;、寻找右侧边界&#…

PostgreSQL 中的递归查询 与oracle 的比较

PostgreSQL 中的递归查询&#xff0c;2种方法&#xff1a; 1、用with decursive WITH RECURSIVE d AS (SELECT d1.id,d1.parent_id,d1.caption FROM course_types d1 where d1.dr 0 and d1.idtypeId union ALL SELECT d2.id,d2.parent_id,d2.caption FROM course_types d2, d …

教你如何玩转GitHub

使用GitHub ①目的&#xff1a;借助GitHub托管项目代码 基本概念&#xff1a; ①仓库(Repository)&#xff1a; 用来存放项目代码&#xff0c;每个项目对应一个仓库&#xff0c;多个开源项目对应多个仓库 ②收藏(Star)&#xff1a; 收藏项目&#xff0c;方便下次查看 ③…

Java SecurityManager checkDelete()方法与示例

SecurityManager类的checkDelete()方法 (SecurityManager Class checkDelete() method) checkDelete() method is available in java.lang package. checkDelete()方法在java.lang包中可用。 checkDelete() method calls checkPermission with FilePermission(filename,"d…

jQuery中的treeview插件

jQuery做树状结构真的很简单,下面做一个最简单的示例: 在html文件中引用: <link rel"stylesheet" href"../jquery.treeview.css" /> <link rel"stylesheet" href"../red-treeview.css" /> <link rel"styles…

Linux内核设计与实现---中断和中断处理程序

中断和中断处理程序1 中断异常2 中断处理程序上半部与下半部的对比3 注册中断处理程序释放中断处理程序4 编写中断处理程序重入和中断处理程序共享的中断处理程序中断处理程序实例5 中断上下文6 中断处理机制的实现7 中断控制禁止和激活中断禁止指定中断线中断系统的状态8 总结…

asp.net中的窗体身份验证(最简单篇)

在创建网站中&#xff0c;常常会使用到身份验证。asp.net中内置了几种身份验证的方式&#xff0c;如Windows、Froms、Passport等。这几种身份验证的方式各有不同。一般来说&#xff0c;网站的身份验证方式都会经过以下几个步骤&#xff1a; 1、输入用户名和密码&#xff0c;单击…

bat文件调用dos命令 (dos淘金)

ECHO命令是大家都熟悉的DOS批处理命令的一条子命令&#xff0c;但它的一些功能和用法也许你并不是全都知道&#xff0c;不信你瞧&#xff1a; 1&#xff0e; 作为控制批处理命令在执行时是否显示命令行自身的开关 格式&#xff1a;ECHO [ON|OFF] 如果想关闭“ECHO OFF”命令…

response细节点

一、 1&#xff09;、response获得的流不需要手动关闭&#xff0c;Tomcat容器会帮你自动关闭 2&#xff09;、getWriter和getOutputStream不能同时调用 //error package com.itheima.content;import java.io.IOException; import javax.servlet.ServletException; import java…

Java RandomAccessFile writeBytes()方法与示例

RandomAccessFile类writeBytes()方法 (RandomAccessFile Class writeBytes() method) writeBytes() method is available in java.io package. writeBytes()方法在java.io包中可用。 writeBytes() method is used to write the sequence of bytes (i.e. string) to the file. E…

linux内核设计与实现---下半部和推后执行的工作

下半部和推后执行的工作1 下半部为什么要用下半部下半部的环境内核定时器2 软中断软中断的实现软中断处理程序执行软中断使用软中断3 tasklettasklet的实现使用taskletksoftirqd4 工作队列工作队列的实现工作、工作队列和工作者线程之间的关系使用工作队列5 下半部机制的选择6 …

Jquery对复选框的操作

<from> 你的爱好是?<br/> <input type"checkbox" name"items" value"篮球" />篮球 <input type"checkbox" name"items" value"乒乓球" />乒乓球 <input type"checkbox" na…

HttpServletRequest(request的一些API)

一、request的运行流程 首先&#xff0c;自己写一个web工程&#xff0c;也就是建一个工程&#xff1b;当把该web工程发布到Tomcat服务器当中&#xff0c;可以让外界访问&#xff0c;这就成了一个web应用。 在客户端输入一个网站&#xff0c;是web应用资源的地址URL&#xff0c…

DCI:James O. Coplien和Trygve Reenskau提出的新架构方法

http://www.infoq.com/cn/news/2009/05/dci-coplien-reenskau 转载于:https://www.cnblogs.com/yelinpalace/archive/2009/06/13/1502573.html

Java ObjectStreamField getOffset()方法与示例

ObjectStreamField类的getOffset()方法 (ObjectStreamField Class getOffset() method) getOffset() method is available in java.io package. getOffset()方法在java.io包中可用。 getOffset() method is used to get the offset of this ObjectStreamField field. getOffse…

Mac VSCode配置C语言环境(可以调试)

Mac VSCode配置C语言环境c_cpp_properties.jsontasks.jsonlaunch.json新建一个文件夹&#xff0c;用vscode&#xff0c;然后再新建一个test.c文件。 #include <stdio.h>int main(void) {int a1,b1;int cab;printf("%d\n",c);return 0; }这篇文章说怎么配置c_c…

XmlPullParserException

今天在android的开发中约到一个问题 使用Ksoap2 访问 WebService 抛出 XmlPullParserException 异常。 在网上淘了一下这个问题 http://www.eoeandroid.com/thread-70527-1-1.html 不能解决我的问题&#xff0c;求解转载于:https://www.cnblogs.com/pengqinping/archive/2012/0…

vShpere Client在win 7 RC下和2008下 无法正常连接esx主机之解决办法

vShpere Client在win 7 RC下和2008下 无法正常连接esx主机之解决办法 在win7下和2008下打开client后连接esx主机会出现2个错误提示, 第一个是 第二个是 然后就连接失败了,开始以为是CC的esx主机安装有问题,后来找了找,借助了强大google工具,终于找到解决办法.解决办法如下: 1.从…

tooctalstring_Java Integer类toOctalString()方法的示例

tooctalstring整数类toOctalString()方法 (Integer class toOctalString() method) toOctalString() method is available in java.lang package. toOctalString()方法在java.lang包中可用。 toOctalString() method is used to represent an octal string of the given parame…