length="16">
7.紧接着,创建action包com.action.user,在该包中创建一个Action类SaveUserAction,继承ActionSupport,如下图:
该类中的内容如下,在该类中执行保存用户的操作,里面只有一个成员属性user,以及相应的get,set方法,和存储的执行方法execute;在execute方法里面调用业务逻辑层的servlet,servlet在调用DAO执行存储操作。
代码如下:
packagecom.action.user;
importcom.bean.TestUser;
importcom.opensymphony.xwork2.ActionSupport;
publicclassSaveUserActionextendsActionSupport
{
privateTestUseruser;//与save.jsp上的user是对应的。
publicTestUsergetUser()
{
returnuser;
}
publicvoidsetUser(TestUseruser)
{
this.user=user;
}
@Override
publicStringexecute()throwsException
{
//TODOAuto-generatedmethodstub
returnsuper.execute();
}
}
(以上是第0个视频的)
8、实现国际化
a、在src目录下创建属性文件struts.properties(文件名应该是这样).
文件内容如下:
struts.custom.i18n.resources=globalMessages
b、再创建两个属性文件,文件名分别问globalMessages_en.properties和globalMessages_zh.properties.两文件的文件内容如下:
globalMessages_en.properties:
firstname=firstname
lastname=lastname
password=password
globalMessages_zh.properties:
firstname=\u59D3\u6C0F
lastname=\u540D\u5B57
password=\u5BC6\u7801
这样就可以适应浏览器的语言了,若浏览器的语言默认问英语,则读的是上面一个文件;若浏览器的语言默认问中文,则读的是下面一个文件。
C、改写save.jsp文件中,改写结果如下:
formaction="saveUser">
textfieldname="user.firstname"label="%{getText('firstname')}">
textfield>
textfieldname="user.lastname"label="%{getText('lastname')}">
textfield>
textfieldname="user.pass"label="%{getText('password')}">
textfield>
submitvalue="提交">
submit>
form>
这样,label的值就是读相应语言配置文件的值了。
国际化实现完毕。
9、实现用户的存储:
a、创建com.dao包,在保重创建对用户信息进行操作的接口和类:
TestUserDao和TestUserDaoImlp,TestUserDaoImlp实现了接口TestUserDao,在TestUserDao声明了对用户信息的各种操作,代码如下:
TestUserDao:
packagecom.dao;
importjava.util.List;
importcom.bean.TestUser;
publicinterfaceTestUserDAO
{
publicvoidsaveTestUser();
publicvoidremoveTestUser(TestUserTestUser);
publicTestUserfindTestUserById(Integerid);
publicListfindAllTestUser();
publicvoidupdateTestUser(TestUserTestUser);
}
在TestUserDaoImpl使用spring的dao实现用户信息的操作;应在TestUserDaoImpl中继承HibernateDaoSupport.代码如下:
TestUserDaoImpl:
packagecom.dao.impl;
importjava.util.List;
importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
importcom.bean.TestUser;
importcom.dao.TestUserDAO;
publicclassTestUserDAOImplextendsHibernateDaoSupportimplementsTestUserDAO
{
@SuppressWarnings("unchecked")
publicListfindAllTestUser()
{
Stringsql="fromTestUsertestuserorderbyuser.iddesc";//testuser为TestUser类的别名
return(List)this.getHibernateTemplate().find(sql);
}
publicTestUserfindTestUserById(Integerid)
{
TestUseruser=(TestUser)this.getHibernateTemplate().get(TestUser.class,id);
returnuser;
}
publicvoidremoveTestUser(TestUsertestUser)
{
this.getHibernateTemplate().delete(testUser);
}
publicvoidsaveTestUser(TestUsertestUser)
{
this.getHibernateTemplate().save(testUser);
}
publicvoidupdateTestUser(TestUsertestUser)
{
this.getHibernateTemplate().update(testUser);
}
}
10、还需要些服务层代码,在服务层中的action调用dao中的方法。
a、先创建包com.service,在包中创建接口UserService,并在接口中声明用户的信息操作:
如下:
TestUserService:
packagecom.service;
importjava.util.List;
importcom.bean.TestUser;
publicinterfaceTestUserService
{
publicListfindAll();
publicvoidsave(TestUsertestUser);
publicvoidDelete(TestUsertestUser);
publicTestUserfindById(Integerid);
publicvoidupdate(TestUsertestUser);
}
b、定义TestUserService接口的实现类:
TestUserServiceImpl:
packagecom.service.impl;
importjava.util.List;
importcom.bean.TestUser;
importcom.dao.TestUserDAO;
importcom.service.TestUserService;
publicclassTestUserServiceImplimplementsTestUserService
{
privateTestUserDAOtestUserDAO;//使用Spring的依赖注入
publicTestUserDAOgetTestUserDAO()//使用依赖注入,因此需要get,set方法
{
returntestUserDAO;
}
publicvoidsetTestUserDAO(TestUserDAOtestUserDAO)
{
this.testUserDAO=testUserDAO;
}
publicvoidDelete(TestUsertestUser)
{
this.testUserDAO.removeTestUser(testUser);
}
publicListfindAll()
{
returnthis.testUserDAO.findAllTestUser();
}
publicTestUserfindById(Integerid)
{
returnthis.testUserDAO.findTestUserById(id);
}
publicvoidsave(TestUsertestUser)
{
this.testUserDAO.saveTestUser(testUser);
}
publicvoidupdate(TestUsertestUser)
{
this.testUserDAO.updateTestUser(testUser);
}
}
11、实现action层的操作:
a、在SaveUserAction中增加一个TestUserService属性及get,set方法.
b、定义execute方法,在execute方法中返回SUCCESS代码如下:
@Override
publicStringexecute()throwsException
{
this.testUserService.save(this.user);
returnSUCCESS;
}
12、定义struts.xml配置文件,如下:
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN""http:
//struts.apache.org/dtds/struts-2.0.dtd">
--action的name应该与jsp中的action值对应,class的值是一个别名,但是要与applicationContext.xml中的id一致-->
listUser.action
/saveUser.jsp
(以上是第一个视频的)
13、配置applicationcontext.xml文件,内容如下:
applicationcontext.xml:
xmlversion="1.0"encoding="UTF-8"?
>
xmlns="http:
//www.springframework.org/schema/beans"
xmlns:
xsi="http:
//www.w3.org/2001/XMLSchema-instance"
xmlns:
p="http:
//www.springframework.org/schema/p"
xsi:
schemaLocation="http:
//www.springframework.org/schema/beanshttp:
//www.springframework.org/schema/beans/spring-beans-2.0.xsd">
class="mons.dbcp.BasicDataSource">
value="com.mysql.jdbc.Driver">
value="jdbc:
mysql:
//localhost:
3306/mytest">
--最大活跃连接数-->
--最大可空闲的连接数-->
--最大等待连接数-->
--事务自动提交设置,每完成一个操作,自动提交,当操作比较复杂时,该值设置为fault-->
<