分享

让第一个ssh2跑起来

 zengbj 2009-08-17
关键字: struts2,spring2,hibernate3,整合
今天在寝室窝了一天,由于前天老师给了个ss2+toplink的项目源码,要我去消化。直接看那三个整合具吃力,于是先从ssh2入手吧!
所使用的工具和环境。
jdk6+myeclipse6.5+tomcat6+mysql5+spring2.0+hibernate3+struts2

好了,开始我们的第一个ssh2之旅吧。

首先先分析一下我们的第一个ssh2项目的需求,简单的说就是有一张表单,让你填写用户名和密码,提交后存入数据库。就这么简单,呵呵。

第一步:。我们首先新建一张mysql数据表
sql如下
CREATE TABLE mytest.users (
   id INT NOT NULL,
   username VARCHAR(50),
   password VARCHAR(50),
  PRIMARY KEY (id)
数据表创建好后结构如下:

当然我已经有几天数据添加进去了



第二步
打开myeclipse,新建一个web项目,命名为ssh2-2, java ee规范我们选择5,如图




第三步 务必小心的一步
导入ssh2的各个jar,步骤如下:
选中当前的项目后,点击菜单烂的myeclipse---project capablities----add hibernate项,跳出如图


务必按照图示选择,尤其是copy checkde……一项,然后点击next,默认next,去掉specify database……复选框,next,去掉create session……复选框,finish。

再次选中选中当前的项目后,点击菜单烂的myeclipse---project capablities----add spring项,跳出如图



依然务必按照如是选择,jar文件选择如下5个:




点击next,
之后按下选择,务必,


next后finsh即可。
然后导入struts2的jar
如下5个放到lib下

然后放入我们的数据库驱动jar mysql-connector-java-5.0.8-bin.jar 没得话附件中有

至此,包都导入完毕

第四步
配置web.xml 代码如下 注意注释:
Xml代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5"    
  3.     xmlns="http://java./xml/ns/javaee"    
  4.     xmlns:xsi="http://www./2001/XMLSchema-instance"    
  5.     xsi:schemaLocation="http://java./xml/ns/javaee    
  6.     http://java./xml/ns/javaee/web-app_2_5.xsd">  
  7.        
  8.             <!-- struts2的常规配置 -->  
  9.     <filter>  
  10.         <filter-name>struts2</filter-name>  
  11.         <filter-class>  
  12.             org.apache.struts2.dispatcher.FilterDispatcher   
  13.         </filter-class>  
  14.     </filter>  
  15.     <filter-mapping>  
  16.         <filter-name>struts2</filter-name>  
  17.         <url-pattern>/*</url-pattern>  
  18.     </filter-mapping>  
  19.        
  20.         <!--  在web应用启动是自动形成一个spring容器 -->  
  21.     <listener>    
  22.         <listener-class>  
  23.             org.springframework.web.context.ContextLoaderListener   
  24.         </listener-class>  
  25.     </listener>  
  26.   <welcome-file-list>  
  27.     <welcome-file>index.jsp</welcome-file>  
  28.   </welcome-file-list>  
  29. </web-app>  


第五步:
从视图层入手;在webroot目录下新建一个save.jsp文件
如下代码;
Jsp代码 复制代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>   
  2. <%@ taglib prefix="s" uri="/struts-tags" %>   
  3.   
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
  5. <html>   
  6.   <head>   
  7.        
  8.     <title>My JSP 'save.jsp' starting page</title>   
  9.   
  10.   
  11.   </head>   
  12.      
  13.   <body>   
  14.     <s:form action='saveUser'>   
  15.     <s:textfield name="user.username" label="用名"></s:textfield>   
  16.     <s:textfield name="user.password" label="密码"></s:textfield>   
  17.         <s:submit></s:submit>   
  18.     </s:form>   
  19.   </body>   
  20. </html>  

接下去顺水推舟,自然开发action,及控制层
新建包com.test.action.user
新建一个SaveUserAction.java 代码初步如下:
Java代码 复制代码
  1. package com.test.action.user;   
  2.   
  3. import com.opensymphony.xwork2.ActionSupport;   
  4. import com.test.bean.User;   
  5.   
  6. public class SaveUserAction extends ActionSupport {   
  7.   
  8.     private User user;   
  9.   
  10.     public User getUser() {   
  11.         return user;   
  12.     }   
  13.     public void setUser(User user) {   
  14.         this.user = user;   
  15.     }   
  16.     @Override  
  17.     public String execute() throws Exception    
  18.     {   
  19.   
  20.         return SUCCESS;   
  21.     }      
  22. }  

于是,自然我们要新建一个bean
新建包com.test.bean 新建User.java
Java代码 复制代码
  1. package com.test.bean;   
  2.   
  3. public class User {   
  4.   
  5.     private Integer id;   
  6.     private String username;   
  7.     private String password;   
  8.     public Integer getId() {   
  9.         return id;   
  10.     }   
  11.     public void setId(Integer id) {   
  12.         this.id = id;   
  13.     }   
  14.     public String getUsername() {   
  15.         return username;   
  16.     }   
  17.     public void setUsername(String username) {   
  18.         this.username = username;   
  19.     }   
  20.     public String getPassword() {   
  21.         return password;   
  22.     }   
  23.     public void setPassword(String password) {   
  24.         this.password = password;   
  25.     }   
  26.        
  27. }  


好了,现在我们先把控制层的action放在这里,开发业务层和持久层(DAO)

新建包com.test.dao
建类UserDAO.java
代码如下:
Java代码 复制代码
  1. package com.test.dao;   
  2.   
  3. import java.util.List;   
  4.   
  5. import com.test.bean.User;   
  6.   
  7. public interface UserDAO    
  8. {   
  9.            
  10.     public void saveUser(User user);   
  11.        
  12.     public void removeUser(User user);   
  13.        
  14.     public User findUserById(Integer id);   
  15.        
  16.     public List<User> findAllUsers();   
  17.        
  18.     public void updateUser(User user);   
  19. }  
这是一个接口
在开发dao的实现类
新建包com.test.dao.impl
建类UserDAOImpl.java
代码:
Java代码 复制代码
  1. package com.test.dao.impl;   
  2.   
  3. import java.util.List;   
  4.   
  5. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;   
  6.   
  7. import com.test.bean.User;   
  8. import com.test.dao.UserDAO;   
  9. /**  
  10.  *   
  11.  * @author Administrator  
  12.  *  这个dao试用了hibernate的数据库操作语句  
  13.  */  
  14. public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {   
  15.   
  16.     /*  
  17.      * 获取所有数据  
  18.      */  
  19.     public List<User> findAllUsers() {   
  20.         String hql = "from User user order by user.id desc";   
  21.         return (List<User>) this.getHibernateTemplate().find(hql);   
  22.     }   
  23.   
  24.     /*  
  25.      * 获取指定的数据  
  26.      */  
  27.     public User findUserById(Integer id) {   
  28.         User user = (User) this.getHibernateTemplate().get(User.class, id);   
  29.         return user;   
  30.     }   
  31.   
  32.     public void removeUser(User user) {   
  33.   
  34.         this.getHibernateTemplate().delete(user);   
  35.     }   
  36.   
  37.     public void saveUser(User user) {   
  38.   
  39.          this.getHibernateTemplate().save(user);   
  40.     }   
  41.   
  42.     public void updateUser(User user) {   
  43.   
  44.         this.getHibernateTemplate().update(user);   
  45.     }   
  46.   
  47. }  

好了,数据持久层(dao)开发好了,按顺序,现在应该开发业务层了,
新建包com.test.service
建类UserService.java
代码:
Java代码 复制代码
  1. package com.test.service;   
  2.   
  3. import java.util.List;   
  4.   
  5. import com.test.bean.User;   
  6.   
  7. public interface UserService    
  8. {   
  9.         public List<User> findAll();   
  10.            
  11.         public void save(User user);   
  12.            
  13.         public void delete(User user);   
  14.            
  15.         public User findById(Integer id);   
  16.            
  17.         public void update(User user);   
  18. }  
这是一个接口类
然后写实现类
新建包
com.test.service.impl
建类
UserServiceImpl.java
Java代码 复制代码
  1. package com.test.service.impl;   
  2.   
  3. import java.util.List;   
  4.   
  5. import com.test.bean.User;   
  6. import com.test.dao.UserDAO;   
  7. import com.test.service.UserService;   
  8.   
  9. public class UserServiceImpl implements UserService {   
  10.   
  11.     private UserDAO userDao;   
  12.        
  13.     public UserDAO getUserDao() {   
  14.         return userDao;   
  15.     }   
  16.   
  17.     public void setUserDao(UserDAO userDao) {   
  18.         this.userDao = userDao;   
  19.     }   
  20.          //服务层的方法    
  21.        
  22.     public void delete(User user)   
  23.     {   
  24.          this.userDao.removeUser(user);   
  25.     }   
  26.   
  27.     public List<User> findAll() {   
  28.         return this.userDao.findAllUsers();   
  29.     }   
  30.   
  31.     public User findById(Integer id) {   
  32.            
  33.         return this.userDao.findUserById(id);   
  34.     }   
  35.   
  36.     public void save(User user)    
  37.     {   
  38.         this.userDao.saveUser(user);   
  39.     }   
  40.   
  41.     public void update(User user)    
  42.     {   
  43.         this.userDao.updateUser(user);   
  44.     }   
  45.   
  46. }  


业务和持久层都开发好了,现在我们回到控制层action
修改action的代码如下:
Java代码 复制代码
  1. package com.test.action.user;   
  2.   
  3. import com.opensymphony.xwork2.ActionSupport;   
  4. import com.test.bean.User;   
  5. import com.test.service.*;   
  6. public class SaveUserAction extends ActionSupport {   
  7.   
  8.     private User user;   
  9.     private UserService service;   
  10.     public UserService getService() {   
  11.         return service;   
  12.     }   
  13.     public void setService(UserService service) {   
  14.         this.service = service;   
  15.     }   
  16.     public User getUser() {   
  17.         return user;   
  18.     }   
  19.     public void setUser(User user) {   
  20.         this.user = user;   
  21.     }   
  22.     @Override  
  23.     public String execute() throws Exception    
  24.     {   
  25.         this.service.save(this.user);   
  26.         return SUCCESS;   
  27.     }      
  28. }  

修改struts.xml
如下
Xml代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC   
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"   
  4.     "http://struts./dtds/struts-2.0.dtd">  
  5.        
  6.     <struts>  
  7.             <package name="user" extends="struts-default">  
  8.            
  9.         <action name="saveUser" class="saveUserAction">  
  10.             <result name="success" type="redirect">listUser.action</result>  
  11.             <result name="input">/saveUser.jsp</result>  
  12.         </action>  
  13.        
  14.     </package>  
  15.     </struts>  


至此,我们已经开发好了一个典型的mvc项目,现在的任务是将strust2和hibernate都放入spring容器管理,
现在我们的项目结构如下:




然后修改 applicationContext.xml
代码如下 注意注释
Xml代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans  
  3.     xmlns="http://www./schema/beans"  
  4.     xmlns:xsi="http://www./2001/XMLSchema-instance"  
  5.     xsi:schemaLocation="http://www./schema/beans http://www./schema/beans/spring-beans-2.0.xsd">  
  6.                
  7.             <!-- 配置数据源 -->  
  8.             <!-- 一下分别配置了 数据库驱动 数据库路径 用户名 密码等 -->  
  9.     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">  
  10.             <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>  
  11.             <property name="url" value="jdbc:mysql://localhost:3306/mytest"></property>  
  12.             <property name="username" value="root"></property>  
  13.             <property name="password" value="123456"></property>  
  14.             <property name="maxActive" value="100"></property>  
  15.             <property name="maxIdle" value="30"></property>  
  16.             <property name="maxWait" value="500"></property>  
  17.             <property name="defaultAutoCommit" value="true"></property>  
  18.     </bean>          
  19.        
  20.               <!-- 一下配置sessionFactory  这个东西曾经是在hibernate中定义的 如今交给了spring管理 -->  
  21.     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  22.             <property name="dataSource" ref="dataSource"></property>  
  23.             <property name="hibernateProperties">  
  24.                     <props>  
  25.                         <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
  26.                         <prop key="hibernate.show_sql">true</prop>  
  27.                     </props>  
  28.             </property>  
  29.             <property name="mappingResources">  
  30.                     <list>  
  31.                         <value>com/test/bean/User.hbm.xml</value>  
  32.                     </list>  
  33.             </property>      
  34.     </bean>  
  35.        
  36.                  <!-- 以下使一些用到的类 在使用类中均没有实例化这个类,都交给了spring管理  -->  
  37.     <!-- DAObean -->  
  38.     <bean id="userDao" class="com.test.dao.impl.UserDAOImpl" scope="singleton">  
  39.         <property name="sessionFactory" ref="sessionFactory"></property>  
  40.     </bean>  
  41.     <!-- DAObean -->    
  42.        
  43.     <bean id="userService" class="com.test.service.impl.UserServiceImpl">  
  44.         <property name="userDao" ref="userDao"></property>  
  45.     </bean>  
  46.        
  47.     <bean id="saveUserAction" class="com.test.action.user.SaveUserAction">  
  48.         <property name="service" ref="userService"></property>  
  49.     </bean>  
  50.        
  51.        
  52. </beans>  



好了 到此为止,ssh2的整合已经完成了,发布后开启服务器吧,

不对,服务器开启后有异常


这里是包冲突问题
到项目的lib目录下,


删除选中的jar即可
ok了 可以测试了
http://localhost:8080/ssh2-2/save.jsp

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多