1、列出JSP的九大内置对象,并说明其用途。
内置对象定义:可以不加声明就在JSP页面中使用的成员变量
JSP共有以下9种基本内置组件:
(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对象)
2、forward 和redirect的区别?
(1)从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器。浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址。所以地址栏显示的是新的URL。
(2)从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据。
redirect:不能共享数据。
(3)从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块。
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等。
(4)从效率来说
forward:高
redirect:低
3、Java中Error与Exception的区别?
Error类和Exception类都继承自Throwable类。
二者的不同之处:
Exception:
(1)可以是可被控制(checked) 或不可控制的(unchecked)。
(2)表示一个由程序员导致的错误。
(3)应该在应用程序级被处理。
Error:
(1)总是不可控制的(unchecked)。
(2)经常用来用于表示系统错误或低层资源的错误。
(3)如何可能的话,应该在系统级被捕捉。
4、JAVA中final,finally,finalize的区别?
(1)final是全局变量声明的时候使用,意思是这个变量不可被修改
(2)finally是在try-catch-finally块中配套使用,作用是,不管代码执行了try还是catch,最后一定会执行finally里面的代码
(3)finalize是召唤垃圾收集器的命令,使用后,系统就安排一次垃圾回收
5、写出一个单例类。
在java中实现单件模式需要私有的构造器、一个静态方法、一个静态变量。
public class Singleton()
{
public static Singleton uniqueInstance; //一个静态变量
private Singleton() {} //私有的构造器
public static Singleton getInstance() //一个静态方法
{
if(uniqueInstance==null)
{
uniqueInstance=new Singleton();
}
return uniqueInstance;
}
}