SSH的学习已经有一段时间了,今天心血来潮做了个简单的注册页面的整合,下面给大家讲讲我是怎么做的吧,有缺点还请大家多多指教啊。
1.新建一个Web Project:

2.为Project增加Struts功能:

这里面需要选择的包有5个,除了图中的包以外还有一个Spring3.0 web Libraries.点击next后,选择spring配置文件的放置地点,我选择把它放到了WEB-INF下。
3.为Project增加Spring功能:


4.为Project增加Hibernate功能:




这边我们只选择一个包,就是hibernate的核心包。 之后选择第二个单选按钮,然后我们不再创建新的Spring配置,而是使用已经存在的Spring配置文件,SessionFactory Id:就是sessionFactory不改了。之后选择数据库时,使用了我事先配置好的mysql数据库。再点击Next,会出现一个Create SessionFactory界面,我们不勾选,直接Finish。
5.切换到Myeclipse Database Exploer界面,使用Hibernate反向工程。



在第一幅图的table2上右击,选择Hibernate的反向工程,然后出现第二幅图的界面,勾选情况如图,下一步后出现第三幅图,我们给ID那个设置为Native,目的是表述向数据库中插入一条记录,数据表主键是从哪里来的,native表示由数据库提供。之后下一步默认就好,点击完成。然后我们把自动生成的com.suda.orm中的Table2.java修改为User.java,同时在Table2.hbm.xml中修改对应的地方。
6.新建一个package,com.suda.dao。在这个里面我们创建一个接口,UserDao,和一个接口的实现类
- package com.suda.dao;
- import com.suda.orm.User;
- public interface UserDao {
- public void save(User user);
- }
- package com.suda.dao;
- import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
- import com.suda.orm.User;
- import com.suda.dao.UserDao;
- public class UserDaoImpl extends HibernateDaoSupport implements UserDao{
- public void save(User user) {
- try {
- this.getHibernateTemplate().saveOrUpdate(user);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
7.创建Action,Form,JSP


我给她命名为registerForm,使用的是Dynamic FormBean。然后创建了两个属性,username,password,JSP页面就使用默认创建在form/register.jsp。下一步也默认。
8. 配置struts-config.xml文件,将Struts交给Spring管理
a) 加入插件 (message-resources标记下)
- <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
- <set-property property="contextConfigLocation"
- value="/WEB-INF/applicationContext.xml" />
- </plug-in>
b) 将Action类移交(message-resources标记上)
- <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>
9.编写我们的Aciont处理方法:
- public class RegisterAction extends Action {
- UserDao userDao;
- User user=new User();
- public ActionForward execute(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response) {
- DynaActionForm registerForm = (DynaActionForm) form;// TODO Auto-generated method stub
- String username=registerForm.getString("username");
- String password=registerForm.getString("password");
- ActionMessages errors=new ActionMessages();
- while(true){
- if (username.length()==0||password.length()==0) {
- errors.add("empty",new ActionMessage("content_empty"));
- break;
- }
- if (username.length()>8) {
- errors.add("username",new ActionMessage("username_wrong"));
- }
- if (password.length()<6) {
- errors.add("password",new ActionMessage("password_wrong"));
- }
- break;
- }
- this.saveErrors(request, errors);
- if (errors.isEmpty()) {
- user.setUsername(username);
- user.setPassword(password);
- userDao.save(user);
- return mapping.findForward("success");
- }else {
- return mapping.getInputForward();
- }
- }
- public UserDao getUserDao() {
- return userDao;
- }
- public void setUserDao(UserDao userDao) {
- this.userDao = userDao;
- }
- }
10.在Struts-config.xml中增加跳转:
- <global-forwards >
- <forward name="success" path="/form/success.jsp" />
- </global-forwards>
11.修改Spring配置文件:
注册我们的bean:
- <bean id="userDaoImpl" class="com.suda.dao.UserDaoImpl">
- <property name="sessionFactory" ref="sessionFactory"/>
- </bean>
- <bean name="/register" class="com.suda.struts.action.RegisterAction">
- <property name="userDao">
- <ref bean="userDaoImpl"/>
- </property>
- </bean>
这个代码的作用我就不多说了,我的那个Spring与Struts整合的日志中有说明。
12.修改web.xml,增加UTF-8过滤器,添加Listener:
- <filter>
- <filter-name>encodingFilter</filter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>utf-