赞
踩
参考自 https://www.cnblogs.com/niceyoo/p/10614349.html
https://blog.csdn.net/fanbaodan/article/details/84846872
https://www.cnblogs.com/whgk/p/6399262.html
我们在输入 URL 后,我们的浏览器给Web服务器发送了一个 Request, Web 服务器接到Request 后进行处理,生成相应的 Response,然后发送给浏览器, 浏览器解析 Response 中的 HTML,这样我们就看到了网页。
Tomcat(Tomcat 是Web应用服务器,是一个Servlet/JSP容器) 收到客户端的 http 请求,并把请求传送给Servlet,会针对每一次请求,分别创建一个代表请求的 request 对象、和代表响应的 response 对象。
HTTP协议规定,HTTP请求由3个部分构成,分别是:
请求方式:GET、POST
HTTP协议规定,HTTP响应由3个部分构成,分别是:
1). Server :该响应头是服务器告诉浏览器,当前响应的服务类型和版本。 2). Content-Type响应头:服务器告诉浏览器响应内容是什么类型,以及采用的是什么字符编码。 该响应头的值现在为:text/html;charset=utf-8。说明响应信息的类型是文本类型中的html,使用的字符编码是utf-8。 HttpServletResponse提供了一个专用的方法setContentType。 3). Content-Length响应头:服务器告诉浏览器,Content-Length响应头表明了响应实体的大小,该响应内容的长度现在是312个字节。 4). Date响应头:表示是服务器是在什么时候响应回浏览器,注意这里的时间是按照美国时间来计算。 5). Accept-Ranges: bytes - 该响应头表明服务器支持Range请求,以及服务器所支持的单位是字节(这也是唯一可用的单位). 我们还能知道:服务器支持断点续传,以及支持同时下载文件的多个部分,也就是说下载工具可以利用范围请求加速下载该文件. Accept-Ranges: none 响应头表示服务器不支持范围请求. 6). Last-Modified:服务器上文件的最后修改时间 7).Location: 表示客户应当到哪里去提取文档。 Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态代码为302。
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
HTTP状态码的英文为HTTP Status Code。
常用HTTP状态码:
1). 200-请求成功
2). 301-资源(网页等)被永久转移到其他URL
3).404-请求的资源(网页)不存在
4).500-内部服务器错误
HTTP状态码分类:
1**:信息,服务器收到请求,需要请求者继续执行操作
2**:成功,操作被成功接收并处理
3**:重定向,需要进一步的操作以完成请求
4**:客户端错误,请求包含语法错误或无法完成请求
5**:服务器错误,服务器在处理请求的时候发生错误
转自 https://www.runoob.com/http/http-status-codes.html
https://blog.csdn.net/durenniu/article/details/81082177
addHeader(String name, String value):向HTTP响应头中加入一项内容。
sendError(int sc):向客户端发送一个代表特定错误的HTTP响应状态代码。
sendError(int sc, String msg):向客户端发送一个代表特定错误的HTTP响应状态代码,并且发送具体的错误消息。
setHeader(String name, String value):设置HTTP响应头中的一项内容。
如果在响应头中已经存在这项内容,那么原先所做的设置将被覆盖。
【设置每隔3秒就自动刷新一次, response.setHeader("Refresh",3);】
setStatus(int sc):设置HTTP响应的状态代码。
addCookie(Cookie cookie):向HTTP响应中加入一个Cookie。
getOutputStream 和 getWriter方法。这两种方法相互排斥,不能同时用。如果是字符输出,后者其实更方便;如果是文件流,用前者更好。在开发过程中,如果希望服务器输出什么浏览器就能看到什么,那么在服务器端都要以字符串的形式进行输出。
(1)、在用getOutputStream时,要先用setHeader(“content-type”, “text/html;charset=UTF-8”)控制浏览器的编码显示,然后还要通过byte[] dataByteArr = data.getBytes(“UTF-8”);将字符转换成字节数组,指定以UTF-8编码进行。
(2)、在获取PrintWriter输出流之前首先使用"response.setCharacterEncoding(charset)"设置字符以什么样的编码输出到浏览器,如:response.setCharacterEncoding(“UTF-8”);
重定向指的是一个web资源收到客户端请求后,web服务器通知客户端去访问另外一个web资源,这称之为请求重定向。实现方式是调用response.sendRedirect()方法。实现的原理就是给客户端返回了302状态码和location头。
void sendRedirect(String location)
//Sends a temporary redirect response to the client using the specified redirect location URL and clears the buffer.
//资源重定位,这里可以直接定位到其它站点的网址,但是缺点是不能在域内共享数据。
https://www.cnblogs.com/shenhaha520/p/8572044.html
getParameter(String name):获得客户端传送给服务器的参数值,该参数是由 name 指定的,通常是表单中的参数。而且参数只能是字符串形式的键值对。
getAttribute(String name):返回有name 指定的属性值,如果指定的属性值不存在,则会返回一个null值。这里存放的也是一个键值对,不同的是,这里的值可以是任意的类型。
/**请求转发:一种在服务器内部的资源跳转方式**/
RequestDispatcher getRequestDispatcher(String path)//通过request对象获取请求转发器对象
forward(ServletRequest request, ServletResponse response)// forward(ServletRequest request, ServletResponse response)
//只能在服务器内部转发。可以获取共享域中的数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。