平时成绩记分系统代码实现过程v10用户登录.docx

上传人:b****8 文档编号:9293765 上传时间:2023-02-04 格式:DOCX 页数:29 大小:198.57KB
下载 相关 举报
平时成绩记分系统代码实现过程v10用户登录.docx_第1页
第1页 / 共29页
平时成绩记分系统代码实现过程v10用户登录.docx_第2页
第2页 / 共29页
平时成绩记分系统代码实现过程v10用户登录.docx_第3页
第3页 / 共29页
平时成绩记分系统代码实现过程v10用户登录.docx_第4页
第4页 / 共29页
平时成绩记分系统代码实现过程v10用户登录.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

平时成绩记分系统代码实现过程v10用户登录.docx

《平时成绩记分系统代码实现过程v10用户登录.docx》由会员分享,可在线阅读,更多相关《平时成绩记分系统代码实现过程v10用户登录.docx(29页珍藏版)》请在冰豆网上搜索。

平时成绩记分系统代码实现过程v10用户登录.docx

平时成绩记分系统代码实现过程v10用户登录

平时成绩记分系统项目代码实现过程-用户登录

目录

1创建具有SSH能力的Web工程1

2用户登录功能1

2.1登录用户数据库设计1

2.2创建用户数据表1

2.3添加管理员数据2

2.4创建用户实体类dao.LoginUser及用户访问类dao.LoginUserDAO2

2.5创建用户服务类service.UserService8

2.6修改applicationContext.xml,手动添加UserServicebean。

9

2.7用户登录界面(/login.jsp)9

2.8登录跳转逻辑(web.UserAction.login)9

2.9配置struts.xml12

2.10添加两个简单的业务主页12

2.11新建错误提示页面12

2.12小结(文件目录结构)13

2.13测试14

2.13.1登录14

3小技巧14

3.1设置JSP的字符编码及字符集14

3.2JSP传递参数到Action成员15

3.3在创建数据表、数据库等对象时,注意不要使用关键字作为对象的名称。

15

图目录

图2.1创建用户数据表1

图2.2Hibernate创建用户类3

图2.3文件目录结构14

图2.4登录界面15

图2.5管理员登录成功后跳转的页面15

代码目录

代码2.1创建用户数据表1

代码2.2添加管理员数据的SQL代码2

代码2.3用户类接口4

代码2.4用户实体类4

代码2.5实体访问接口类5

代码2.6实体访问类5

代码2.7用户服务接口类8

代码2.8用户服务类8

代码2.9手动添加UserServicebean9

代码2.10用户登录界面(/login.jsp)9

代码2.11登录跳转逻辑(UserAction.login)10

代码2.12BaseAction.java11

代码2.13用户工厂11

代码2.14用户工厂接口11

代码2.15applicationContext.xml中的对UserAction类bean的配置代码11

代码2.16Struts.xml12

代码2.17空白的业务主页12

代码2.18错误提示页面error.jsp13

代码3.1JSP传递参数到Action成员示例115

代码3.2JSP传递参数到Action成员示例215

1创建具有SSH能力的Web工程

添加三个Java源代码包:

dao、service和web,以及在WebRoot下添加jsp文件夹(存放jsp文件,下设user、student、admin及teacher子文件夹)。

同时要记得:

1)手工配置web.xml,以便添加spring配置信息和监听;

2)手工在applicationContext.xml中配置事务特性;

3)添加数据库驱动。

步骤省略,详参另一份文档“Struts2.1、Spring3.0、Hibernate3.3框架整合-用户登录示例(更新).doc”。

2用户登录功能

登录用户数据库设计

系统主要有两类用户:

教师(也就是管理员)和学生。

由于教师登录名固定为admin,密码则可由外部设置,所以实际上需要管理的用户只有学生一种类型。

但为了保留系统的扩展能力,我们还是设置登录用户超级实体,作为将来管理员、教师和学生的泛化对象。

登录用户的主要属性有两个:

登录名(id)和登录密码(password)。

创建用户数据表

该表记录系统所有用户的登录信息。

其创建界面及代码(SQLSERVER)如下:

创建用户数据表

代码2.1创建用户数据表

/******对象:

Table[dbo].[loginUser]脚本日期:

11/11/201119:

47:

20******/

CREATETABLE[dbo].[loginUser](

[id][varchar](20)NOTNULL,

[password][varchar](50)NULL,

CONSTRAINT[PK_user]PRIMARYKEYCLUSTERED

[id]ASC

)WITH(PAD_INDEX=OFF,IGNORE_DUP_KEY=OFF)ON[PRIMARY]

)ON[PRIMARY]

