SSH开发 用户登陆和注册.docx

上传人:b****6 文档编号:8182959 上传时间:2023-01-29 格式:DOCX 页数:67 大小:66KB
下载 相关 举报
SSH开发 用户登陆和注册.docx_第1页
第1页 / 共67页
SSH开发 用户登陆和注册.docx_第2页
第2页 / 共67页
SSH开发 用户登陆和注册.docx_第3页
第3页 / 共67页
SSH开发 用户登陆和注册.docx_第4页
第4页 / 共67页
SSH开发 用户登陆和注册.docx_第5页
第5页 / 共67页
点击查看更多>>
下载资源
资源描述

SSH开发 用户登陆和注册.docx

《SSH开发 用户登陆和注册.docx》由会员分享,可在线阅读,更多相关《SSH开发 用户登陆和注册.docx(67页珍藏版)》请在冰豆网上搜索。

SSH开发 用户登陆和注册.docx

SSH开发用户登陆和注册

在实际项目中,我们经常是在项目启动前,先统一每个开发人员的开发环境,规范好每个开发人员的工程以及相关的目录结构和配置。

接下来我们介绍怎么搭建一个统一的SSH项目工程,方便每个开发人员在统一的工程环境下开发。

针对我们的样例项目,我们主要配置如下内容:

1、配置MyEclipse中的数据源

2、在工程中添加Struts组件

3、在工程中添加Spring组件

4、在工程中添加Hibernate组件

5、处理Spring组件jar文件和Hibernate组件jar文件之间的冲突

接下来一个个的介绍具体的配置。

1给在MyEclipse上面配置数据源

i)点击Window->OpenPerspetive->MyEclipseDatabaseExplorer

ii)在DBBrowser中,点击鼠标右键,并选择里面的New,出现如下界面

--[if!

vml]-->

--[endif]-->

iii)接下来做如下配置:

--[if!

supportLists]-->a)

--[endif]-->在Drivertemplate选择自己使用的数据库(MySQLConnector/J)

--[if!

supportLists]-->b)

--[endif]-->在DriverName后面定义该数据源的名称.(DemoMySQL)

--[if!

supportLists]-->c)

--[endif]-->更改对应的ConnectionURL(jdbc:

mysql:

//localhost:

3306/book)

--[if!

supportLists]-->d)

--[endif]-->点击AddJARs按钮,选择数据库连接驱动

--[if!

supportLists]-->e)

--[endif]-->在UserName和Password里面,输入用户名和密码

--[if!

supportLists]-->f)

--[endif]-->为了方便,选择Savepassword多选框

如下是配置成功后的界面

--[if!

vml]-->

--[endif]-->

iv)点击Finish,完成数据源的配置

项目框架搭建步骤:

1用MyEclipse建立一个Webproject(DemoSSH)

2鼠标右击工程->MyEclipse->AddStrutsCapabilities,出现如下界面:

--[if!

vml]-->

--[endif]-->

i)选择struts的版本1.2

ii)在Basepackagefornewclasses输入框里面,输入自己的包路径.book.demo.struts

3鼠标右击工程->MyEclipse->AddSpringCapabilities,出现如下界面:

--[if!

vml]-->

--[endif]-->

如图显示,选择上面的选项:

i)Springversion:

Spring2

ii)MyEclipseLibraries

iii)在JARLibraryInstallation里面,选择Copychecked….

4点击下一步,出现如下界面:

--[if!

vml]-->

--[endif]-->

点击Finish

5鼠标右击工程->AddHibernateCapabilities,出现如下界面:

--[if!

vml]-->

--[endif]-->

做如上图显示的选择,点击Next,进入如下界面:

--[if!

vml]-->

--[endif]-->

--[if!

supportLists]-->6

--[endif]-->选择Springconfigurationfile,点击Next

--[if!

vml]-->

--[endif]-->

--[if!

supportLists]-->7

--[endif]-->选择ExistingSpringconfigurationfile,在SessionFactoryID后面的输入框输入session工厂名称,可以自己起名.我们这里输入sessionFactory.点击Next,进入下面界面

--[if!

vml]-->

--[endif]-->

