JSP脚本中的9个内置对象

本文详细介绍了JSP中的九大内置对象:application、session、request、page、config、exception、out、pageContext和response的功能及使用方法,帮助读者理解各对象的作用范围及应用场景。
1.application
    application是ServletContext类的实例,application对整个Web应用都有效。application就像是一个容器,只要JSP或是servlet把数据放入application对象中,那么整个应用中的JSP和servlet都可以访问这些数据。
在JSP中的使用方法:
<%application.setAttribute(name,value); %>//将数据放入application对象中。
<%application.getAttribute(name); %>//将数据从application对象中提取出来。但需要注意的是必须在上一步操作运行之后,即相关的JSP页面载入之后,才能取出放入的数据,否则取出的数据将为null
在servlet中的使用方法:
ServletContext sc=getServletConfig().getServletContext();
sc.setAttribute(name,value);//将数据放入application对象中。
sc.getAttribute(name);//将数据从application对象中取出。

2.session
    session是HttpSession类的实例,session仅对一次会话有效。JSP或servlet把数据放入session范围内,则其他JSP或servlet在本次会话过程中都可以访问session中的数据。
在JSP中的使用方法:
<%session.setAttribute(name,value); %>//将数据放入session对象中。
<%session.getAttribute(name); %>//将数据从session对象中取出。
在servlet中的使用方法:
HttpSession session=request.getSession();
session.setAttribute(name,value);//将数据放入session对象中。
session.getAttribute(name);//将数据从session对象中取出。

3.request
    request是HttpServletRequest类的实例,request仅对本次请求有效。JSP或servlet把数据放入request范围内,则其他JSP或servlet在本次请求中都可以访问request中的数据。
在JSP中的使用方法:
<%request.setAttribute(name,value); %>//将数据放入request对象中。
<%request.getAttribute(name); %>//将数据从request对象中取出。
在servlet中的使用方法:
request.setAttribute(name,value); //将数据放入request对象中。
request.getAttribute(name); //将数据从request对象中取出。

request还有其他用法:
用户可以通过request对象发送请求到某个页面,如GET请求和POST请求,一个请求通常包括请求头和请求参数。请求头通常由浏览器自动添加,而请求参数则通常由开发人员控制添加。
String getParameter(name):获取名为name的请求参数的值
Map getParameterMap():获取所有请求参数名和参数值组成的Map对象。
Enumeration getParameterNames():获取所有请求参数名组成的Enumeration对象。
String[] getParameterValues(name):当请求参数名name对应的值有多个的时候,用这个方法,返回的是多个值组成的数组。
String getHeader(name):获取指定请求头的值
Enumeration getHeaderNames():获取所有请求头的名称
Enumeration getHeaders(name):获取name请求头的多个值
当request中有中文的时候,需要转换字符编码,方法如下:
request.setCharacterEncoding("GBK");

4.page
    page是Object的实例(在servlet中为Object page=this;),即page代表的就是当前JSP页面本身。
在JSP中使用方法:(直接使用方法,不必再使用page对象去调用)
ServletConfig  getServletConfig():返回当前jsp页面的一个ServletConfig对象,即得到的就是config对象。
ServletContext  getServletContext():返回当前jsp页面的一个ServletContext对象,即得到的就是application对象。
String  getServletInfo():获取当前jsp页面的info属性

5.config
    config对象是ServletConfig类的实例,代表的是当前jsp的配置信息。
    通过config对象可以访问web.xml文件中配置的init-param参数,通过方法getInitParameter(name)获取参数的值。
    在web.xml中配置servlet:
    
<!--配置一个jsp页面的servlet-->
    <servlet>
        <servlet-name>config</servlet-name>
        <servlet-file>/configTest2.jsp</servlet-file>
        <init-param>
            <param-name>name</param-name>
            <param-value>crazyit.org</param-value>
        </init-param>
        <init-param>
            <param-name>age</param-name>
            <param-value>30</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <!--指定将config Servlet配置到指定路径-->
        <servlet-name>config</servlet-name>
        <url-pattern>/config</url-pattern>
    </servlet-mapping>
<!--配置一个src下的servlet-->
    <servlet>
        <servlet-name>firstServlet</servlet-name>
        <servlet-class>lee.FirstServlet</servlet-class>
        <init-param>
            <param-name>name</param-name>
            <param-value>crazyit.org</param-value>
        </init-param>
        <init-param>
            <param-name>age</param-name>
            <param-value>30</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <!--将名字为firstServlet的Servlet配置到指定路径-->
        <servlet-name>firstServlet</servlet-name>
        <url-pattern>/firstServlet</url-pattern>
    </servlet-mapping>


6.exception
    exception是Throwable类的实例,代表着JSP脚本中产生的错误和异常,是JSP异常机制的一部分。
    只有当jsp页面的page指令的isErrorPage为true时,该页面才会提供exception对象。exception通过getClass()和getMessage()方法来获得上一个异常页面异常的类和信息。

