分享
 
 
 

如何建立一个带登陆页面及角色的Struts数据库应用程序

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

如何建立一个带登陆页面及角色的Struts数据库应用程序

[目标]

本例的目标是实现一个用户登陆应用程序。用SQLServer 2000数据库保存用户信息。实现用户登陆页面、用户登陆验证、登陆检查标签等功能。

定义一个名为“users”表的字段:

录入一些测试数据:

例如上面的数据,一个用户可能有一个角色,也可以有多个角色。对于多个角色,可以用多条记录来表示,一条记录表示一个角色,也可以用一条记录表示多个角色,每个角色用“;”来分开。

[效果]

欢迎页面:

登陆页面:

登陆完成后主菜单页面:

如果不登陆而是直接运行主菜单页面用户查询页面,将会自动先转到用户登陆页面,这里不再给出演示效果图。

[背景知识]

[步骤]

本例与《如何实现Struts 数据库应用程序》中的步骤相比,除了在建立新项目时一个选择“带登陆页面及角色的Struts数据库应用模板”而另一个选择“空的Struts数据库应用模板”,以及在JSP页面中需要检查用户是否已登陆的地方加一个标签“<app:checkLogon role=“system”/>”之外,其它步骤完全一样,这样相同的步骤详情见《如何实现Struts 数据库应用程序》。

1、打开Visual Struts开发环境:

从桌面JavaWebStudio快揵或BIN目录下的JavaWebStudio.exe文件启动JavaWebStudio的Visual Struts开发环境。

2、建立一个“空的Struts数据库应用模板”应用程序:

选择菜单“文件”—“新建”—“新建项目”,弹出新建项目对话框,如下图1所示:

在对话框中选择“空的Struts数据库应用模板”,在项目名称中输入“Logon”,package (包名)和位置(项目的路径)采用默认的值就行,当然也可以根据需要改变。最后点击“确定”按钮完成新项目的建立。

在Logon项目根目录下包含四个子目录和两个文件,这是JavaWebStudio项目的标准结构,最好不要改变它们默认的名称,否则会出现问题。

利用“带登陆页面及角色的Struts数据库应用模板”生成的项目,自动生成了用户登陆所需的logon.jsp和logonAction.java文件,同时还生成了用于用户登陆演示的文件,其中index.htm是带有一个“登陆”按钮,点击“登陆”按钮转到logon.jsp登陆输入页面,登陆输入完成并提交,如果登陆通过,则转到mainMenu.jsp主菜单页面。在主菜单页面</head>标签后加一个标签“<app:checkLogon role="system"/>”用于检查用户是否已经登陆,其中role属性用于指定用户角色,这里表示只有角色是"system"的用户才能通过。如果已登陆就继续显示页面,否则自动转到登陆页。

logon.jsp文件:

index.htm文件:

mainMenu.jsp文件:

3、利用Struts数据库应用文件向导建立新的应用:

在JavaWebStudio文件管理器内点击鼠标右键,在弹出的菜单中选择“Struts数据库应用文件向导”进入Struts文件向导对话框,也可以选择菜单“文件”—“新建”—“Struts数据库应用文件向导”进入Struts文件向导对话框。

在Struts文件向导对话框JSP文件标签下的文件名输入栏中输入“UserEdit”文件名,其它文件采用默认的设置。

(1)输入文件名:

(2)从数据源中导入SQL语句及数据表的字段信息(字段名和字段类型):

(3)从数据据表中选择所需的表“Users”。

需要特别注意的是,这里的“从数据源中导入SQL语句及数据表的字段信息”及“从数据据表中选择所需的表”仅仅是为了自动生成SQL语句及读取字段信息,这里完成可以直接手工输入,与该项目的数据库连接池的配置无关,下面第(4)点将另行配置数据库连接池。

接下来配置数据库连接池,其它属性页可采用默认的就行了,下面直接转去数据连接配置属性页即可。

(4)JSPOUT属性页设置:

JSPOUT属性页的设置是唯一与《如何实现Struts 数据库应用程序》中的步骤不同之处,这是本例的核心内容。从上图可看出,我们要做的仅仅是把JSPOUT属性页的设置中把“记录操作”选择项中分别选定记录的中添加即可。

