javaweb response

服务器处理请求的流程:

(1)服务器每次收到请求时,都会为这个请求开辟一个新的线程。

(2)服务器会把客户端的请求数据封装到request对象中,request就是请求数据的载体!

(3)服务器还会创建response对象,这个对象与客户端连接在一起,它可以用来向客户端发送响应。
1、response概念:

response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse。在客户端发出每个请求时,服务器都会创建一个response对象,并传入给Servlet.service()方法。response对象是用来对客户端进行响应的,这说明在service()方法中使用response对象可以完成对客户端的响应工作。

response对象的功能分为以下四种:

(1)设置响应头信息

(2)发送状态码

(3)设置响应正文

(4)重定向

2、response响应正文

扫描二维码关注公众号,回复: 13192497 查看本文章

response是响应对象,向客户端输出响应正文(响应体)可以使用response的响应流,repsonse一共提供了两个响应流对象:

(1)PrintWriter out = response.getWriter():获取字符流;

(2)ServletOutputStream out = response.getOutputStream():获取字节流;

当然,如果响应正文内容为字符,那么使用response.getWriter(),如果响应内容是字节,例如下载时,那么可以使用response.getOutputStream()。

注意,在一个请求中,不能同时使用这两个流!也就是说,要么你使用repsonse.getWriter(),要么使用response.getOutputStream(),但不能同时使用这两个流。不然会抛出illegalStateException异常。

如何完成重定向?
答:重定向的状态码为302,我们首先使用response对象向浏览器发送302的状态码,之后再设置一个Location,即给出一个可用的URL,由浏览器去访问新的URL,实现重定向。

举例:
在这里插入图片描述
上面代码的作用是:当访问AServlet后,会通知浏览器重定向到百度主页。客户端浏览器解析到响应码为302后,就知道服务器让它重定向,所以它会马上获取响应头Location,然发出第二个请求。

还有一种快捷的重定向方法,即使用response.sendRedirect()方法。比如上面例子中的两句可以使用response.sendRedirect(“http://www.baidu.com”)代替。

request—封装了客户端所有的请求数据

3.请求来到HTTP服务器后,HTTP将请求交给Web容器(tomcat)
容器会创建2个对象 ,HttpServletRequest对象和HttpServletResponse对象

HttpServletRequest对象:容器将请求相关信息设置给此对象
HttpServletResponse对象:对客户端做出响应的对象
在这里插入图片描述
POST请求参数编码处理
网页编码是UTF-8,通过窗体使用POST发出“林”,会将“林”作URL编码为%E6%9E%97再发送出去,相当于浏览器执行此操作:

String text = java.net.URLEncoder.encode(“林”,“UTF-8”);

在Servlet中取得请求参数时,容器若默认使用ISO-8859-1来处理编码,相当于执行此操作

String text = java.net.URLDecoder.decode("%E6%9E%97",“ISO-8859-1”);

这样解出来的中文字符是不正确的。
若浏览器以UTF-8发送请求,接收时也要用UTF-8编码字符串,执行此语句

req.setCharacterEncoding(“UTF-8”);
//此方法只对请求Body字符编码才有用,也就是基本上对POST有用

读取Body内容
getReader():
返回类型 BufferedReader对象

BufferedReader reader = request.getReader();

无论是include还是forward方法可以设置属性来共享”对象”
setAttribute():指定名称与对象设置属性.
getAttribute():指定名称取得属性.
getAtttributeNames():取得所有属性名称.
removeAttribute:指定名称移除属性.
在这里插入图片描述
当servlet0执行到forward(“other.view”)方法时,会找到other.view对应的servlet2,然后继续执行servlet2。

String.format()方法
可以将字符串设置成指定格式
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_55680156/article/details/121362751