response:响应
作用:
往浏览器写东西
组成部分:
响应行 响应头 响应体
操作响应行
格式:
协议/版本 状态码 状态码说明
状态码:
1xx:已发送请求
2xx:已完成响应
200:正常响应
3xx:还需浏览器进一步操作
302:重定向 配合响应头:location
304:读缓存
4xx:用户操作错误
404:用户操作错误.
405:访问的方法不存在
5xx:服务器错误
500:内部异常
常用方法:
setStatus(int 状态码):针对于 1 2 3
了解 :
sendError(int 状态码):针对于 4xx和5xx
操作响应头
格式:key/value(value可以是多个值)
常用的方法:
setHeader(String key,String value):设置字符串形式的响应头
了解:setIntHeader(String key,int value):设值整形的响应头
了解:setDateHeader(String key,long value):设值时间的响应头
addHeader(String key,String value):添加置字符串形式的响应头 之前设置过则追加,若没有设置过则设置
了解:addIntHeader(String key,int value):添加整形的响应头
了解:addDateHeader(String key,long value):添加时间的响应头
常用的响应头:
location:重定向
refresh:定时刷新
content-type:设置文件的mime类型,设置响应流的编码及告诉浏览器用什么编码打开
content-disposition:文件下载
重定向:
方式1:
★response.sendRedirect("/day10/loc2");
方式2:
response.setStatus(302);
respooen.setHeader("location","/day10/loc2");
定时刷新:
方案1:设置头 refresh 昨天做过
respooen.setHeader("refresh","秒数;url=跳转的路径");
方案2:http的meta标签
<meta http-equiv="refresh" content="3;url=/day10/refresh2.html">
重定向与定时刷新案例
首页html代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="/webfour/Loc1">重定向页面(响应头)</a>
<a href="/webfour/refresh1.html">定时器</a>
<a href="/webfour/Print">操作响应体</a>
</body>
</html>
XML文件代码:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>webfour</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>Loc1Servlet</display-name>
<servlet-name>Loc1Servlet</servlet-name>
<servlet-class>com.feizhu._response_a_location.Loc1Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Loc1Servlet</servlet-name>
<url-pattern>/Loc1</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>Loc2Servlet</display-name>
<servlet-name>Loc2Servlet</servlet-name>
<servlet-class>com.feizhu._response_a_location.Loc2Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Loc2Servlet</servlet-name>
<url-pattern>/Loc2</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>PrintServlet</display-name>
<servlet-name>PrintServlet</servlet-name>
<servlet-class>com.feizhu._response_b_body.PrintServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PrintServlet</servlet-name>
<url-pattern>/Print</url-pattern>
</servlet-mapping>
</web-app>
Loc1类代码:
package com.feizhu._response_a_location;
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 Loc1Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("点我可以重定向到目标页面");
// //方式一:理解
// //设置状态码 302 重定向
// response.setStatus(302);
// //设置响应头
// response.setHeader("location","/webfour/Loc2");
//方式二 :掌握
response.sendRedirect("/webfour/Loc2");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
Loc2类代码
package com.feizhu._response_a_location;
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 Loc2Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("成功跳转到目标页面");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
refresh1页面代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!--
http-equiv:响应头
content: 响应头的内容
-->
<meta http-equiv="refresh" content="3;url=/webfour/refresh2.html">
<title>Insert title here</title>
</head>
<body>
恭喜您,登录成功! <span id="sid">3</span>秒之后跳转到refresh2.html页面
</body>
//JS实现秒数动态倒数
<script type="text/javascript">
οnlοad=function(){
//设置定时器
setInterval(change,1000);
}
i=3;
//时间变化
function change(){
//获取元素的标签
var obj=document.getElementById("sid");
obj.innerHTML=--i;
}
</script>
</html>
refresh2页面代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
跳转成功
</body>
</html>
效果展示:
备注:由于个人原因,本博客暂停更新。如有问题可联系本人,本人提供技术指导、学习方向、学习路线。本人微信wlp1156107728(添加注明来意) QQ1156107728(添加注明来意)