当前页面: 开发资料首页 → JSP 专题 → JBuilder2005 Servlet开发之程序改造
摘要: JBuilder2005 Servlet开发之程序改造
1. <%
2. if(session.getAttribute("ses_userBean") == null)
3. {
4. response. sendRedirect("/webModule/login.jsp");
5. }
6. %>
问题二:每次生成login.jsp页面用户列表时都重新访问数据库
一般而言,Web应用程序的用户是不常发生变化的,但login.jsp页面的用户列表却在每次刷新时都从数据库表中获取用户数据并生成下拉列表。假设我们这个Web应用系统的用户数据(密码除外)不发生变化,那么我们就可以在Web应用程序启动时,就将用户Id和用户名下载缓存在Web应用服务器的内存中,这样每次在生成登录页面的用户名下拉框时,就不需要重新到数据库表中获取,而直接从Web应用服务器的内存中获取,在性能和效率上都会有极大的提高。
当然,将用户缓存在Web应用服务器中可能并不是很恰当,而诸如学历、性别、民族等字典表更适合缓存。对于那些不会或很少发生更改的数据、不应该每次都从数据库中获取,因为访问数据库的操作是高代价的操作,需要较多的I/O操作,CPU时间和网络通讯,在可能的情况下,应该尽量减少访问数据库的次数,这也是值对象设计模式的精髓所在。这里我们对用户数据进行缓存只是为了描述一种提高性能的解决思路。
本专题中,我们通过一个自动启动的Servlet改造生成用户列表的功能:在Web应用程序启动时,就通过这个Servlet将用户Id和用户名缓存到Web应用服务器中,生成下拉框的用户数据直接从缓存中读取。
新增的若干功能点
此外,我们还利用Servlet技术向原应用程序中加入两个新的功能作为系统日志模块:
功能一:添加一个Web容器的监听器的Servlet
在本专题中,我们将创建一个Servlet监听器,监听Web容器启动和关闭事件,在事件处理方法中记录系统启动和关闭系统事件的日志,日志以Excel文件格式保存。
功能二:通过一个Servlet下载文件
Servlet通过设置输出文件头参数向客户端返回各种类型的响应,如HTML、XML、WML等文本格式或声音、图像、Excel文件等二进制流格式。此外,还可以通过设置输出文件头参数使Servlet生成一个用于下载的文件。我们将通过一个Servlet下载Web应用程序的系统日志。
事前准备
通过File->New Project...新创建一个名为bookStore的工程,并在工程下创建名为webModule的Web模块,将原《JBuilder 2005实战JSP开发》专题的旧的bookStore工程源码拷贝到新的bookStore的工程目录下覆对应的目录。
此外,你还需要维护bookStore工程的类库,使其包含Oracle驱动器的JAR包和时间标签的JAR包,上一个专题已有提及此处从略。