- 浏览: 90836 次
-
文章分类
最新评论
第六章:服务器响应的生成:HTTP状态代码
核心方法:
1.在向客户程序发送任何文档内容之前设置状态代码。当然从第三章,我们也可以知道,我们还要在传送文档之前设置内容的类型。
重点提示:
1.表示302常量的是SC_MOVED_TEMPORARILY,不是SC_FOUND。
警告:
1.默认情况下,IE版本5和气候的版本都忽略服务器生成的错误页面,要打开该功能。在IE中,使用【工具】,选择【Internet Options(Internet选项)】,选取【Advanced(高级)】标签,确保选择【显示友好的HTTP错误信息】
学习笔记:
从前面几章,我们可以看出,一个浏览器或其他客户程序的请求,由一个HTTP命令,0或多个请求报头(HTTP1.1中为一个或多个,因为Host必需)、一个空行和一些查询数据。
而web服务器对请求的响应,一般由一个状态行,一些响应报头,一个空行和相应的文档构成
比如:HTTP/1.1 200 OK
Content-Type :text/html
Header2:...
...
HeaderN:...
(Blank Line)
<!DOCTYPE...>
....
一:状态代码的指定
一般不需要明确指定,系统默认使用200的状态代码:
200 - 服务器成功返回网页
404 - 请求的网页不存在
503 - 服务器暂时不可用
具体可参见http://support.google.com/webmasters/bin/answer.py?hl=zh-Hans&answer=40132或者http://www.kuqin.com/web/20090913/68714.html
如果我们要设置,就要使用response.setStatus,response.sendRedirect或response.sendError。
1.设置302和404状态代码:sendRedirect和sendError,
a.状态代码302命令浏览器连接到新的位置,sendRedirect方法生成302响应以及Location报头,给出新的文档的URL,这个URL即可以是绝对URL,也可以是相对的URL。系统在将它们放入Location报头之前,自动将相对URL转换成绝对URL。使用sendRedirect等效于
b.状态代码404用于服务器没有找到文档的情况,sendError方法发送状态代码(一般为404)以及一小段简短的消息,这段消息被自动安排到HTML文档中发送给客户。也就是说不需要我们把错误信息发送给客户,这个sendError可以完成我们的任务
二、HTTP1.1状态代码。
1.302状态代码:一般认为仅当最初的请求为GET时,浏览器才应该自动执行重定向。但许多旧的浏览器在最初消息是POST的情况下,依旧错误的跟随302响应中的重定向信息。
2.303状态代码:除非初始的请求为POST,否则应该用GET来读取新的文档。也就是说浏览器只有在接受到303响应状态时才跟从POST请求的重定向信息。当然303对POST的响应不代表303状态代码只对POST的相应,它还对GET相应,这样302和303就重复了。这样我就要引入一个307来解决这个二义性的问题。
3.307状态代码规定,对于GET请求的重定向,继续进行,而对POST请求的重定向,则不再继续下去。这样使用307而不是302,就避免了和303的二义性问题了;
4.404错误(SC_NOT_FOUND),由于其经常使用,所以HttpServletResponse类中为它提供了一个专门的方法sendError,
三、将用户重定向到浏览器相关页面的servlet
四、各种浏览器的前端
在浏览器前端根据用户的输入和选取的搜索引擎,转到相应的界面。
核心方法:
1.在向客户程序发送任何文档内容之前设置状态代码。当然从第三章,我们也可以知道,我们还要在传送文档之前设置内容的类型。
重点提示:
1.表示302常量的是SC_MOVED_TEMPORARILY,不是SC_FOUND。
警告:
1.默认情况下,IE版本5和气候的版本都忽略服务器生成的错误页面,要打开该功能。在IE中,使用【工具】,选择【Internet Options(Internet选项)】,选取【Advanced(高级)】标签,确保选择【显示友好的HTTP错误信息】
学习笔记:
从前面几章,我们可以看出,一个浏览器或其他客户程序的请求,由一个HTTP命令,0或多个请求报头(HTTP1.1中为一个或多个,因为Host必需)、一个空行和一些查询数据。
而web服务器对请求的响应,一般由一个状态行,一些响应报头,一个空行和相应的文档构成
比如:HTTP/1.1 200 OK
Content-Type :text/html
Header2:...
...
HeaderN:...
(Blank Line)
<!DOCTYPE...>
....
一:状态代码的指定
一般不需要明确指定,系统默认使用200的状态代码:
200 - 服务器成功返回网页
404 - 请求的网页不存在
503 - 服务器暂时不可用
具体可参见http://support.google.com/webmasters/bin/answer.py?hl=zh-Hans&answer=40132或者http://www.kuqin.com/web/20090913/68714.html
如果我们要设置,就要使用response.setStatus,response.sendRedirect或response.sendError。
1.设置302和404状态代码:sendRedirect和sendError,
a.状态代码302命令浏览器连接到新的位置,sendRedirect方法生成302响应以及Location报头,给出新的文档的URL,这个URL即可以是绝对URL,也可以是相对的URL。系统在将它们放入Location报头之前,自动将相对URL转换成绝对URL。使用sendRedirect等效于
response.setStatus(response.SC_MOVED_TEMPORARILY)及
response.setHeader("location",url);但使用response.sendRedirect(url)有许多优点。
b.状态代码404用于服务器没有找到文档的情况,sendError方法发送状态代码(一般为404)以及一小段简短的消息,这段消息被自动安排到HTML文档中发送给客户。也就是说不需要我们把错误信息发送给客户,这个sendError可以完成我们的任务
二、HTTP1.1状态代码。
1.302状态代码:一般认为仅当最初的请求为GET时,浏览器才应该自动执行重定向。但许多旧的浏览器在最初消息是POST的情况下,依旧错误的跟随302响应中的重定向信息。
2.303状态代码:除非初始的请求为POST,否则应该用GET来读取新的文档。也就是说浏览器只有在接受到303响应状态时才跟从POST请求的重定向信息。当然303对POST的响应不代表303状态代码只对POST的相应,它还对GET相应,这样302和303就重复了。这样我就要引入一个307来解决这个二义性的问题。
3.307状态代码规定,对于GET请求的重定向,继续进行,而对POST请求的重定向,则不再继续下去。这样使用307而不是302,就避免了和303的二义性问题了;
4.404错误(SC_NOT_FOUND),由于其经常使用,所以HttpServletResponse类中为它提供了一个专门的方法sendError,
三、将用户重定向到浏览器相关页面的servlet
String userAgent = request.getHeader("User-Agent"); if(userAgent!=null&&userAgent.indexOf("MSIE")!=-1){ response.sendRedirect("http://home.netscape.com"); }else{ response.sendRedirect("http://www.microsoft.com"); }
四、各种浏览器的前端
在浏览器前端根据用户的输入和选取的搜索引擎,转到相应的界面。
<form action = "coreservlets.SearchEngine"> Search:<input type = "text" name ="searchString"><br> <input type = "radio" name ="searchEngineName" value ="Google">Google<br> <input type ="radio" name = "searchEngineName" value ="Baidu">Baidu<br> <input type = "radio" name = "searchEngineName" value ="soso">soso<br> <input type = "submit" value ="submit"><br> </form>
String searchEngineName = request.getParameter("searchEngineName"); String searchString = request.getParameter("searchString"); String searchURL = ""; if(searchEngineName==null){ response.sendError(response.SC_NOT_FOUND,"missing search string"); }else{ if(searchEngineName.equalsIgnoreCase("Google")){ searchURL = "http://www.google.com/search?q="+searchString; }else if(searchEngineName.equalsIgnoreCase("baidu")){ searchURL ="http://www.baidu.com/s?wd="+searchString; }else if(searchEngineName.equalsIgnoreCase("soso")){ searchURL = "http://www.soso.com/q?w="+searchString; } }
发表评论
-
servlet和jsp核心编程(第2版)第十六章 简化对Java代码的访问:jsp2.0表达式语言学习笔记
2012-08-23 21:49 785第十六章:简化对Java代 ... -
servlet和jsp核心编程(第2版)第十五章servlet和JSP的集成,模型-视图-控制器构架
2012-08-23 14:59 794第十五章:servlet和JSP的集成,模型-视图-控制器构架 ... -
servlet和jsp核心编程(第2版)第十四章 JavaBean组件在JSP文档中的应用 学习笔记
2012-08-21 11:55 752第十四章 JavaBean组件在JSP文档中的应用 一、bea ... -
servlet和jsp核心编程(第2版)第十三章 在JSP页面中包含文件和applet学习笔记
2012-08-20 15:53 904第十三章 在JSP页面中包 ... -
servlet和jsp核心编程(第2版)第十二章page指令学习笔记
2012-08-19 17:00 811第十二章 控制所生成的servlet的结构:JSP page指 ... -
servlet和jsp核心编程(第2版)第十一章jsp脚本元素的调用学习笔记
2012-08-18 21:09 859第十一章 用JSP脚本元素 ... -
servlet和jsp核心编程(第2版)第十章jsp技术概述学习笔记
2012-08-18 10:37 739第十章jsp技术概述 学习笔记: 一servlet和jsp的区 ... -
servlet和jsp核心编程(第2版)第九章会话跟踪学习笔记
2012-08-17 17:30 939第九章 会话跟踪 核心 ... -
servlet和jsp核心编程(第2版)第八章cookie管理学习笔记
2012-08-08 12:27 901第八章 cookie管理 核心方法: 1.在创建cookie对 ... -
servlet和jsp核心编程(第2版)第七章服务器响应的生成:HTTP响应报头学习笔记
2012-08-06 17:45 804第七章:服务器响应的 ... -
servlet和jsp核心编程(第2版)第五章客户请求的处理:HTTP请求报头学习笔记
2012-08-02 21:36 744第五章客户请求的处理:HTTP请求报头 核心方法: 1.在使用 ... -
servlet和jsp核心编程(第2版)第四章客户请求的处理,表单数据学习笔记
2012-07-31 16:05 1272第四章学习笔记 客户请 ... -
servlet和jsp核心编程(第2版)第三章servlet基础学习笔记
2012-07-29 10:43 755第三章:servlet基础 核心方法: 1.使用HTML验证器 ...
相关推荐
核心Java、JSP(JavaServer Pages)和Servlet是Java Web开发中的基础技术,这三者在Web应用程序的构建中扮演着重要角色。这份压缩包包含了关于这三个主题的详细笔记,对于学习和理解这些技术有着极大的帮助。 首先...
【标签】"Tomcat&Servlet入门"表明了本教程的主要内容,即为初学者提供Tomcat服务器的安装、配置和管理指南,以及Servlet的基本概念、生命周期、请求处理和响应生成等核心知识。 【压缩包子文件的文件名称列表】:...
JavaWeb是Java编程领域中的一个重要组成部分,主要涉及Web应用程序的开发和实现。黑马程序员是一家知名的IT教育机构,他们提供的Javaweb教材源码是为了帮助学员深入理解和实践Web开发技术。下面将详细介绍JavaWeb的...
- Servlet: 用于处理客户端请求并生成响应的服务器端组件。 - JSP (Java Server Pages): 一种动态网页技术。 - MVC (Model-View-Controller) 模式: 分层架构设计原则。 - **高级**: - Struts: MVC框架。 - EJB ...
6. **Session和Cookie**:讨论用户会话管理和状态保持的概念,以及何时使用Session和Cookie。 7. **异常处理**:学习如何在Java Web应用中捕获和处理异常,以及使用全局异常处理器。 8. **性能优化**:包括减少HTTP...