JSP执行过程和隐式对象和错误机制

深入解析JSP执行过程、异常处理机制及隐式对象应用
本文详细介绍了JSP的执行流程,包括客户端请求、Servlet源代码生成与编译、代码执行及结果响应。重点阐述了异常处理机制,包括异常页面、响应码捕获与错误输出。同时,对JSP的九个隐式对象进行了全面解析,如request、response、out、pageContext和session等,展示了它们在页面开发中的关键作用。

JSP执行过程和隐式对象和错误机制

一 jsp的执行过程

JSP的执行过程主要可以分为以下几点:

(1)客户端发出请求。

(2)Web容器将JSP转译成Servlet源代码。

(3)Web容器将产生的源代码进行编译。

(4)Web容器加载编译后的代码并执行。

(5)把执行结果响应至客户端。

二 jsp的异常处理机制

1.异常处理机制出现的原因:抓取出现的错误,使得能够更清楚的认识到错误的原因。

2.处理异常的操作

(1)创建一个用于异常处理的jsp页面

1.导入<%@page isErrorPage="true"%>之后,可以使用exception对象

在body中写异常处理的机制,即是写异常的提示

出现了异常:<%=exception%>,请检查JSP页面。<br/>

<!-- 输出异常处理的错误消息 -->

<%exception.printStackTrace(new PrintWriter(out)); %>

(2)指定页面的抛出异常的捕获:可能是哪个页面有异常,需要写入:

<%@ page errorPage="error.jsp"%>

指定跳转到哪个错误页

(3)多个页面都出现异常的捕获---在整个工程下都可以捕获,在web.xml下:

如果在每个有异常的页面都倒入<%@ page errorPage="error.jsp"%>,会是个很麻烦的事情,所有在web.xml中设置会更好

1、指定异常的捕获

<error-page>

<exception-type>java.lang.ArithmeticException</exception-type>

<location>/error.jsp</location>

</error-page>

2、响应码的捕获

<error-page>

<error-code>404</error-code>

<location>/404error.jsp</location>

</error-page>

注:

(1)<error-code></error-code>和

<exception-type></exception-type>不同时使用

(2)可以有多个</error-page>标签

三 jsp的隐式对象

1. JSP隐式对象是Web容器加载的一组类的实例。它是可以直接在JSP页面使用的对象。分为4个主要类别:

– 输入和输出对象:控制页面的输入和输出(request、response、out)。

– 作用域通信对象:检索与JSP页面的Servlet相关的信息(session、application、pageContext)。

– Servlet对象:提供有关页面环境的信息(page、config)。

– 错误对象:处理页面中的错误(exception)。

2. 九个隐式对象的详细介绍

(1)request对象

request隐式对象表示客户端的请求,包含了所有的请求信息,常用的方法:

• String getParameter(String name):根据页面表单组件名称获取请求页面提交的数据。

• String getParameterValues(Stringname):获取页面请求中一个表单组件对应多个值时的用户的请求数据(例如复选框)。

(2)response 对象

response隐式对象处理JSP生成的响应,然后将响应结果发送给客户端,常用的方法:

• void setContentType(String name):设置作为响应生成的内容的类型和字符编码。

• void sendRedirect(String name):发送一个响应给浏览器,指示其应请求另一个URL(会丢失数据,跳转后不再执行sendRedirect方法下面的代码)。

(3)out对象

设置out对象的缓冲区大小

<%@ page buffer="64kb" %>

可能出现的问题:

(1)输出的顺序问题

<%

//写到自己的缓冲区中

out.print("111111");

out.flush();//可以按顺序写入

PrintWriter out1=response.getWriter();

//得到的是servlet引擎所得到的缓冲区

out1.println("222222");

%>

(2)使用冲突问题

通过字节流获取,会抛异常(java.lang.IllegalStateException),因为在这句话之前后有静态的代码,会有out.println();输出的对象

<%

ServletOutputStream sos =response.getOutputStream();

sos.print("www.it315.com");

%>

(3)页面跳转的问题

//请求的转发---系统自动的调用字节流

response.getWriter();//以后的都是打印输出流

RequestDispatcher rd =request.getRequestDispatcher("MyHtml.html");

rd.forward(request,response);

注:Out怎么得到的--

Jspwriter out 是在Priwriter的基础上加了缓冲区

(4)pageContext对象-----作用域通信对象

pageContext对象是javax.servlet.jsp.PageContext类的实例对象

pageContext封装了当前jsp页面的运行信息

pageContext对象可以获取其他对象的方法,通过传参数在java中运行

每一个页面都有自己的pageContext对象,不会有页面的跳转,代表的是当前的页

注:

pageContext.getAttribute("name",PageContext.REQUEST_SCOPE);

等同于

String name =(String)request.getAttribute("name");

(5)session对象-----作用域通信对象

session对象表示用户的会话状况,用此项机制可以轻易识别每一个用户,能保存和跟踪用户的会话状态。session对象最常用的方法:

void setAttribute(String name,Object value)

void getAttribute(String name)

(6)application对象

– application对象作用于整个应用程序,所有的客户端窗口都可以共享该对象,从服务器开始就存在,直到服务器关闭为止。application对象最常用的方法:

• void setAttribute(String name, Objectvalue):以名称/值的方式,将一个对象的值存放到application中(存的值的类型为Object)。

• void getAttribute(String name):根据名称去获取application中存放对象的值(获取的值的类型为Object)。

补充:

在<!%%>中定义的方法不能输出,可以给方法传一个参数,因为out对象是局部的变量,在整个类中不可能使用

Public void fun(PageContextpageContext){

int var =10 ;

Try{

pageContext.getOut().println(var);

}catch(Exception e){

}

}

 

【无人机】基于改进粒子群算法的无人机路径规划研究[遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
标题中的"EthernetIP-master.zip"压缩文档涉及工业自动化领域的以太网通信协议EtherNet/IP。该协议由罗克韦尔自动化公司基于TCP/IP技术架构开发,已广泛应用于ControlLogix系列控制设备。该压缩包内可能封装了协议实现代码、技术文档或测试工具等核心组件。 根据描述信息判断,该资源主要用于验证EtherNet/IP通信功能,可能包含测试用例、参数配置模板及故障诊断方案。标签系统通过多种拼写形强化了协议主题标识,其中"swimo6q"字段需结合具体应用场景才能准确定义其技术含义。 从文件结构分析,该压缩包采用主分支命名规范,符合开源项目管理的基本特征。解压后预期可获取以下技术资料: 1. 项目说明文档:阐述开发目标、环境配置要求及授权条款 2. 核心算法源码:采用工业级编程语言实现的通信协议栈 3. 参数配置文件:预设网络地址、通信端口等连接参数 4. 自动化测试套件:包含协议一致性验证性能基准测试 5. 技术参考手册:详细说明API接口规范与集成方法 6. 应用示范程序:展示设备数据交换的标准流程 7. 工程构建脚本:支持跨平台编译部署流程 8. 法律声明文件:明确知识产权归属及使用限制 该测试平台可用于构建协议仿真环境,验证工业控制器与现场设备间的数据交互可靠性。在正部署前开展此测试,能够有效识别系统兼容性问题,提升工程实施质量。建议用户在解压文件后优先查阅许可协议,严格遵循技术文档的操作指引,同时需具备EtherNet/IP协议栈的基础知识以深入理解通信机制。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值