response相关内容
response
1.response响应行
1.1 设置响应行状态码
//第一种 设置200 302 304
response.setStatus(int status);
//第二种 设置404 500
response.sendError(int sc);
//这两种的区别在于,后一种写法会有错误页面提示
1.2常见状态码含义
- 200 正常
- 302 重定向
- 304 访问缓存
- 404 表示服务器资源不存在(例如:访问地址出错)
- 500 服务器程序错误 (异常 1/0)
2.response响应头
2.1设置键值对
//设置自己的键值对
response.setHeader("jack","rose");
//修改系统已经存在的键值对
response.setHader("Content-Type","text/html;charset=utf-8");
3.重定向
3.1重定向的核心
- 响应码302
- 响应头Location
3.2重定向相关代码(一个简单的登录,成功则进行重定向)
html代码
<body>
<form method="post" action="/webDay03_war_exploded/demo1">
账号:<input type="text" name="username"><br/>
密码:<input type="password" name="password"><br/>
<input type="submit" value="提交">
</form>
</body>
第一个Servlet代码
@WebServlet("/demo1")
public class RedirectServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
if ("rose".equals(username)&&"1234".equals(password)){
response.sendRedirect("demo2");//重定向时,若是在同一个目录下,不需要添加/
}else{
response.getWriter().write("用户名或密码错误");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
第二个Servlet代码
@WebServlet("/demo2")
public class RedirectServlet2 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("登录成功");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
4.响应体
4.1response-设置响应体-getWriter
getWriter()方法:字符流,只能给浏览器响应文本内容,但是可能会存在中文乱码问题,因为Tomcat默认是IOS 8859-1编码,所以,在响应浏览器时,要修改编码方式。
@WebServlet("/body")
public class WriterServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1:字符流
response.setHeader("Content-Type","text/html;charset=utf-8");
response.getWriter().write("<font color='red'>中国</font>");
}
}
4.2response-设置响应体getOutputStream(不需要考虑编码问题write)
getOutputStream():字节输出流,可以向浏览器响应任何类型的数据,例如:图片,视频,音频,文本等,
不需要考虑编码问题
@WebServlet("/body2")
public class OutputStreamServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取字节输出流
ServletOutputStream outputStream = response.getOutputStream();
//写数据到浏览器
byte[] bytes = "中国".getBytes();
outputStream.write(bytes);
//关闭
outputStream.close();
}
}