Servlet之Response对象

功能:设置响应消息1. 设置响应行格式:协议/版本 响应状态码 状态码状态设置状态码:setStatus(int sc)2. 设置响应头setHeader(String name,String value)3. 设置响应体获取输出流(相对于当前程序来讲这是输出东西到客户端)字符输出流:PrintWriter getWriter()字节输出流:ServletOutputStream getOutputStream()使用输出流,将数据输出到客户端浏览器4. 重定向 /
摘要由CSDN通过智能技术生成

功能:设置响应消息

1. 设置响应行

  1. 格式:协议/版本 响应状态码 状态码状态
  2. 设置状态码:setStatus(int sc)

2. 设置响应头

setHeader(String name,String value)

3. 设置响应体

  1. 获取输出流(相对于当前程序来讲这是输出东西到客户端)

    字符输出流:PrintWriter getWriter()

    字节输出流:ServletOutputStream getOutputStream()

  2. 使用输出流,将数据输出到客户端浏览器

4. 重定向

		//重定向到responseServlet2
		/*
        //1.设置状态码为302
        response.setStatus(302);
        //2.设置响应头location
        response.setHeader("location", "/responseServlet2");
        */
        //鉴于上述重定向代码参数大都固定,封装有更为简单的重定向方法
        response.sendRedirect("/responseServlet2");

5. redirect和forward的区别?

重定向redirect的特点

  1. 地址栏发生变化
  2. 重定向可以访问其他站点(服务器)的资源
  3. 重定向是两次请求,不能使用request域对象来共享数据(request域对象仅作用 于一次请求的范围内)

转发forward的特点

  1. 转发地址栏不变
  2. 转发只能访问当前服务器的资源
  3. 转发是一次请求,可以使用request域对象来共享数据

6. 相对路径与绝对路径

相对路径

  1. 通过相对路径不可以唯一确定资源
  2. 相对路径以 . 开头,如 ./index.html
  3. ./为当前目录
  4. ../为上一级目录
  5. 如果相对路径开头什么都没有,那么默认为当前目录 ./index.html=./index.html

绝对路径(常用)

  1. 通过绝对路径可以唯一确定资源

  2. 绝对路径以/开头,如 /responseServlet2

  3. 给客户端浏览器使用,绝对路径中需要添加虚拟目录(项目的访问路径)

    虚拟目录动态获取:request.getContestPath()

    		//动态获取虚拟目录
            String path = request.getContextPath();
            response.sendRedirect(path+"/responseServlet2");
    //<a>,<form>,重定向...等给浏览器使用的绝对路径,都需要添加虚拟目录
    
  4. 给服务器使用,绝对路径中无需添加虚拟目录

    例:请求转发的路径

7. 服务器输出字符流

乱码问题

  1. PrintWriter pw = response.getWriter();获取的流的默认编码是ISO-8859-1
  2. response.setContentType("text/html;charset=utf-8");设置该流的编码并告诉浏览器该流的编码
		//下行代码作用:1.设置流的编码为utf-8 2.告诉浏览器流的编码
        //response.setHeader("content-type", "text/html;charset=utf-8");
        //简单的形式,设置编码
        response.setContentType("text/html;charset=utf-8");
        //1.获取字符输出流
        PrintWriter writer = response.getWriter();
        //2.输出数据
        writer.write("你好啊啊啊,dominus!");

8. 服务器输出字节流

		//告诉浏览器该流使用的编码
        response.setContentType("text/html;charset=utf-8");
        //1.获取字节输出流
        ServletOutputStream sos = response.getOutputStream();
        //2.输出数据
        sos.write("你好 dominus!".getBytes("utf-8"));

9. 验证码

		int width=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值