- 浏览: 85683 次
-
文章分类
最新评论
第六章:服务器响应的生成: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 732第十六章:简化对Java代 ... -
servlet和jsp核心编程(第2版)第十五章servlet和JSP的集成,模型-视图-控制器构架
2012-08-23 14:59 739第十五章:servlet和JSP的集成,模型-视图-控制器构架 ... -
servlet和jsp核心编程(第2版)第十四章 JavaBean组件在JSP文档中的应用 学习笔记
2012-08-21 11:55 702第十四章 JavaBean组件在JSP文档中的应用 一、bea ... -
servlet和jsp核心编程(第2版)第十三章 在JSP页面中包含文件和applet学习笔记
2012-08-20 15:53 862第十三章 在JSP页面中包 ... -
servlet和jsp核心编程(第2版)第十二章page指令学习笔记
2012-08-19 17:00 755第十二章 控制所生成的servlet的结构:JSP page指 ... -
servlet和jsp核心编程(第2版)第十一章jsp脚本元素的调用学习笔记
2012-08-18 21:09 815第十一章 用JSP脚本元素 ... -
servlet和jsp核心编程(第2版)第十章jsp技术概述学习笔记
2012-08-18 10:37 687第十章jsp技术概述 学习笔记: 一servlet和jsp的区 ... -
servlet和jsp核心编程(第2版)第九章会话跟踪学习笔记
2012-08-17 17:30 893第九章 会话跟踪 核心 ... -
servlet和jsp核心编程(第2版)第八章cookie管理学习笔记
2012-08-08 12:27 843第八章 cookie管理 核心方法: 1.在创建cookie对 ... -
servlet和jsp核心编程(第2版)第七章服务器响应的生成:HTTP响应报头学习笔记
2012-08-06 17:45 729第七章:服务器响应的 ... -
servlet和jsp核心编程(第2版)第五章客户请求的处理:HTTP请求报头学习笔记
2012-08-02 21:36 701第五章客户请求的处理:HTTP请求报头 核心方法: 1.在使用 ... -
servlet和jsp核心编程(第2版)第四章客户请求的处理,表单数据学习笔记
2012-07-31 16:05 1235第四章学习笔记 客户请 ... -
servlet和jsp核心编程(第2版)第三章servlet基础学习笔记
2012-07-29 10:43 707第三章:servlet基础 核心方法: 1.使用HTML验证器 ...
相关推荐
Servlet与JSP核心编程(第2卷 第2版)
Servlet与JSP核心编程第二版 PDF文件 高清,内容通俗易懂.
Servlet与JSP核心编程第二版5Servlet与JSP核心编程第二版5Servlet与JSP核心编程第二版5
Servlet与JSP核心编程(第二版),你是不是要学最新版本(J2EE1.4)的Servlet和 SP?这本书能让你如虎添翼。你将能很好地掌握Servlet和JSP
Servlet与JSP核心编程:综合介绍Servlet与JSP
Servlet与JSP核心编程第二版代码
Servlet 与 JSP 核心编程(第2版)(含源代码版) Servlet 与 JSP 核心编程(第2版)(含源代码版)
第6章 服务器响应的生成:http状态代码 6.1 状态代码的指定 6.2 http1.1状态代码 6.3 将用户重定向到浏览器相关页面的servlet 6.4 各种搜索引擎的一个前端 第7章 服务器响应的生成:htip响应报头 7.1 在...
《Servlet与JSP核心编程》由浅入深,全面而深入地介绍了servlet和jsp技术。本书重点介绍核心技术,同时对相关的内容,如web服务器的配置、安装和应用,数据库的安装和配置等都做了详细明了的介绍。本书的例子简练...
《Servlet与JSP核心编程(第2卷 第2版)》在第l卷的基础上,广泛涉及自定义标签库、过滤器、声明式安全、JSTL和Struts等主题,并沿袭深受读者喜爱的写作风格,通过完整、有效、资料丰富的程序来演绎目前最流行的技术和...
本书全面深入地介绍了servlet和JSP技术。本书重点介绍核心技术, 同时对相关的内容。对于初学者,非常适用。本次提供下载是本书配的源代码
Servlet与JSP核心编程(第2版).pdf
Servlet与JSP核心编程(第2版),与大家分享JSP 开发技术
本书由Marty Hall,Larry Brown著 张学良译 清华大学出版社出版 原书有47M由于上传文件大小限制分为3部分,本人不是黑人,仅仅在最后一个部分才收取4分资源分
servlet与JSP核心编程,这本书我看了,自己做的目录,是高清非扫描版
《Servlet与JSP核心编程》由浅入深,全面而深入地介绍了servlet和jsp技术。本书重点介绍核心技术,同时对相关的内容,如web服务器的配置、安装和应用,数据库的安装和配置等都做了详细明了的介绍。本书的例子简练...
《Servlet与JSP核心编程(第2卷 第2版)》
Servlet与JSP核心编程第二版(含书签)
《Servlet与JSP核心编程》(第2版)叙述详尽,条理清晰。对于初学者来说是一本不可多得的入门书籍,经验丰富的Servelet和JSP开发人员也可以通过阅读《Servlet与JSP核心编程》(第2版)得到巩固和提高。
Servlet与JSP核心编程(第2版第1卷、第2卷带书签),java web编程必备基础知识。2本书放一起,方面大家下载学习。