Responses响应体

当浏览器访问web程序的使用,根据配置文件web.xml找到要访问的servlet,servlet中的service方法中传入servletrequest和servletreponse

service(ServletRequest req, ServletResponse res)

service方法中的参数还是ServletRequest,ServletResponse。并没有跟http相关对象挂钩,所以我们接着往下面看。HttpServlet类详解

继承了GenericServlet类,通过我们上面的推测,这个类主要的功能肯定是实现service方法的各种细节和设计。并且通过类名可以知道,该类就跟http挂钩了。

我们可以设置响应头的一些数据也可以添加一些数据:

response.setaddDateHeader();

response.sendredirct("longin.action");重定向

1.response.setStatus(302);  //状态码302就代表重定向

2.response.setHeader("location","longin.action")跟上面一样是重定向

response.ContentType("text/html,charset=utf-8")编码格式

response.setHeader("Content-Type","text/html;charset=utf-8");跟上面一样是设置编码格式 

response.setStatus(302)设置响应码。

 

下面是响应体

PrintWriter getWriter()

获得字符流,通过字符流的write(String s)方法可以将字符串设置到response 缓冲区中,随后Tomcat会将response缓冲区中的内容组装成Http响应返回给浏览 器端。

PrintWriter writer = resp.getWriter();
writer.write(“Hello world");或者 write.print("Hello world");

关于设置中文的乱码问题

原因:response缓冲区的默认编码是iso8859-1,此码表中没有中文,可以通过 response的setCharacterEncoding(String charset) 设置response的编码

但我们发现客户端还是不能正常显示文字

原因:我们将response缓冲区的编码设置成UTF-8,但浏览器的默认编码是本地系 统的编码,因为我们都是中文系统,所以客户端浏览器的默认编码是GBK,我们可以 手动修改浏览器的编码是UTF-8。

我们还可以在代码中指定浏览器解析页面的编码方式,

通过response的setContentType(String type)方法指定页面解析时的编码是UTF-8

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

上面的代码不仅可以指定浏览器解析页面时的编码,同时也内含 setCharacterEncoding的功能,所以在实际开发中只要编写 response.setContentType("text/html;charset=UTF-8");就可以解决页面输出中文乱码问题。

 

(2)响应头设置字节

ServletOutputStream  getOutputStream()

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

实例(从服务器端获得a.jpg图片)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

 

import javax.servlet.ServletException;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

/**

 * Servlet implementation class ImageServelt

 */

public class ImageServelt extends HttpServlet {

    private static final long serialVersionUID = 1L;

        

    

      

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {<br>          //使用response获得字节输出流

        ServletOutputStream outputStream =   response.getOutputStream();<br>          //获得服务器上的图片

        String path = this.getServletContext().getRealPath("a.jpg");//获取绝对路径

        InputStream in = new FileInputStream(path);

        int len=0;

        byte[] buffer = new byte[1024];

        while((len=in.read(buffer))>-1) {

            outputStream.write(buffer, 0, len);

        }

        in.close();

        outputStream.close();

    }

 

    /**

     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

     */

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // TODO Auto-generated method stub

        doGet(request, response);

    }

 

}

 

 

https://www.cnblogs.com/whgk/p/6399262.html

https://www.cnblogs.com/sangewuxie/p/7486488.html 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值