你真的了解response吗?

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();
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值