(5)配置数据库连接池:

这里需要注意的是用户登陆也是用到这个数据库连接配置。

(6)在新生成的JSP文件中加上用户登陆检查标签<app:checkLogon role=“system”/>:

新生成的JSP文件有三个,查询条件输入文件UserEdit.jsp、添加新记录输入文件UserEditInsert.jsp和查询结果显示文件UserEditOut.jsp。分别在这三个文件的</head>标签后加上用户登陆检查标签<app:checkLogon role=“system”/>。

4、项目文件结构

项目目录结构分析见《如何实现最简单的Struts程序》,这次Struts数据库应用文件向导自动生成了六个文件,其中web目录下是输入、输出两个JSP文件,src目录下是Java文件。除了文件名是我们输入之外,所有程序源代码都是文件向导自动生成的,所有的配置也是自动完成的。

刷新JavaWebStudio文件管理器,这时发现web目录下自动生成了三个文件,分别是UserEdit.jsp和UserEdit.jsp和UserEditInsert.jsp,前者是输入JSP文件,中间是输出JSP文件,后者是添加记录页面文件;src\emptyprj目录下自动生成了四个文件,分别是UserEdit Action.java、UserEdit Form.java,前者是Action文件,后者是FormAction文件;还有是数据库操作文件UserEdit.java和UserEditDAO.java,前者用于保存数据表记录的Bean,后者是数据库操作DAO文件。

4.1、修改DAO文件:

如果数据选择的是SQL Server 2000,需要把DAO文件中的下面代码:

//用SQL Server请加入下行:

//con.setAutoCommit(true);

//SQL Server

都改写成如下代码:

//用SQL Server请加入下行:

con.setAutoCommit(true); //注意啦!!就是这一行,原来是注解掉了,现在是把注解去掉!!

//SQL Server

通过上述改写,才能通过JDBC对SQL Server 2000进行记录更新、删除和添加等操作。

4.2 在需要进行用户登陆识别的地方加入登陆识别标签

(1)UserEdit.jsp文件:

在<body>前加上<app:checkLogon role=“system”/>标签

<%@ page contentType="text/html;charset=GB2312" language="java" %>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>

<html:html>

<head>

<title></title>

<html:base/>

</head>

<app:checkLogon role=“system”/>

<body bgcolor="white">

<html:form action="/UserEditAction.do?action=search&search=search&expression=NULL" method="post">

请输入要查找的 username : <html:text property="username" />

<html:submit value="查找" />

<html:reset value="重写" />

</html:form>

<html:form action="UserEditAction.do?action=search&expression=NULL" method="post">

<html:submit value="全部显示" />

</html:form>

</body>

</html:html>

4.3 在mainMenu.jsp主菜单页面的左页面left.htm中加入一个新菜单项“用户查查询”:

加入的代码主要是:<A href="UserEdit.jsp" target=main>用户查询</A>

5、编译、启动服务器、运行:

通过工具条上的按键分别编译项目及启动服务器,然后把开index.htm并通过工具条上的“运行”按键运行index.htm,并输入相应的数据:

点击“登陆”:

输入正确的用户名和密码,选择“发送”,转到主菜单页面:

如果不登陆而是直接运行mainMenu.jsp主菜单页面或UserEdit.jsp查询页面,将会自动先转到用户登陆页面,这里不再演示。

另外,如果用户没有这样我角色,也无法登陆该页面。

通过上述步骤,实现了预计的目标功能。

[扩展内容]

上面是用<app:checkLogon role=“system”/>标签来检查用户是否已登陆以及用户是否含有role属性指定的用户角色,这里只能放置一个角色,如果要放置多个角色,如何处理?

其它非常简单。只要对上述程序进行如下两步改进就行了:

1、 标签用<app:checkLogon role=“角色1”; “角色2”; “角色3”/>这种方式表示。每个角色用“;”分开即可,表示只要登陆用户有这个role属性指定的角色之中的一个角色即可通过。

2、 把CheckLogonTag.java文件的CheckRole()函数改成如下:

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有