--[if!

supportLists]-->8

--[endif]-->在BeanId后面输入数据源的id,可以自己定义,我们这里输入dataSource..在DBDriver里面,选择我们在前面配置的数据源,点击Next,进入下面界面:

--[if!

vml]-->

--[endif]-->

--[if!

supportLists]-->9

--[endif]-->在javapackage中输入HibernateSessionFactory类的包名,如果没有,可以点New生成一个新的包路径.在ClassName后面,输入即将生成的HibernateSessionFactory的类名,我们这是HibernateSessionFactory.选择Java5做为我们编译的JDK

点Finish完成

到这里,我们完成了Struts+Spring+Hibernate的框架搭建,还有最后一步,因为MyEclipse加入的Springliberary和Hibernate3的liberary有冲突,不能正常运行,要解决这问题,需要将工程lib目录下(WebRoot/WEB-INF/lib)的jar文件都删除,数据库驱动程序除外,然后用将光盘里整理的jar文件copy进去.copy完jar文件,就完成了框架的所有搭建.

接下来,我们介绍怎么样在这框架的基础上,开发我们的样例功能模块.

上章我们已经解释了SSH框架的搭建,现在我们开始在搭建好的SSH框架下进行开发。

首先我们要建好需求中定义的数据库,并生成对应的POJO对象以及对象和表的映射文件。

建表脚本

--[if!

supportLists]-->1.

--[endif]-->建立数据库

Createdatabasedemodb

--[if!

supportLists]-->2.

--[endif]-->用户表(TUSER)

