【摘要】:完成本任务所用到的主要知识点:JSP 内置对象作用域对象JSP 页面的构成创建JSP 应用程序,实现简单的页面访问统计功能。而我们的页面访问统计就涉及整个Web 应用程序,所以可以定义一个变量用于表示访问次数,将其保存到application 中,共享给所有客户端。相当于这些对象都是局部变量,所以在JSP 声明中定义的方法若要使用这些对象要么在方法中自己定义,要么通过参数传入。发布sj6_1 项目,并启动Tomcat 服务器。图上机5.1页面访问统计效果图
完成本任务所用到的主要知识点:
➢ JSP 内置对象
➢ 作用域对象
➢ JSP 页面的构成
创建JSP 应用程序,实现简单的页面访问统计功能。
在Java Web 应用程序中,一共有4 种作用域:page、request、session、application。page 作用域代表页面上下文,用来存储与一个页面相关的数据;request 对象代表请求上下文,用来存储与Web 客户端发出的一个请求相关的数据;session 作用域用来存储与某个Web 客户端的一个用户相关的数据;application 作用域代表Web 应用程序的上下文,用来存储与整个Web 应用程序相关的数据。而我们的页面访问统计就涉及整个Web 应用程序,所以可以定义一个变量用于表示访问次数,将其保存到application 中,共享给所有客户端。
(1)建立项目sj6_1。(www.chuimin.cn)
(2)建立JSP 文件counter.jsp,代码如下。
看到上述代码后,大家可能感到奇怪:application 不是JSP 页面的内置对象吗,为什么addCount()和getCount()方法还需要将application 作为参数传入后再使用呢?其实,JSP 的内置对象不需要手动定义是因为在JSP 转换后的Servlet 类中已经自动包含这些对象的定义了,而且这些对象的定义都包含在Servlet 类的服务方法(_jspService()方法)中,其中pageContext、session、application、config、out 和page 对象都在_jspService()方法中定义,request 和response 对象是_jspService()方法的参数,而exception 对象只有将页面page 指令的isErrorPage属性值设置为true 时,才会在_jspService()方法中定义。相当于这些对象都是局部变量,所以在JSP 声明中定义的方法若要使用这些对象要么在方法中自己定义,要么通过参数传入。
在counter.jsp 页面中,addCount()方法用于增加访问次数,先从application 中取出count 变量的值,增加1 后再将count 变量存入application 中。getCount()用于从application 中获取count 变量的值。当每次客户端请求该页面时,都会执行Scriptlet 中的代码。在Scriptlet 中,首先调用addCount()方法增加访问次数,然后调用getCount()方法获取访问次数,最后将访问次数输出。输出访问次数时,不是输出的纯数字,而是输出的数字对应的图片。
(3)运行测试。发布sj6_1 项目,并启动Tomcat 服务器。页面被访问327 次后的效果如图上机5.1 所示。
图上机5.1 页面访问统计效果图
相关推荐