今天进行了阶段性的考试,通过考试我发现我什么都不懂,简答题什么都不会,于是上网查了这几个问题:
jsp的内置对象有哪些?
config
page
pageContext
request
response
session
application
exception
out
1.request对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出
响应。它是HttpServletRequest类的实例。
2.response对象
response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是
HttpServletResponse类的实例。
3.session对象
session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个
WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实
例。
4.out对象
out对象是JspWriter类的实例,是向客户端输出内容常用的对象
5.page对象
page对象就是指向当前JSP页面本身,有点象类中的this指针,它是
java.lang.Object类的实例 。
6.application对象
application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启
动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不
同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性
的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application
对象的生命。它是ServletContext类的实例。
7.exception对象
exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对
象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译
。他实际上是java.lang.Throwable的对象。
8.pageContext对象
pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以
访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相
当于页面中所有功能的集大成者,它的本类名也叫pageContext。
9.config对象
config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括
Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息
(通过传递一ServletContext对象) 。
请求重定向与请求转发的比较
1.RequestDispatcher.forward方法只能将请求转发给同一个Web应用中的组件,
HttpServletResponse.sendRedirect不仅可以重定向到当前应用程序的其他资源,
还可以重定向到痛一个站点上的其他应用程序的资源,甚至是使用绝对URL重定向到其
他站点的资源。对于sendRedirect如果传递的URL以"/"开头,他是相对于整个Web站
点的根目录;对于forward如果传递的URL以"/"开头,它是相对于当前Web应用程序的
根目录。
2.sendRedirect对浏览器做出的响应是重新发出对另外一个URL的访问请求,
forward在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到
了响应结果
3.forward的调用者与被调用者之间共享相同的request对象和response对象,他们
属于同一个访问请求和响应过程;sendRedirect的调用者与被调用者使用各自的
request和response对象,属于两个独立的访问请求和响应过程。
JSP通过指令来执行一些预定义的功能,包括3种指令:
page指令
include指令
taglib指令
1.page指令
Page指令用于定义JSP文件中的全局属性。
格式:
<%@ page
[language="java"] //声明脚本语言的种类,目前只能用"java"
[extends="package.class"] //JSP编译时加入的Java Class的全名,但是得
慎重使用,它会限制JSP的编译能力
[import="[package.class|package.*],..."]
//需要导入的Java包的列表,下面这些包已经导入,不需要再指明:
//java.lang.*
//javax.servlet.*
//javax.servlet.jsp.*
//javax.servlet.http.*
[session="true|false"] //设定客户是否需要HTTP Session,如果设为
false,Session对象就不能使用,
//以及定义了scope=session的<jsp:include>元素使用会导致错误。
[buffer="none|8kb|sizekb"] //buffer的大小被out对象用于处理执行后的
JSP对客户浏览器的输出,默认8KB
[false"] //设置如果buffer溢出,是否需要强制输出,如果为false,如果
buffer溢出时就
//会导致一个意外错误。如果buffer设置为none,则不能把autoFlush设置
为false
[isThreadSafe="true|false"] //设置JSP文件是否能够多线程使用,也就是
JSP能否同时处理多个用户的请求
//如果设为false,一个JSP只能一次处理一个请求,默认为true
[info="text"] //一个文本在执行JSP将会被逐字加入JSP中,
//能够使用Servlet.getServletInfo方法返回
[errorPage="relativeURL"] //设置处理异常事件的JSP文件
[contentType="mimeType"[;charset=characterSet]"|"text/html;charset=IS
O-8859-1"]
//设置MIME类型,默认MIME类型为text/html,默认字符集为ISO-8859-1
[isErrorPage="true|false"]
例子:
<%@ page import="java.util.*,java.lang.*" %>
<%@ page buffer="8kb" %>
<%@ page errorPage="error.jsp" %>
说明:
<%@ page %>作用于整个JSP页面和静态的包含文件中,不能作用于动态的包含文件
,比如<jsp:include>包含进来的文件
可以在一个页面中用多个<%@ page %>指令,但除import属性外,每个属性只能用
一次
无论把<%@ page %>放在JSP文件的哪个位置,它的作用范围都是整个JSP页面,最
好放在JSP文件顶部
2.include指令
使用include指令可以在JSP中包含一个静态的文件,同时解析这个文件中的JSP语句
格式:
<%@ include file="relativeURL" %>
<%@ include file="相对位置" %>
说明:
file:这个包含文件的路径一般都是相对路径,不需要端口、协议或域名,
如"error.jsp","/templates/onlinestore.html","/beans/calendar.jsp"等
包含文件中不能使用<html>、</html>、<body>、</body>标记,因为这将会影响
原JSP文件中同样的标记,有时会导致错误。
3.taglib指令
定义一个标签库及其自定义标签的前缀。
格式:
<%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %>
例子:
<%@ taglib uri="WEB-INF/struts-html.tld" prefix="html" %>
说明:
uri:可以是一个相对或绝对路径
prefix:在自定义标签之前的前缀,比如<public:loop>中的public,如果这里不
写public,那么就是不合法的。