CREATETABLE`demodb`.`TUSER`(

`ID`INTEGERUNSIGNEDNOTNULLAUTO_INCREMENT,

`USER_NAME`VARCHAR(10)NOTNULL,

`NAME`VARCHAR(30)NOTNULL,

`EMAIL`VARCHAR(50),

`PHONE`VARCHAR(20),

`PASSWORD`VARCHAR(10)NOTNULL,

PRIMARYKEY(`ID`),

UNIQUEINDEX`Index_2`(`USER_NAME`)

--[if!

supportLists]-->3.

--[endif]-->商品表(SHOP)

CREATETABLE`demodb`.`SHOP`(

`ID`INTEGERUNSIGNEDNOTNULLAUTO_INCREMENT,

`NAME`VARCHAR(50)NOTNULL,

`PRICE`DOUBLENOTNULLDEFAULT0.0,

`SIMPLE_DESC`VARCHAR(500)NOTNULL,

`ALL_DESC`TEXTNOTNULL,

PRIMARYKEY(`ID`)

--[if!

supportLists]-->4.

--[endif]-->订单主表(TORDER)

CREATETABLE`demodb`.`TORDER`(

`ID`INTEGERUNSIGNEDNOTNULLAUTO_INCREMENT,

`USER_ID`INTEGERUNSIGNEDNOTNULL,

`ORDER_TIME`DATETIMENOTNULL,

`R_ADDRESS`VARCHAR(200)NOTNULL,

`R_NAME`VARCHAR(50)NOTNULL,

`R_PHONE`VARCHAR(20)NOTNULL,

PRIMARYKEY(`ID`),

CONSTRAINT`FK_ORDER_1`FOREIGNKEY`FK_ORDER_1`(`USER_ID`)

REFERENCES`tuser`(`ID`)

ONDELETERESTRICT

ONUPDATERESTRICT

--[if!

supportLists]-->5.

--[endif]-->订单详细表(ORDER_DETAIL)

CREATETABLE`demodb`.`ORDER_DETAIL`(

`ID`INTEGERUNSIGNEDNOTNULLAUTO_INCREMENT,

`ORDER_ID`INTEGERUNSIGNEDNOTNULL,

`SHOP_ID`INTEGERUNSIGNEDNOTNULL,

`AMOUNT`INTEGERUNSIGNEDNOTNULLDEFAULT1,

`S_PRICE`DOUBLENOTNULLDEFAULT0.0,

`A_PRICE`DOUBLENOTNULLDEFAULT0.0,

PRIMARYKEY(`ID`),

CONSTRAINT`FK_ORDER_DETAIL_1`FOREIGNKEY`FK_ORDER_DETAIL_1`(`ORDER_ID`)

REFERENCES`torder`(`ID`)

ONDELETERESTRICT

ONUPDATERESTRICT,

CONSTRAINT`FK_ORDER_DETAIL_2`FOREIGNKEY`FK_ORDER_DETAIL_2`(`SHOP_ID`)

REFERENCES`shop`(`ID`)

ONDELETERESTRICT

ONUPDATERESTRICT

--[if!

supportLists]-->6.

--[endif]-->日志表(LOG)

CREATETABLE`demodb`.`LOG`(

`ID`INTEGERUNSIGNEDNOTNULLAUTO_INCREMENT,

`USER_ID`INTEGERUNSIGNED,

`OPERATE`VARCHAR(50)NOTNULL,

`TIME`DATETIMENOTNULL,

`SHOP_ID`INTEGERUNSIGNED,

PRIMARYKEY(`ID`),

CONSTRAINT`FK_LOG_1`FOREIGNKEY`FK_LOG_1`(`USER_ID`)

REFERENCES`tuser`(`ID`)

ONDELETERESTRICT

ONUPDATERESTRICT,

CONSTRAINT`FK_LOG_2`FOREIGNKEY`FK_LOG_2`(`SHOP_ID`)

REFERENCES`shop`(`ID`)

ONDELETERESTRICT

ONUPDATERESTRICT

--[if!

supportLists]-->7.

--[endif]-->

用MyEclipseHibernate插件,生成初步的POJO对象和相关的映射xml文件

--[if!

supportLists]-->1.

--[endif]-->在数据库中,建立一个数据库demoDB,运行上面的数据库脚本,在demoDB建立项目需要的表

--[if!

supportLists]-->2.

--[endif]-->在MyEclipse中,配置数据源

--[if!

supportLists]-->i)

--[endif]-->window->openperspective->MyEclipseDatabaseExplorer

--[if!

supportLists]-->ii)

--[endif]-->在DBBrowser窗口中,点击鼠标右键,选择new,出现如下窗口

--[if!

vml]-->

--[endif]-->

如上图填写数据库连接的配置,点Finish按钮

--[if!

supportLists]-->i)

--[endif]-->在DBBrowser窗口中的新配置的sshDemo节点上,点击鼠标右键->OpenConnection,如果配置成功,可以展开如下类似界面,在demodb中可以找到用数据库脚本生成的表

--[if!

vml]-->

--[endif]-->

--[if!

supportLists]-->ii)

--[endif]-->

--[if!

supportLists]-->2.

--[endif]-->用MyEclipse的Hibernate插件,生成所有的POJO对象和映射xml文件

--[if!

supportLists]-->i)

--[endif]-->在DBBrowser窗口中,选中demodb里面的所有表,点击鼠标右键,出现如下界面:

--[if!

vml]-->

--[endif]-->

--[if!

supportLists]-->ii)

--[endif]-->如上图进行相关选项的配置,注意Javasrcfolder后面的输入内容,是要指定工程里面的src目录,我们这里是sshDemo/src.配置好后,点击Next按钮,显示如下界面

--[if!

vml]-->

--[endif]-->

--[if!

supportLists]-->iii)

--[endif]-->在上图的IDGenerator后面,选择主键生成类型increment,点击Finish按钮,完成POJO对象,mapxml文件以及基本DAO文件的生成,可以在sshDemo工厂src的.book.demo.hibernate.dao包下,找到相关的代码.比如Tuser.java->tuser对应的POJO对象;Tuser.hbm.xml->TuserPOJO对象和tuser表的mapxml;TuserDAO.java->tuser的DAO操作类

--[if!

supportLists]-->3.

--[endif]-->生成的mapxml文件中,class标签中有个catalog属性,在Oracle,SQLServer数据库中是有效的,可是在MySQL数据库中,会影响Hibernate具体操作中SQL语句的生成.在这里我们需要将它删除掉.

比如Tuser.hbm.xml中有如下内容:

我们需要将catalog=”demodb”删除,最后结果如下:

对其它的mapxml文件,也要做同样的处理

