java web 学习 --第七天(Java三级考试)
第六天的学习内容如下:http://www.cnblogs.com/tobecrazy/p/3462244.html
application
application对象的方法与应用:
① setAttribute(String name, Object object) 把一个对象数据和一个属性绑定,并将这个对象数据放在servlet上下文环境中
② getAttribute(String name) 根据指定的属性名返回绑定的对象
③ removeAttribute(String name) 根据指定的属性名从servlet上下文环境中删除指定名称的属性
④ getAttributeNames() 返回一个Enumeration类型的枚举对象实例,其中包含servletContext对象实例内所有属性名
application对象其实就是ServletContext类对象的实例
jsp页面中的application对象实现了不同用户之间的数据共享功能在其中可以存放全局变量,生命期直到web服务器的关闭,在此期间application对象将一直放在内存中,与session对象不同系统中任何一个用户操作application对象并对其进行了修改,都将会影响到其他用户的访问。Application对象其实都是同一个,所有用户都共享这个内置的application对象。同一个页面中不可以出现两个同名的application对象
实例:使用application对象统计系统访问总人数,新建index.jsp页面
在head标签之间添加
<% /*Integer count=null; synchronized(application) { count=(Integer)application.getAttribute("counter"); if(count==null) count=new Integer(0); count=new Integer(count.intValue()+1); application.setAttribute("counter",count); }*/ Integer onLineCounter=(Integer)application.getAttribute("counter"); if(onLineCounter==null) { onLineCounter=new Integer(0); } int nowTotalCounter=onLineCounter.intValue()+1; synchronized(application) { application.setAttribute("counter",new Integer(nowTotalCounter)); } %>
之后在body添加
<%= nowTotalCounter %
体验application对象的生命期
如果关闭web服务器再重新启动,application对象就会销毁,再次访问index.jsp计数器便会从0开始
exception
exception对象需要在jsp的页面中应用page指令,设置isErrorPage属性为true 既<%@page isErrorPage=”true” %> ,Jsp才会创建出exception对象
exception对象中的方法:
① getMessage() 返回错误信息
② printStackTrace() 以标准错误的形式输出错误和错误堆栈
③ toString() 以字符串形式返回异常信息
exception 应用实例:
在error.jsp 添加如下代码
设置isErrorPage=”true”
<%@page isErrorPage="true"%>
在body标签中添加
<table><tr><td> <% out.print("Exception information"+exception.getMessage()); //get error message%><br></td></tr> <tr><td> <br>Stack Trace is: <%java.io.CharArrayWriter cw= new java.io.CharArrayWriter(); java.io.PrintWriter pw=new java.io.PrintWriter(cw,true); exception.printStackTrace(pw); out.print(cw.toString()); %> </td></tr></table>
在login.jsp添加
引入error message 的jsp页面
<%@ page isErrorPage="true" errorPage="error.jsp" %>
在body标签添加
<%
int x=0;
int y=3/x;
%>
再次访问login.jsp 就能看到exception,注意此时地址栏的URL还是login.jsp但是显示的错误却是error.jsp的内容,可见servlet是通过请求转发的方式实现的
Exception information/ by zero |
|