我们已经对servlet有了基本的认识了。接着我们来简单看看对客户端向服务器端发送的一次请求的响应中,我们可以做哪些事。至于对于客户端的请求我们可以怎么处理,明天再讲。
通过HttpAnalyzer这个软件,对请求和响应进行跟踪后,我们可以发现:
Response Headers Value
(Status-Line) HTTP/1.1 200 OK
Content-type text/html
Content-Length 100
Date Thu, 14 Jul 2011 14:48:23 GMT
Server lighttpd
Connection Keep-Alive
第一行是状态行,包含http协议版本信息,这个是服务器端来自动决定的。200是响应码,指示本次响应是什么样的状态,200代表成功。ok是对这个状态码的一个描述。我们常见的状态码有:404(客户端引发的错误,如请求一个不存在的资源)、500(服务器端引发的错误,如语法错误)、302(告知用户要向发过来的Location指定的URL发起请求,这个和Location配合使用)。。。等等。
接下来的叫响应头,这里面包含了当前发送回来的数据是什么类型、长度是多少、发送的时间是什么时候等等。这里面的信息,我们是可以设置(添加、删除、修改)的。
那么,我们在servlet中如何来修改或者设置响应码和响应头的信息呢?
我们在重写对应的doGet或者doPost或者其他的方法的时候,都会得到一个由容器创建的HttpServletRequest和HttpServletResponse对象。我们可以调用response的不同方法来设置我们想要的响应状态。
//设置响应码
response.setStatus(int);
//设置响应码并设置响应描述
response.sendError(int,"描述");
//我们常用的一个响应头的设置
response.setCharacterEncoding("GBK"); 告诉容器,以GBK编码的形式发送数据
response.setContentType("application/vnd.ms-excel"); 告诉客户端,当前发送到数据是什么格式,客户端就可以进行相应的处理
//设置响应头相关信息
response.setHeader("", ""); 很明显,这是一种键值对的形式。和我们上面捕获的信息格式一致。
//添加一个响应头
response.addHeader("", "");
当我们的响应头设置完毕以后,接着就要向客户端发送数据了。
在servlet中,我们可以选择对两种类型的数据发送使用不同的类。
字符型我们用PrintWriter
PrintWriter pw = response.getWriter();
pw.println("数据");
字节型我们用ServletOutputStream
ServletOutputStream sos = response.getOutputStream();
sos.write(bytes,0,length);
下面说一下请求重定向(请求转发以后说)和定时刷新/跳转
对于请求的重定向只需要依据代码:
response.sendRedirect("要转向到的网址");
这句代码其实内部做了两件事:1、将响应码设置为302; 2、将响应头中的Location的值设置为我们指定的网址。
定时刷新/跳转
response.setHeader("Refresh", "5;URL=跳转到的网址"); 等待5秒,自动跳转到我们制定的网址上。
分享到:
相关推荐
2. **重定向(Redirect)**:重定向则是一种客户端的跳转方式,当服务器返回一个302状态码(临时重定向)或301状态码(永久重定向)时,会告知浏览器新的目标地址,由浏览器发起一个新的HTTP请求到该地址。...
这种方法同样用于客户端重定向,它设置HTTP状态码为301(永久移动)并指定新的URL,浏览器接收到这个响应后,会自动发起对新URL的请求。 3. 使用`jsp:forward`标签,这是一种服务器端的转发,而非重定向: ```jsp...
在前端,我们需要重写Ajax请求以处理特定的HTTP状态码。通常,当我们发送一个Ajax请求时,我们关注的是成功的200状态码或者错误状态码如404或500。但在需要用户登录的场景下,服务器可能会返回一个非200的状态码,...
这段代码会在每个请求中添加一个`X-Requested-With`头,标识这是一个Ajax请求,并设置一个响应拦截器,当收到401状态码时,将页面重定向至登录页。 在后端,例如使用Flask框架,我们可以编写中间件或装饰器来检查...
在JavaWeb开发中,登录页面自动跳转是一个常见的功能需求,它涉及到用户认证、会话管理以及URL重定向等核心概念。以下是对这个主题的详细解释: 1. **用户认证**:用户认证是验证用户身份的过程,通常在登录页面...
- **Servlet**:Java编写的服务器端程序,处理HTTP请求并生成响应。在这个练习中,可能用Servlet来处理页面跳转逻辑。 - **JSP(JavaServer Pages)**:动态网页技术,结合HTML和Java代码,主要负责视图层展示。...
当调用 `sendRedirect()` 方法时,服务器会向客户端返回一个新的HTTP状态码302(临时重定向)和一个Location头,告知客户端浏览器去请求新的URL。这种方式会产生一个新的HTTP请求,客户端的URL会发生变化。 **应用...
**概念**:通过修改 HTTP 响应头中的 "Location" 字段来实现页面的重定向。这种方式类似于 `response.sendRedirect()`,但在某些场景下更为灵活。 **实现方式**: ```java protected void doPost...
在服务器端,通过设置HTTP响应头的`Location`字段和相应状态码,可以实现页面跳转。301代表永久重定向,意味着搜索引擎和浏览器应记住新URL;302表示临时重定向,表示资源暂时移动到新的URL。 4. **服务器配置**:...
通过Response对象,开发者可以控制浏览器如何处理接收到的数据,例如设置响应头、实现重定向等。 2. **设置头信息** 头信息是HTTP响应的一部分,用于传递额外的元数据,如页面编码、缓存策略、定时刷新等。例如,...
这种方式更接近于标准HTTP响应,但通常只在需要返回特定状态码(如301永久重定向)时使用。 综上所述,这个"基于PHP的网站跳转代码在线生成工具"为开发者提供了一个方便的平台,使他们能够快速生成符合需求的跳转...
4. **服务器端脚本跳转**: 如PHP、ASP、JSP等服务器端语言可以实现页面跳转,通过设置响应头或输出重定向指令。 标签“网页 跳转”进一步强调了这个主题是关于网页级别的跳转技术,可能涉及前端开发和服务器端处理...
同时,通过axios拦截器,我们可以统一处理HTTP请求和响应,以便在接收到后端返回的特定状态码(如401)时执行相应的操作,如重新登录。 【描述】中提到了两个关键步骤: 1. **路由配置**: - 在Vue Router的配置...
通过上述分析和示例代码,我们可以看到`HttpServletResponse`接口提供了强大的功能来处理HTTP响应,包括解决中文乱码问题、实现网页定时刷新与跳转、禁止浏览器缓存页面以及请求重定向等功能。这对于Web开发者来说是...
- **307 Temporary Redirect**:请求的资源现在临时从不同的URI响应请求,但请求者应继续使用原有URI进行后续请求。 #### 4xx - 客户端错误 此类状态码表示客户端的请求有误或无法被服务器理解。 - **400 Bad ...
- 服务器端跳转:服务器处理请求后,通过HTTP响应状态码(如301、302)或重定向指令(如PHP的header函数)来告诉浏览器跳转到新的URL。 - 客户端跳转:通常使用JavaScript的`window.location`对象或HTML的`<meta>`...
5. **页面跳转**:页面跳转有多种方式,包括`window.location.href`的直接跳转,`history.pushState/replaceState`的无刷新跳转,以及通过Ajax异步请求后改变页面内容。选择哪种方式取决于业务需求和用户体验考虑。 ...
当服务器端需要将客户端请求重定向到另一个资源时,可以调用此方法。具体来看,`response.sendRedirect("url")`会生成一个新的HTTP请求,其中的URL指向了指定的资源。这意味着浏览器将接收到一个302状态码,并随之...
通过设置HTTP响应头`Location`字段,可以实现页面的永久重定向(301状态码)或临时重定向(302状态码)。这种方式主要用于需要改变浏览器地址栏中的URL的情况,并且希望客户端能够缓存新地址。 **示例代码:** ```...
"fileupload页面跳转找不到原页面"的问题,通常是由于文件上传后处理不当导致的。这个问题涉及到前端页面的交互逻辑、后端服务器的处理机制以及可能的URL重定向策略。下面我们将详细探讨这个问题的解决方案及其相关...