用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

柯侧耳倾听者    -  云代码空间

—— 翱翔在Java世界的海洋之上

JavaBean和Servlet技术二

2017-12-07|900阅||

摘要:一、实验目的 熟悉监听器的主要功能 了解监听器的类型 掌握监听器的编程方法 掌握监听器的配置方法  


一、实验目的

熟悉监听器的主要功能

了解监听器的类型

掌握监听器的编程方法

掌握监听器的配置方法

 

二、预习内容及要求(要求写出预习内容)

Listener创建方法、Listener配置方法

 

三、实验内容、操作过程及实验结果记录

1.使用监听器技术,当每个用户登录系统主页面时,在页面左上角显示网站的访问次数,并显示当前在线用户列表,如图1所示。希望用户访问应用时,只有在关闭应用时,最新的访问次数才保存到数据库中,可以使用监听器监听ServletContext的启动和关闭。

 

1 页面访问次数和在线用户列表

实验步骤:

(1) 在数据库bookmgs下新建一个数据库表access_count,其中设置一个字段count,用于存放网站的访问次数。

(2) 在src目录下新建一个包cs.javaee.listener,在此包下新建一个监听器类ContextListener,此类中contextInitialized()方法可以监听到服务器的启动,此时,读取数据库表access_count中的count字段,contextDestroyed()方法可以在服务器关闭时将最新的访问次数更新到数据库中。ContextListener的代码如下:

package cs.javaee.listener;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.servlet.ServletContext;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

public class ContextListener implements ServletContextListener {

Connection cn=null;

@Override

public void contextDestroyed(ServletContextEvent arg0) {

//当服务器关闭时,把ServletContext中网站访问次数的属性写入数据库

ServletContext ctx=arg0.getServletContext();

String driver=ctx.getInitParameter("driver");

String url=ctx.getInitParameter("url");

String user=ctx.getInitParameter("user");

String password=ctx.getInitParameter("password");

int count=0;

if (ctx.getAttribute("access_count")!=null){

count=Integer.parseInt(ctx.getAttribute("access_count").toString());

}

//update access_count set count='1';

String sqlStr="update access_count set count=\'"+count+"\'";// 修改数据库中count字段的数值

try {

Class.forName(driver);

cn=DriverManager.getConnection(url,user,password);

Statement st=cn.createStatement();

int  affectedRows=st.executeUpdate(sqlStr);//修改数据库中的记录

if (affectedRows==1){

System.out.println("修改数据库数据成功!");

}

st.close();

cn.close();

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

@Override

public void contextInitialized(ServletContextEvent arg0) {

//当服务器启动时,从数据库中读取当前网站的访问次数

ServletContext ctx=arg0.getServletContext();

String driver=ctx.getInitParameter("driver");

String url=ctx.getInitParameter("url");

String user=ctx.getInitParameter("user");

String password=ctx.getInitParameter("password");

String sqlStr="select count from access_count";

try {

Class.forName(driver);

cn=DriverManager.getConnection(url,user,password);

Statement st=cn.createStatement();

ResultSet rs=st.executeQuery(sqlStr);

if (rs.next()){

int count=Integer.parseInt(rs.getString("count").toString());

ctx.setAttribute("access_count",count);

}else{

ctx.setAttribute("access_count",0);

System.out.println("ServletContext init....");

}

rs.close();

st.close();

cn.close();

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

(3) 修改mainPage.jsp页面的代码,使其能在页面上显示当前页面访问的次数。mainPage.jsp文件中的<body>标签的代码如下:

<body>

  <center>

     <h2>学生信息管理系统</h2>

  </center>

  <hr/>

  <% int count=Integer.parseInt(application.getAttribute("access_count").toString());

   count++;

   %>

 当前访问次数:<%=count %>

 <%

  application.setAttribute("access_count",count);

  %>

<%--

在服务器启动之时,读取数据库存储的数据,

只要访问主页,就需要将ServletContext中的access_count作加1操作,

再显示在页面上

退出Web应用时,将access_count写入到数据库表中 --%>

  <br>

    欢迎您,<%=session.getAttribute("userName") %> 

    <br><br>

  当前用户列表<br>

 <%

 List list=(List)application.getAttribute("userList");

 for (Object  o:list){

  out.println((String)o);

  out.println("<br/>");

 }

  System.out.println(session.getAttribute("userName"));

  %>

  <hr/>

  <a href="LogoutAction" >退出</a>

  </body>

 

四、实验过程中所遇问题思考与讨论(可写个人体会,或相关理论知识,根据个人具体情况选做)

通过这次的学习与实验,我进一步掌握了JavaWeb中有关JavaBean和Servlet技术的一些方法,也更加了解了JavaBean和Servlet技术的概念,为今后更好的学习JavaWeb做好铺垫,在学习的过程中,我更加深刻的体会到与老师和同学间的交流与合作是多么的重要,所以在今后的学习与实验当中,我们要善于发现问题,更要及时与老师反馈问题所在,并与老师和同学交流学习经验,共同解决问题,这样才能更好的学好JavaWeb这门课程。

 

    

顶 0踩 0收藏
文章评论
    发表评论

    个人资料

    • 昵称: 柯侧耳倾听者
    • 等级: 初级设计师
    • 积分: 2220
    • 代码: 64 个
    • 文章: 64 篇
    • 随想: 5 条
    • 访问: 43 次
    • 关注

    标签

    最新提问

      站长推荐