7.out
    out是JspWriter类的实例,通过out.print()方法可以直接将内容输出到jsp页面上。

8.pageContext对象
    pageContext是PageContext类的实例。使用pageContext对象可以访问page、request、session、application范围的变量。
    getAttribute(name):取得page范围内名为name的value。
    getAttribute(name,PageContext.REQUEST_SCOPE):取得request范围内名为name的value。
    getAttribute(name,PageContext.SESSION_SCOPE):取得session范围内名为name的value。
    getAttribute(name,PageContext.APPLICATION_SCOPE):取得application范围内名为name的value。
同样的,pageContext也提供了setAttribute()方法来将数据放到page、request、session、application范围内。
    setAttribute(name,value):将数据放到page范围内。
    setAttribute(name,value,PageContext.REQUEST_SCOPE):将数据放到request范围内。
    setAttribute(name,value,PageContext.SESSION_SCOPE):将数据放到session范围内。
    setAttribute(name,value,PageContext.APPLICATION_SCOPE):将数据放到application范围内。
不仅如此,pageContext还可以用于获取其他内置对象。
    ServletRequest getRequest():获取request对象。
    ServletResponse getResponse():获取response对象。
    ServletConfig getServletConfig():获取config对象。
    ServletContext getServletContext():获取application对象。
    HttpSession getSession():获取session对象。
因此在jsp或servlet中获取了pageContext对象,就可以通过它提供的上述方法来获取其各种内置对象。


9.response

    response是HttpServletResponse接口的实例,response代表服务器对客户端的响应。out对象可以生成字符客户端响应,但是如果要生成非字符的客户端响应就要用到response对象。
    ImageIO.write(image,"png",response.getOutputStream());
重定向功能:
response可以重定向一个请求,重定向相当于重新发起一次请求,因此会丢失所有的请求参数和request范围的属性。
    response.sendRedirect("redirect.jsp");
增加Cookie
    将Cookie值写入客户端硬盘,当客户端再一次发送请求时,Cookie值会作为请求参数一并发送给服务器端。
    Cookie c=new Cookie("username",name);
    c.setMaxAge(24*3600)//设置Cookie的生存期,括号里的单位为秒
    response.addCookie(c);//在response中添加Cookie,返回给客户端
    接收Cookie
    Cookie[] cookies=request.getCookies();//Cookie一般随request一并发送给服务器端
    for(Cookie c:cookies){
}
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)内容概要:本文档围绕基于遗传算法的异构分布式系统任务调度算法展开研究,重点介绍了一种结合遗传算法的新颖优化方法,并通过Matlab代码实现验证其在复杂调度问题中的有效性。文中还涵盖了多种智能优化算法在生产调度、经济调度、车间调度、无人机路径规划、微电网优化等领域的应用案例,展示了从理论建模到仿真实现的完整流程。此外,文档系统梳理了智能优化、机器学习、路径规划、电力系统管理等多个科研方向的技术体系与实际应用场景,强调“借力”工具与创新思维在科研中的重要性。; 适合人群:具备一定Matlab编程基础,从事智能优化、自动化、电力系统、控制工程等相关领域研究的研究生及科研人员,尤其适合正在开展调度优化、路径规划或算法改进类课题的研究者; 使用场景及目标:①学习遗传算法及其他智能优化算法(如粒子群、蜣螂优化、NSGA等)在任务调度中的设计与实现;②掌握Matlab/Simulink在科研仿真中的综合应用;③获取多领域(如微电网、无人机、车间调度)的算法复现与创新思路; 阅读建议:建议按目录顺序系统浏览,重点关注算法原理与代码实现的对应关系,结合提供的网盘资源下载完整代码进行调试与复现,同时注重从已有案例中提炼可迁移的科研方法与创新路径。
【微电网】【创新点】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究(Matlab代码实现)内容概要:本文提出了一种基于非支配排序的蜣螂优化算法(NSDBO),用于求解微电网多目标优化调度问题。该方法结合非支配排序机制,提升了传统蜣螂优化算法在处理多目标问题时的收敛性和分布性,有效解决了微电网调度中经济成本、碳排放、能源利用率等多个相互冲突目标的优化难题。研究构建了包含风、光、储能等多种分布式能源的微电网模型,并通过Matlab代码实现算法仿真,验证了NSDBO在寻找帕累托最优解集方面的优越性能,相较于其他多目标优化算法表现出更强的搜索能力和稳定性。; 适合人群:具备一定电力系统或优化算法基础,从事新能源、微电网、智能优化等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于微电网能量管理系统的多目标优化调度设计;②作为新型智能优化算法的研究与改进基础,用于解决复杂的多目标工程优化问题;③帮助理解非支配排序机制在进化算法中的集成方法及其在实际系统中的仿真实现。; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注非支配排序、拥挤度计算和蜣螂行为模拟的结合方式,并可通过替换目标函数或系统参数进行扩展实验,以掌握算法的适应性与调参技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值