打开一个自动生成的DAO,我们可以发现,里面已经生成了单个POJO对象的所有操作方法,比如TuserDAO.java里面,已经包含了对Tuser对象进行新增,修改,删除,根据主键查询,根据指定属性和值进行查询,以及根据每个属性进行查询.

可是,生成的DAO,没有提供灵活多变的sql语句的查询,比如多个对象的联合查询,还有分页功能也没有实现.

接下来的工作,是对这些自动生成的DAO,添加上面缺少的功能事项.

新增一个基类DAO,BaseDAO.java,代码如下:

/**

*

*/

package.book.demo.hibernate.dao;

importjava.sql.SQLException;

importjava.util.Iterator;

importjava.util.List;

importjava.util.Map;

importjava.util.Set;

importorg.hibernate.HibernateException;

importorg.hibernate.Query;

importorg.hibernate.Session;

importorg.springframework.orm.hibernate3.HibernateCallback;

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

/**

*@authorNoble.Yang

*

*/

publicclassBaseDAOextendsHibernateDaoSupport{

//默认分页大小

privateintRECORDS_PER_PAGE=5;

publicintgetPages(StringqueryStr,intpageSize,MapfilterMap)

throwsHibernateException{

//剔除掉orderby部分,使得执行语句为简单的selectcount(*)from...

intlength=queryStr.indexOf("orderby")>0?

queryStr

.indexOf("orderby"):

queryStr.length();

Stringhql="selectcount(*)"

+queryStr.substring(queryStr.indexOf("from"),length);

try{

Sessionsession=this.getSession();

Queryquery=session.createQuery(hql);

setFilterToQuery(query,filterMap);

Listlist=query.list();

intsize=0;

if(list.size()>0){

size=((Integer)list.get(0)).intValue();

}

session.close();

returngetPages(size,pageSize);

}catch(HibernateExceptione){

throwe;

}

}

publicintgetRecordCount(StringqueryStr)throwsHibernateException{

intlength=queryStr.indexOf("orderby")>0?

queryStr

.indexOf("orderby"):

queryStr.length();

Stringhql="selectcount(*)"

+queryStr.substring(queryStr.indexOf("from"),length);

try{

Sessionsession=this.getSession();

Queryquery=session.createQuery(hql);

Listlist=query.list();

intsize=0;

if(list.size()>0){

//size=(Integer)list.get(0);

size=((Integer)list.get(0)).intValue();

}

session.close();

returnsize;

}catch(HibernateExceptione){

throwe;

}

}

/**

*Description:

查询

*

*@paramqueryStr

*hql语句

*@paramtargetPage

*当前查询页(当值为-1时,为不分页查询,否则为分页查询)

*@parampagesize

*分页大小

*@return

*/

publicListgetAllByHql(finalStringqueryStr,finalinttargetPage,finalintpagesize)

throwsHibernateException{

if(targetPage<=0&&targetPage!

=-1||pagesize<1)

returnnull;

try{

//这里使用的是Hibernate的回调方式,目的是让Spring自己去管理Session

//如果不用这种方式,可以自己用getSession()方法得到Session进行操作,如同其它方法中的使用

//但是要注意,Session用完后,要及时closesession,否则会有数据库连接不能及时释放问题

return(List)this.getHibernateTemplate().execute(newHibernateCallback(){

publicObjectdoInHibernate(Sessionsession)throwsHibernateException,

SQLException{

Queryquery=session.createQuery(queryStr);

if(targetPage!

=-1){

query.setFirstResult((targetPage-1)*pagesize);

query.setMaxResults(pagesize);

}

returnquery.list();

}

});

}catch(HibernateExceptione){

throwe;

}

}

/**

*Description:

查询

*

*@paramqueryStr

*hql语句

*@paramtargetPage

*当前查询页(当值为-1时,为不分页查询,否则为分页查询)

*@parampagesize

*分页大小

*@return

*/

publicListgetAllByHql(StringqueryStr,inttargetPage,intpagesize,

MapfilterMap)throwsHibernateException{

Listlist=null

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

当前位置:首页 > 小学教育 > 语文

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

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