为了方便WEB程序的开发,在JSP页面中内置了一些默认的对象,这些对象不需要预先声明就可以在脚本代码和表达式中使用。
内置对象一共有九个:
request 取得客户端与系统的信息
response 响应客户端信息
out 控制数据输出的操作
session 记录与处理上线者的个别数据
application 记录与处理上线者共享的数据
pageContext 存取与处理系统运行时的各项信息
config 取得JSP编译后的Servlet信息
page 代表目前这个JSP网页对象
exception 异常处理机制
关联:
request和response
request让服务器取得用户在网页表单中所输入的内容,response提供服务器端程序响应客户端信息所需要的功能。
application和session
基本上用于记录和处理JSP网页之间的共享数据
由于Internet本上是一种无联机状态的程序,当页面文件从网站服务器发送到客户端的浏览器之后,客户端和服务器端之间就没有任何联机状态存在,这个先天的缺陷,让网页无法存储应用程序运行期间所需的共享数据,于是出现了application和session。
out
out用于呈现经过程序计算过的网页,服务器利用out将所需要输出的内容,在传送至网页的时候动态写入客户端
config pageContext page
服务器端可以应用这三个对象,存取网页运行期间的各种环境信息,同时将网页当做对象来操作。
exception
提供了强大的异常处理机制。
request
主要用于接收客户端通过HTTP协议连接传输到服务器端的数据。在客户端的请求中如果有参数,则该对象就有一个参数列表,它通常是HttpServletRequest的子类,在客户端发出每个请求时,服务器都会创建一个request对象,并把请求数据封装到request中,然后再调用Servlet.servlet()方法时传递给servlet()方法,这说明service()方法中可以通过request对象来获取请求参数。
request对象常用的方法有很多,可以获取各种各样的服务器、客户端的信息。
request应用实例,获取请求参数
String getParameter(String name) 通过指定名称获取参数值
用表单和超链接。<jsp:param>传递参数的时候,使用getParameter(String name)接收传递的参数
返回给定参数的值,当传递给此方法的参数名没有实际参数与之对应时,返回null
使用getParameter(String name)取得的值都是字符串类型,需要转换为所需要的类型。
double r;
r = Double.parseDouble(str)
Enumeration getParameterNames();获取所有参数的名字
String[] getParameterValues(String name)当多个参数名字相同的时候,可以使用方法来获取,主要用于获取复选框的值或是下拉列表带multipe属性的值
域对象功能
如果一个请求中经历了多个Servlet,那么多个Servlet就可以使用request来共享数据
方法和ServletContext的相同
请求转发
RequestDispatcher rd = request.getRuquestDispatcher("/BServlet");
rd.forward(request,response);
请求转发是一个请求,重定向是两个
转发后地址栏不会有变化,而重定向会有变化
请求转发的目标只能是本应用中的资源,重定向的目标可以是其他应用
请求转发对AServlet和BServlet的请求方法是相同的,要么都是GET 要么都是POST
重定向的第二个请求一定是GET
转发:客户端发送给服务器,服务器调用AServlet,A使用转发,到BServlet,B返回给这个服务器,服务器返回给客户端。
由BServlet完成响应体,AServlet中还可以完成响应头,即:留头不留体。
包含:客户端发送给服务器,服务器调用AServlet,AServlet中包含了BServlet。
由AServlet和BServlet共同完成响应头和响应体
response
用于将服务器端数据发送到客户端以响应客户端的请求。response对象实现了HttpServletResponse,可对客户的请求作出动态的响应,向客户端发送数据,例如:Cookie、HTTP文件头信息等。
重定向:服务武器通知浏览器去访问另一个地址,即在发出另一个请求response的对象常用方法一般都是设置用的,很多比如:setContentType() 等等
response对象应用实例
response.setContentType("text/html;charset=utf-8");
这样,客户端浏览器会使用content-type头来解读响应数据,还会调用response.setCharacterEncoding("utf-8")保证输出给客户端的字符都是使用UTF-8编码的
1客户端发出请求AServlet,服务器收到后传到AServlet中,AServlet重定向将结果返回给服务器,2服务器响应吗302,以及设置location头为BServlet发送给客户端 3 客户端请求BServlet,然后正常。
response.sendRedriect("/xiangmu/BServlet")
out
主要是把信息发送给客户端的浏览器,个人感觉有点像在控制台输出的效果。
session
session存在于服务器端,当客户端用户想服务器提出请求打开网页时,弱该网页中包含了为用户建立session的程序代码,则session则会产生。可用来存放属于该用户的数据,且每一个网页都可以使用这个session的内容。
session对象的ID
当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,同时分配一个String类型的ID 号,JSP引擎同时将这个ID号发送到客户端,存放在Cookie中,这样session对象和客户端之间就简历了一一对应的关系。每生成一个session,服务器都会给它一个编号,并且该编号不会重复,这样服务器才能根据编号来识别session,并且正确的处理某一特定的session及其提供的服务。
session的有效期限
1 用户关闭当前正在使用的浏览器程序
2 关闭网页服务器
3 用户未向服务器提出请求超过预设的时间,Tomcat的预设时间是30分钟
4 运行程序结束session
访问session中的数据
session对象是由HttpSession接口衍生而来的。
session.setAttribute("变量名字",变量内容); 设置session的值
session.getAttribute("变量名称") 返回session的值
session.getAttributeNames() 返回所有session中的变量名称
session.removeAttribute("变量名称") 清除session中的变量
session.invalidate() 结束session
application(作用域和session不同)
可视为一个所有联机用户共享的数据存取区,无论网站中任何一份页面,用户存取的内容均相同,可以将其视为传统应用程序中的全局共享数据。
1 application对象中保存了一个应用系统中公有的数据,一旦创建了application对象,除非服务器关闭,否则application对象将一直存在
2 所有的客户访问的application对象都是同一个
3 application对象仅有一个,由服务器创建,由服务器清除,不能被用户创建和清除
各种方法
application.setAttribute(“变量名称”,变量内容)
application.getAttribute("变量名称")
application.removeAttribute(“变量名称”)
application.getAttributeNames();
pageContext
可以得到当前页面中所有其他的JSP隐含对象
例如getRequest() getResponse() getOut() 和 getSession()
并提供了处理JSP各个对象与属性的方法
config对象
标识Servlet的配置 主要用来取得服务器的配置信息,在JSP页面通过JSP Container 进行初始化时被传递。 使用config对象,在修改需要在Web服务器中处理的变量的时候,不用逐一修改JSP文件,只需要改相应文件的内容。例如,计数器页面关闭的时候回重置为0 ,可以通过设置服务器配置信息来保存
page对象
类似于java中的this,指向JSP程序本身的对象
exception
顾名思义,不过必须在isErrorPage="true"的时候才能访问exception对象。