当浏览器访问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)设置响应码。
下面是响应体
获得字符流,通过字符流的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 |
|