servlet和jsp核心编程(第2版)第六章服务器响应的生成:HTTP状态代码学习笔记

本文深入探讨了服务器如何生成HTTP状态代码,并详细解释了常见状态代码的用途,如200、404和302,以及如何在Java Web应用中正确使用这些代码。同时,介绍了如何根据不同浏览器的特性调整错误页面显示。
[size=x-large]第六章:服务器响应的生成:HTTP状态代码[/size]
[size=x-large]核心方法[/size]:
[size=medium]1[/size].在向客户程序发送任何文档内容之前设置状态代码。当然从第三章,我们也可以知道,我们还要在传送文档之前设置内容的类型。
[size=x-large]重点提示[/size]:
[size=medium]1[/size].表示302常量的是SC_MOVED_TEMPORARILY,不是SC_FOUND。
[size=x-large]警告[/size]:
[size=medium]1[/size].默认情况下,IE版本5和气候的版本都忽略服务器生成的错误页面,要打开该功能。在IE中,使用【工具】,选择【Internet Options(Internet选项)】,选取【Advanced(高级)】标签,确保选择【显示友好的HTTP错误信息】
[size=x-large]学习笔记[/size]:
从前面几章,我们可以看出,一个浏览器或其他客户程序的请求,由一个HTTP命令,0或多个请求报头(HTTP1.1中为一个或多个,因为Host必需)、一个空行和一些查询数据。
而web服务器对请求的响应,一般由一个状态行,一些响应报头,一个空行和相应的文档构成
比如:HTTP/1.1 200 OK
Content-Type :text/html
Header2:...
...
HeaderN:...
(Blank Line)
<!DOCTYPE...>
....
[size=large]一[/size]:状态代码的指定
一般不需要明确指定,系统默认使用200的状态代码:
200 - 服务器成功返回网页
404 - 请求的网页不存在
503 - 服务器暂时不可用
具体可参见[url]http://support.google.com/webmasters/bin/answer.py?hl=zh-Hans&answer=40132[/url]或者[url]http://www.kuqin.com/web/20090913/68714.html[/url]
如果我们要设置,就要使用response.setStatus,response.sendRedirect或response.sendError。
[size=medium]1[/size].设置302和404状态代码:sendRedirect和sendError,
[size=small]a[/size].状态代码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)有许多优点。
[size=small]b[/size].状态代码404用于服务器没有找到文档的情况,sendError方法发送状态代码(一般为404)以及一小段简短的消息,这段消息被自动安排到HTML文档中发送给客户。也就是说不需要我们把错误信息发送给客户,这个sendError可以完成我们的任务
[size=large]二[/size]、HTTP1.1状态代码。
[size=medium]1[/size].302状态代码:一般认为仅当最初的请求为GET时,浏览器才应该自动执行重定向。但许多旧的浏览器在最初消息是POST的情况下,依旧错误的跟随302响应中的重定向信息。
[size=medium]2[/size].303状态代码:除非初始的请求为POST,否则应该用GET来读取新的文档。也就是说浏览器只有在接受到303响应状态时才跟从POST请求的重定向信息。当然303对POST的响应不代表303状态代码只对POST的相应,它还对GET相应,这样302和303就重复了。这样我就要引入一个307来解决这个二义性的问题。
[size=medium]3[/size].307状态代码规定,对于GET请求的重定向,继续进行,而对POST请求的重定向,则不再继续下去。这样使用307而不是302,就避免了和303的二义性问题了;
[size=medium]4[/size].404错误(SC_NOT_FOUND),由于其经常使用,所以HttpServletResponse类中为它提供了一个专门的方法sendError,
[size=large]三[/size]、将用户重定向到浏览器相关页面的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;
}
}
内容概要:本文档围绕六自由度机械臂的ANN人工神经网络设计展开,涵盖正向与逆向运动学求解、正向动力学控制,并采用拉格朗日-欧拉法推导逆向动力学方程,所有内容均通过Matlab代码实现。同时结合RRT路径规划与B样条优化技术,提升机械臂运动轨迹的合理性与平滑性。文中还涉及多种先进算法与仿真技术的应用,如状态估计中的UKF、AUKF、EKF等滤波方法,以及PINN、INN、CNN-LSTM等神经网络模型在工程问题中的建模与求解,展示了Matlab在机器人控制、智能算法与系统仿真中的强大能力。; 适合人群:具备一定Ma六自由度机械臂ANN人工神经网络设计:正向逆向运动学求解、正向动力学控制、拉格朗日-欧拉法推导逆向动力学方程(Matlab代码实现)tlab编程基础,从事机器人控制、自动化、智能制造、人工智能等相关领域的科研人员及研究生;熟悉运动学、动力学建模或对神经网络在控制系统中应用感兴趣的工程技术人员。; 使用场景及目标:①实现六自由度机械臂的精确运动学与动力学建模;②利用人工神经网络解决传统解析方法难以处理的非线性控制问题;③结合路径规划与轨迹优化提升机械臂作业效率;④掌握基于Matlab的状态估计、数据融合与智能算法仿真方法; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点理解运动学建模与神经网络控制的设计流程,关注算法实现细节与仿真结果分析,同时参考文中提及的多种优化与估计方法拓展研究思路。
内容概要:本文围绕电力系统状态估计中的异常检测与分类展开,重点介绍基于Matlab代码实现的相关算法与仿真方法。文章详细阐述了在状态估计过程中如何识别分类量测数据中的异常值,如坏数据、拓扑错误参数误差等,采用包括残差分析、加权最小二乘法(WLS)、标准化残差检测等多种经典与现代检测手段,并结合实际算例验证方法的有效性。同时,文档提及多种状态估计算法如UKF、AUKF、EUKF等在负荷突变等动态场景下的应用,强调异常处理对提升电力系统运行可靠性与安全性的重要意义。; 适合人群:具备电力系统基础知识一定Matlab编程能力的高校研究生、科研人员及从事电力系【状态估计】电力系统状态估计中的异常检测与分类(Matlab代码实现)统自动化相关工作的工程技术人员。; 使用场景及目标:①掌握电力系统状态估计中异常数据的产生机制与分类方法;②学习并实现主流异常检测算法,提升对状态估计鲁棒性的理解与仿真能力;③服务于科研项目、课程设计或实际工程中的数据质量分析环节; 阅读建议:建议结合文中提供的Matlab代码进行实践操作,配合电力系统状态估计的基本理论进行深入理解,重点关注异常检测流程的设计逻辑与不同算法的性能对比,宜从简单案例入手逐步过渡到复杂系统仿真。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值