GO

SETANSI_PADDINGOFF

GO

EXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'登录名',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'user',@level2type=N'COLUMN',@level2name=N'id'

GO

EXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'密码',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'user',@level2type=N'COLUMN',@level2name=N'password'

添加管理员数据

因为user表可以记录各类用户,所以我们还是把管理员的登录信息放在该表中,而不是配置文件中。

这样就可以以统一的方式由管理员登录后修改自己的密码等信息了。

添加管理员数据的SQL代码如下:

代码2.2添加管理员数据的SQL代码

INSERTINTO[dbo].[loginUser]([id],[password])

VALUES('admin','123')//管理员初始登录名为admin,密码为123

创建用户实体类dao.LoginUser及用户访问类dao.LoginUserDAO

注意:

1)由于主键是字符型,所以IdGenerator生成方法要用“assigned”。

2)实体类及实体访问类不需要手动生成,Hibernate反向工程时自动生成。

3)接口类生成方法为:

右击欲提取的类,选择“refactorExtractInterface…”。

具体操作过程参以前的文档“Struts2.1、Spring3.0、Hibernate3.3框架整合-用户登录示例(更新).doc”。

4)需手工在dao.ILoginUser及dao.LoginUser中添加getUserRole方法及相关常量。

详见代码范本。

Hibernate创建用户类

代码2.3用户类接口

packagedao;

publicinterfaceILoginUser{

publicstaticfinalintROLE_UNKNOWN=0x0;

publicstaticfinalintROLE_ADMIN=0x1;

publicstaticfinalintROLE_TEACHER=0x2;

publicstaticfinalintROLE_STUDENT=0x4;

publicstaticfinalStringADMIN_LOGIN_NAME="admin";

publicabstractintgetUserRole();

publicabstractStringgetId();

publicabstractvoidsetId(Stringid);

publicabstractStringgetPassword();

publicabstractvoidsetPassword(Stringpassword);

}

代码2.4用户实体类

packagedao;

/**

*LoginUserentity.@authorMyEclipsePersistenceTools

*/

publicclassLoginUserimplementsjava.io.Serializable,ILoginUser{

//Fields

privateStringid;

privateStringpassword;

//Constructors

/**defaultconstructor*/

publicLoginUser(){

}

/**minimalconstructor*/

publicLoginUser(Stringid){

this.id=id;

}

/**fullconstructor*/

publicLoginUser(Stringid,Stringpassword){

this.id=id;

this.password=password;

}

//Propertyaccessors

/*

*(non-Javadoc)

*@seedao.ILoginUser#getId()

*/

publicStringgetId(){

returnthis.id;

}

/*

*(non-Javadoc)

*@seedao.ILoginUser#setId(java.lang.String)

*/

publicvoidsetId(Stringid){

this.id=id;

}

/*

*(non-Javadoc)

*@seedao.ILoginUser#getPassword()

*/

publicStringgetPassword(){

returnthis.password;

}

/*

*(non-Javadoc)

*@seedao.ILoginUser#setPassword(java.lang.String)

*/

publicvoidsetPassword(Stringpassword){

this.password=password;

}

publicintgetUserRole(){

//TODO目前只设置管理员和学生两类用户,并且管理员登录名固定。

if(id.equals(ILoginUser.ADMIN_LOGIN_NAME)){

returnILoginUser.ROLE_ADMIN;

}

returnILoginUser.ROLE_STUDENT;

}

}

代码2.5实体访问接口类

packagedao;

importjava.util.List;

publicinterfaceILoginUserDAO{

//propertyconstants

publicstaticfinalStringPASSWORD="password";

publicabstractvoidsave(ILoginUsertransientInstance);

publicabstractvoiddelete(ILoginUserpersistentInstance);

publicabstractILoginUserfindById(java.lang.Stringid);

publicabstractListfindByExample(ILoginUserinstance);

publicabstractListfindByProperty(StringpropertyName,Objectvalue);

publicabstractListfindByPassword(Objectpassword);

publicabstractListfindAll();

publicabstractILoginUsermerge(LoginUserdetachedInstance);

publicabstractvoidattachDirty(ILoginUserinstance);

publicabstractvoidattachClean(ILoginUserinstance);

}

代码2.6实体访问类

packagedao;

importjava.util.List;

importorg.hibernate.LockMode;

importorg.slf4j.Logger;

importorg.slf4j.LoggerFactory;

importorg.springframework.context.ApplicationContext;

importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**

*Adataaccessobject(DAO)providingpersistenceandsearchsupportfor

