网上关于这个题目的文章多如牛毛,我把我学到的一点皮毛总结一下,以供以后查看,下面是一个完整的小例子,有点罗嗦:
我用的开发工具是myeclipse,首先新建一个web project sshTest, 然后添加strurs框架,我用的是struts1.2,所以验证文件validator-rules.xml要用1.2的,不然验证可能不起作用,可以参考我以前写的关于验证的文章。建立一个登录页面login.jsp,当然你如果需要验证的话,你的Form就要选择org.apache.struts.validator.ValidatorForm。
接着增加Spring框架,在弹出的对话框中,选择1,2,3和最后一个选项,因为这个例子只用到了这四个类库,然后选择copy 到/WebRoot/WEB-INF/lib,点击下一步,把applicationContext.xml放到sshTest下的/WebRoot/WEB-INF下,这个一定要这样做,不然在下面增加hibernate时就找不到applicationContext.xml了,因为在这个project里applicationContext.xml代替了Hibernate.cfg.xml.
第三步就是增加hibernate框架,选中给出的三个类库,并选择copy 到/WebRoot/WEB-INF/lib,点击下一步,选择第二个选项Spring configuration files,点击下一步,选择第二个选择,Existing Sping configuration file.并填写SessionFactoryID:sessionFactory,点击下一步,填写数据源,第一项beanId: datasource, 点击下一步,去掉create sessionfaction class前的对号,即不选择创建,到此完成了hibernate的添加。
下面是具体代码的编写,在struts-config.xml里要写个插件, (plug-in className="org.springframework.web.struts.ContextLoaderPlugIn")
(set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" /)
(/plug-in)
这样struts和spring整合到一起,并把前面属性中的type属性改成type="org.springframework.web.struts.DelegatingActionProxy",即struts中的请求有这个代理类接收。在applicationContext.xml里新建个bean,//(bean name="/login" class="com.guorui.struts.action.LoginAction" abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default")
接着我们在数据库连接中找到需要的表,点击右键产生mapping映射,在弹出的对话框里要选择springDAO.它把hibernate里的session封装了。
在LoginAction中要用到springDAO, 在这个例子中是UserDAO,代码如下:
public class LoginAction extends Action {
private UsersDAO dao;
public UsersDAO getDao() {
return dao;
}
public void setDao(UsersDAO dao) {
this.dao = dao;
}
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;
String name=loginForm.getName();
String psd=loginForm.getPassword();
Users users=new Users();
users.setName(name);
users.setPassword(psd);
dao.save(users);
return null;
}
}
此时在修改applicationContext.xml中的代码如下:下加入属性
(bean name="/login" class="com.guorui.struts.action.LoginAction" abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default")
(property name="dao")
(ref bean="UsersDAO"/)
(/property)
(/bean)
是把映射文件Users.hbm.xml中的第一行代码中 table后的属性删掉,不然的话找不到数据库