动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.将 DBMS 存储过程封装为会话 EJB.
.Java模式设计之单例模式(三).
.[Portal参考手册]生命周期.
.isNaN 方法.
.与JBuilder2007的第一次亲密接触.
.漫谈EJB在Java中的应用.
.Spring Framework中面向方面.
.Java无用论.
.用本地引用提高EJB访问效率.
.设计Java程序与C语言的接口.
.Java技术与XML常见问题之JAX-RPC.
.用Java访问SQL Server 2000数据库.
.第三讲 Java语言中的面向对象特.
.阴阳历算法.
.JBOSS的集群策略分析.
.JAVA教程 第三讲 Java.
.J2ME 2D小游戏入门之游戏的框架.
.[webservices开发]XFire实战.
.垃圾清理势在必行——Java垃圾收.
.通往Java认证的阶梯.

JBuilder2005 Servlet开发之程序改造

发表日期:2008-1-5 |


原登录模块的不足

  在《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的工程目录下覆对应的目录。

上一篇:用JBuilder7开发一个简单的J2EE 应用 人气:442
下一篇:使用ejbframe轻松编写EJB组件 人气:602
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-10 企业网站智能管理系统(TZIMS) v6
2008-10-10 拓文asp.net网站内容管理系统 v6
2008-10-10 动网论坛PHP版 v2.0++ Build 081
2008-10-10 免费时代CMS v5.0
2008-10-10 wodig第四季中文DIGG社区 v4.1 b
2008-10-10 老Y文章管理系统 v2.2 bulid 081
2008-10-10 魔法盒动感相册 ASP+SQL版 v2.0
2008-10-10 Asoft签到管理系统 v3.0 Pack1
2008-10-10 哥特人音乐网潮流留言本 v1.1
2008-9-29 酷狗音乐(原KuGoo)2008 v5.310 正
2008-9-29 QQTab 1.1
2008-9-29 网络传送带 Net Transport 2.64a
2008-9-29 谷歌金山词霸v1.8
2008-9-29 TweakVI 1.0 Build 1090
2008-9-29 ACDSee Pro 2.5 Build 333 汉化绿
2008-9-29 Winamp v5.541(2189) 周明波简体
2008-9-27 CCleaner 2.12.651
2008-9-27 Mozilla Thunderbird 2.0.0.17 英
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成