*LoginUserentities.Transactioncontrolofthesave(),update()anddelete()

*operationscandirectlysupportSpringcontainer-managedtransactionsorthey

*canbeaugmentedtohandleuser-managedSpringtransactions.Eachofthese

*methodsprovidesadditionalinformationforhowtoconfigureitforthe

*desiredtypeoftransactioncontrol.

*

*@seedao.LoginUser

*@authorMyEclipsePersistenceTools

*/

publicclassLoginUserDAOextendsHibernateDaoSupportimplementsILoginUserDAO{

privatestaticfinalLoggerlog=LoggerFactory.getLogger(LoginUserDAO.class);

protectedvoidinitDao(){

//donothing

}

/*(non-Javadoc)

*@seedao.ILoginUserDAO#save(dao.ILoginUser)

*/

publicvoidsave(ILoginUsertransientInstance){

log.debug("savingLoginUserinstance");

try{

getHibernateTemplate().save(transientInstance);

log.debug("savesuccessful");

}catch(RuntimeExceptionre){

log.error("savefailed",re);

throwre;

}

}

/*(non-Javadoc)

*@seedao.ILoginUserDAO#delete(dao.ILoginUser)

*/

publicvoiddelete(ILoginUserpersistentInstance){

log.debug("deletingLoginUserinstance");

try{

getHibernateTemplate().delete(persistentInstance);

log.debug("deletesuccessful");

}catch(RuntimeExceptionre){

log.error("deletefailed",re);

throwre;

}

}

/*(non-Javadoc)

*@seedao.ILoginUserDAO#findById(java.lang.String)

*/

publicILoginUserfindById(java.lang.Stringid){

log.debug("gettingLoginUserinstancewithid:

"+id);

try{

ILoginUserinstance=

(ILoginUser)getHibernateTemplate().get("dao.LoginUser",id);

returninstance;

}catch(RuntimeExceptionre){

log.error("getfailed",re);

throwre;

}

}

/*(non-Javadoc)

*@seedao.ILoginUserDAO#findByExample(dao.ILoginUser)

*/

publicListfindByExample(ILoginUserinstance){

log.debug("findingLoginUserinstancebyexample");

try{

Listresults=getHibernateTemplate().findByExample(instance);

log.debug("findbyexamplesuccessful,resultsize:

"+results.size());

returnresults;

}catch(RuntimeExceptionre){

log.error("findbyexamplefailed",re);

throwre;

}

}

/*(non-Javadoc)

*@seedao.ILoginUserDAO#findByProperty(java.lang.String,java.lang.Object)

*/

publicListfindByProperty(StringpropertyName,Objectvalue){

log.debug("findingLoginUserinstancewithproperty:

"+propertyName

+",value:

"+value);

try{

StringqueryString=

"fromLoginUserasmodelwheremodel."+propertyName+"=?

";

returngetHibernateTemplate().find(queryString,value);

}catch(RuntimeExceptionre){

log.error("findbypropertynamefailed",re);

throwre;

}

}

/*(non-Javadoc)

*@seedao.ILoginUserDAO#findByPassword(java.lang.Object)

*/

publicListfindByPassword(Objectpassword){

returnfindByProperty(PASSWORD,password);

}

/*(non-Javadoc)

*@seedao.ILoginUserDAO#findAll()

*/

publicListfindAll(){

log.debug("findingallLoginUserinstances");

try{

StringqueryString="fromLoginUser";

returngetHibernateTemplate().find(queryString);

}catch(RuntimeExceptionre){

log.error("findallfailed",re);

throwre;

}

}

/*(non-Javadoc)

*@seedao.ILoginUserDAO#merge(dao.LoginUser)

*/

publicILoginUsermerge(LoginUserdetachedInstance){

log.debug("mergingLoginUserinstance");

try{

ILoginUserresult=

(ILoginUser)getHibernateTemplate().merge(detachedInstance);

log.debug("mergesuccessful");

returnresult;

}catch(RuntimeExceptionre){

log.error("mergefailed",re);

throwre;

}

}

/*(non-Javadoc)

*@seedao.ILoginUserDAO#attachDirty(dao.ILoginUser)

*/

publicvoidattachDirty(ILoginUserinstance){

log.debug("attachingdirtyLoginUserinstance");

try{

getHibernateTemplate().saveOrUpdate(instance);

log.debug("attachsuccessful");

}catch(RuntimeExceptionre){

log.error("attachfailed",re);

throwre;

}

}

/*(non-Javadoc)

*@seedao.ILoginUserDAO#attachClean(dao.ILoginUser)

*/

publicvoidattachClean(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1