JBuilder2005 Servlet开辟之程序变革[Java编程]
本文“JBuilder2005 Servlet开辟之程序变革[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
原登录模块的不足
在JBuilder 2005实战JSP开辟专题中,我们完好用JSP技术实现了一个用户登录模块.它供应了一个登录的页面,在用户登录成功后转向欢送页面,而登录失利后转向登录失利的页面,并且为每个页面供应了一个错误处理页面,当功效页面发生错误时,以一种友好的方法向用户报告错误.但这个模块还存在一些问题:
问题一:没有在每个JSP页面查验用户能否有登录
Web利用程序的JSP页面几近都需求在考证用户的身份之后才可以拜候,也即必须保证JSP页面处理恳求之前用户已经确切登录系统了,不然应当回绝呼应并重定向到登录页面.不然假如一个不法的用户直接通过URL拜候JSP页面,就会产生系统安全性问题.
我们举一个例子:假若有一个用户直接通过http://localhost:8080/webModule/welcome.jsp拜候welcome.jsp界面,我们必须先判断用户有没有登录(通过查看session中能否有以"ses_userBean"命名的对象),假如已经登录,翻开welcome.jsp页面,假如没有登录重定向login.jsp登录页面.
提醒:
当然改正规的作法应当是通过web.XML配置文件的<security-constraint>等配置项按角色对Web资源的拜候权限举行配置,但这种方法确切是对比麻烦的.所以我们普通采取在每一个恳求到达处理程序前判断用户的登录信息的方法处理页面拜候权限的问题. 为了到达避免不法用户拜候功效页面的目的,你当然可以像劳模一样在每一个需求保护的JSP页面中增添一段以下的判断代码加以办理:
1.<%
2.if(session.getAttribute("ses_userBean") == null)
3.{
4.response.sendRedirect("/webModule/login.jsp");
5.}
6.%>
但关于一个拥有成百上千个需保护JSP页面的大型Web利用程序,在每一个页面中增添这段相同的代码,不但单调乏味,违反面向对象的目标,并且简单呈现漏网之鱼.在本专题中,我们将通过一个Servlet过滤器轻松漂亮地完成这个任务.
问题二:每次生成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包,上一个专题已有说起此处从略.
以上是“JBuilder2005 Servlet开辟之程序变革[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |