快速学习SSH框架

转自:http://blog.csdn.net/u013036274/article/details/51995092

SSHstruts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。

【框架介绍】

Spring

   单单说SpringSSH中的作用。①管理Struts:在xml配置文件中为strutsaction进行注入。②管理hibernate:在xml配置文件中配置hibernate的配置信息(dataSourcesessionFactory),为hibernatedao操作注入sessionFactory属性值。

Struts

   用来响应用户的action,对应到相应的类进行处理。

Hibernate

   用来把实体类对应到数据库。提供增删改查的基本底层操作。

【搭建开发环境--jar包】

SpringStrutsHibernate相关的jar包,springstruts整合的包,以及mysqljdbc驱动包。

Struts:

jar:

struts-2.3.15.3\apps\struts2-blank.war\WEB-INF\lib\*.jar

struts-2.3.15.3\lib\struts2-json-plugin-2.3.15.3.jar

struts-2.3.15.3\lib\struts2-spring-plugin-2.3.15.3.jar

 

Spring:

<Spring3.2开发最基本jar>

spring-beans-3.2.0.RELEASE.jar

spring-context-3.2.0.RELEASE.jar

spring-core-3.2.0.RELEASE.jar

spring-expression-3.2.0.RELEASE.jar

com.springsource.org.apache.commons.logging-1.1.1.jar

com.springsource.org.apache.log4j-1.2.15.jar

<AOP开发>

spring-aop-3.2.0.RELEASE.jar

spring-aspects-3.2.0.RELEASE.jar

com.springsource.org.aopalliance-1.0.0.jar

com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

<Spring Jdbc开发>

spring-jdbc-3.2.0.RELEASE.jar

spring-tx-3.2.0.RELEASE.jar

<Spring事务管理>

spring-tx-3.2.0.RELEASE.jar

<Spring整合其他ORM框架>

spring-orm-3.2.0.RELEASE.jar

<Springweb中使用>

spring-web-3.2.0.RELEASE.jar

<Spring整合Junit测试>

spring-test-3.2.0.RELEASE.jar

 

Hibernate:

jar:

hibernate-distribution-3.6.10.Final\hibernate3.jar

hibernate-distribution-3.6.10.Final\lib\required\*.jar

hibernate-distribution-3.6.10.Final\lib\jpa\*.jar

【搭建开发环境--配置文件】

1Web.xml

[html]  view plain  copy
  1. <!-- 配置Spring的核心监听器:监听器在创建时自动查找WEB-INF下的applicationContext.xml文件,从而创建spring容器-->  
  2. <listener>  
  3. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  4. </listener>  
  5.    
  6. <context-param>  
  7. <param-name>contextConfigLocation</param-name>  
  8. <param-value>classpath:applicationContext.xml</param-value>  
  9. </context-param>  
  10.    
  11. <!-- 配置Struts2的核心过滤器-->  
  12. <filter>  
  13. <filter-name>struts2</filter-name>  
  14. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
  15. </filter>  
  16.   
  17.  <!--下面的配置表示对于所有的请求都交给struts来处理 -->  
  18. <filter-mapping>  
  19. <filter-name>struts2</filter-name>  
  20. <url-pattern>/*</url-pattern>  
  21. </filter-mapping>  

2struts.xml:

[html]  view plain  copy
  1. <struts>  
  2. <constantnameconstantname="struts.devMode" value="false" />  
  3. <packagenamepackagename="shop" extends="struts-default"namespace="/">  
  4. <!-- 配置首页访问的Action -->  
  5. <actionnameactionname="index" class="indexAction">  
  6. <resultnameresultname="index">/WEB-INF/jsp/index.jsp</result>  
  7. </action>  
  8. </package>  
  9. </struts>  

3applicationContext.xml

 

[html]  view plain  copy
  1. <!-- 配置连接池:-->  
  2. <!-- 引入外部属性文件-->  
  3. <context:property-placeholderlocationcontext:property-placeholderlocation="classpath:jdbc.properties" />  
  4. <!-- 配置C3P0连接池: -->  
  5. <beanidbeanid="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource">  
  6. <propertynamepropertyname="driverClass" value="${jdbc.driver}" />  
  7. <propertynamepropertyname="jdbcUrl" value="${jdbc.url}" />  
  8. <propertynamepropertyname="user" value="${jdbc.user}" />  
  9. <propertynamepropertyname="password" value="${jdbc.password}" />  
  10. </bean>  
  11.    
  12. <!-- Hibernate的相关信息 -->  
  13. <beanidbeanid="sessionFactory"  
  14. class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  15. <!-- 注入连接池-->  
  16. <propertynamepropertyname="dataSource" ref="dataSource" />  
  17. <!-- 配置Hibernate的其他的属性 -->  
  18. <propertynamepropertyname="hibernateProperties">  
  19. <props>  
  20. <propkeypropkey="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
  21. <propkeypropkey="hibernate.show_sql">true</prop>  
  22. <propkeypropkey="hibernate.format_sql">true</prop>  
  23. <propkeypropkey="hibernate.connection.autocommit">false</prop>  
  24. <propkeypropkey="hibernate.hbm2ddl.auto">update</prop>  
  25. </props>  
  26. </property>  
  27. <!-- 配置Hibernate的映射文件 -->  
  28. <propertynamepropertyname="mappingResources">  
  29. <list>  
  30. <value>cn/itcast/shop/user/vo/User.hbm.xml</value>  
  31. </list>  
  32. </property>  
  33.    
  34. </bean>  
  35.    
  36. <!-- 事务管理:-->  
  37. <!-- 事务管理器-->  
  38. <beanidbeanid="transactionManager"  
  39. class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
  40. <propertynamepropertyname="sessionFactory" ref="sessionFactory" />  
  41. </bean>  
  42.    
  43. <!-- 开启注解事务-->  
  44. <tx:annotation-driventransaction-managertx:annotation-driventransaction-manager="transactionManager" />  
  45.    
  46. <!-- ********************Action的配置******************** -->  
  47.    
  48. <!-- 首页访问的Action-->  
  49. <beanidbeanid="indexAction"class="cn.itcast.shop.index.action.IndexAction"  
  50. scope="prototype"></bean>  
  51.    
  52. <!-- 用户模块的Action-->  
  53. <beanidbeanid="userAction"class="cn.itcast.shop.user.action.UserAction"  
  54. scope="prototype">  
  55. <!-- 注入Service-->  
  56. <propertynamepropertyname="userService" ref="userService" />  
  57. </bean>  
  58.    
  59. <!-- ********************Service的配置******************** -->  
  60. <beanidbeanid="userService"class="cn.itcast.shop.user.service.UserService">  
  61. <propertynamepropertyname="userDao" ref="userDao" />  
  62. </bean>  
  63.    
  64. <!-- ********************Dao的配置******************** -->  
  65. <beanidbeanid="userDao" class="cn.itcast.shop.user.dao.UserDao">  
  66. <propertynamepropertyname="sessionFactory"ref="sessionFactory"></property>  
  67. </bean>  
  68. </beans>  
【业务逻辑部分-以用户注册为例】

1.首先完成hibernate的操作部分。设计一个User实体类,该类中包含数据库中User表的所有字段。

[java]  view plain  copy
  1. package cn.itcast.shop.user.vo;  
  2. /** 
  3.  * 用户模块实体类 
  4.  * @author happy 
  5.  * 
  6.  */  
  7. public class User {  
  8.   
  9.     public Integer getUid() {  
  10.         return uid;  
  11.     }  
  12.     public void setUid(Integer uid) {  
  13.         this.uid = uid;  
  14.     }  
  15.     public String getUsername() {  
  16.         return username;  
  17.     }  
  18.     public void setUsername(String username) {  
  19.         this.username = username;  
  20.     }  
  21.     public String getPassword() {  
  22.         return password;  
  23.     }  
  24.     public void setPassword(String password) {  
  25.         this.password = password;  
  26.     }  
  27.     public String getName() {  
  28.         return name;  
  29.     }  
  30.     public void setName(String name) {  
  31.         this.name = name;  
  32.     }  
  33.     public String getEmail() {  
  34.         return email;  
  35.     }  
  36.     public void setEmail(String email) {  
  37.         this.email = email;  
  38.     }  
  39.     public String getPhone() {  
  40.         return phone;  
  41.     }  
  42.     public void setPhone(String phone) {  
  43.         this.phone = phone;  
  44.     }  
  45.     public String getAddr() {  
  46.         return addr;  
  47.     }  
  48.     public void setAddr(String addr) {  
  49.         this.addr = addr;  
  50.     }  
  51.     public Integer getState() {  
  52.         return state;  
  53.     }  
  54.     public void setState(Integer state) {  
  55.         this.state = state;  
  56.     }  
  57.     public String getCode() {  
  58.         return code;  
  59.     }  
  60.     public void setCode(String code) {  
  61.         this.code = code;  
  62.     }  
  63.     private Integer uid;  
  64.     private String username;  
  65.     private String password;  
  66.     private String name;  
  67.     private String email;  
  68.     private String phone;  
  69.     private String addr;  
  70.     private Integer state;  
  71.     private String code;  
  72. }  
2.新建一个User.hbm.xml文件,实现实体类与数据库的关联。

[java]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC   
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">  
  5.       
  6. <hibernate-mapping>  
  7.     <class name="cn.itcast.shop.user.vo.User" table="user">  
  8.         <id name="uid">  
  9.             <generator class="native"/>  
  10.         </id>  
  11.         <property name="username"/>  
  12.         <property name="password"/>  
  13.         <property name="name"/>  
  14.         <property name="email"/>  
  15.         <property name="phone"/>  
  16.         <property name="addr"/>  
  17.         <property name="state"/>  
  18.         <property name="code"/>  
  19.     </class>  
  20. </hibernate-mapping>  
3.接下来实现Dao层的操作。设计一个类UserDao,继承了HibernateDaoSupport类。

[java]  view plain  copy
  1. package cn.itcast.shop.user.dao;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;  
  6.   
  7. import cn.itcast.shop.user.vo.User;  
  8.   
  9. /** 
  10.  * 用户模块持久层代码 
  11.  *  
  12.  * @author happy 
  13.  *  
  14.  */  
  15. public class UserDao extends HibernateDaoSupport {  
  16.     // 按名称查询是否有该用户:  
  17.     public User findByUsername(String username) {  
  18.         String hql = "from User where username = ?";  
  19.         List<User> list = this.getHibernateTemplate().find(hql, username);  
  20.         if (list != null && list.size() > 0) {  
  21.             return list.get(0);  
  22.         }  
  23.         return null;  
  24.     }  
  25.   
  26.     // 注册用户存入数据库代码实现  
  27.     public void save(User user) {  
  28.         this.getHibernateTemplate().save(user);  
  29.     }  
  30. }  

4.接下来Service层的操作。

[java]  view plain  copy
  1. package cn.itcast.shop.user.service;  
  2.   
  3. import org.springframework.transaction.annotation.Transactional;  
  4.   
  5. import cn.itcast.shop.user.dao.UserDao;  
  6. import cn.itcast.shop.user.vo.User;  
  7. import cn.itcast.shop.utils.MailUitls;  
  8. import cn.itcast.shop.utils.UUIDUtils;  
  9.   
  10. /** 
  11.  * 用户模块业务层代码 
  12.  *  
  13.  * @author happy 
  14.  *  
  15.  */  
  16. @Transactional  
  17. public class UserService {  
  18.     // 注入UserDao  
  19.     private UserDao userDao;  
  20.   
  21.     public void setUserDao(UserDao userDao) {  
  22.         this.userDao = userDao;  
  23.     }  
  24.   
  25.     // 按用户名查询用户的方法:  
  26.     public User findByUsername(String username) {  
  27.         return userDao.findByUsername(username);  
  28.     }  
  29.   
  30.     //业务层完成用户注册代码:  
  31.     public void save(User user) {  
  32.         //将数据存入到数据库  
  33.         user.setState(0);//0代表用户未激活,1代表用户已经激活  
  34.         String code=UUIDUtils.getUUID()+UUIDUtils.getUUID();  
  35.         user.setCode(code);  
  36.         userDao.save(user);  
  37.     }  
  38.   
  39. }  
5.定义UserAction类。

[java]  view plain  copy
  1. package cn.itcast.shop.user.action;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. import javax.servlet.http.HttpServletResponse;  
  6.   
  7. import org.apache.struts2.ServletActionContext;  
  8.   
  9. import cn.itcast.shop.user.service.UserService;  
  10. import cn.itcast.shop.user.vo.User;  
  11.   
  12. import com.opensymphony.xwork2.ActionSupport;  
  13. import com.opensymphony.xwork2.ModelDriven;  
  14.   
  15. /** 
  16.  * 用户模块Action的类 
  17.  *  
  18.  * @author happy 
  19.  *  
  20.  */  
  21. public class UserAction extends ActionSupport implements ModelDriven<User> {  
  22.     // 模型驱动使用的对象  
  23.     private User user = new User();  
  24.     // 注入UserService  
  25.     private UserService userService;  
  26.   
  27.     public void setUserService(UserService userService) {  
  28.         this.userService = userService;  
  29.     }  
  30.   
  31.     public User getModel() {  
  32.         return user;  
  33.     }  
  34.   
  35.     /** 
  36.      * 跳转到注册页面的执行方法 
  37.      */  
  38.     public String registPage() {  
  39.         return "registPage";  
  40.     }  
  41.   
  42.     /** 
  43.      * AJAX进行一步校验用户名的执行方法 
  44.      *  
  45.      * @throws IOException 
  46.      */  
  47.     public String findByName() throws IOException {  
  48.         // 调用Service进行查询  
  49.         User existUser = userService.findByUsername(user.getUsername());  
  50.         // 获得response对象,向叶面输出:  
  51.         HttpServletResponse response = ServletActionContext.getResponse();  
  52.         response.setContentType("text/html;charset=UTF-8");  
  53.         // 判断  
  54.         if (existUser != null) {  
  55.             // 查询到该用户:用户名已经存在  
  56.             response.getWriter().println("<font color='red'>用户名已经存在</font>");  
  57.         } else {  
  58.             // 没查询到该用户:用户名可以使用  
  59.             response.getWriter().println("<font color='green'>用户名可以使用</font>");  
  60.         }  
  61.         return NONE;  
  62.     }  
  63.   
  64.     /** 
  65.      * 用户注册的方法: 
  66.      */  
  67.     public String regist() {  
  68.         userService.save(user);  
  69.         this.addActionMessage("注册成功,情趣邮箱激活!");  
  70.         return "msg";  
  71.     }  
  72. }  
6.前台的jsp

      首先引用struts2的标签

[html]  view plain  copy
  1. <!-- 引用struts2的标签 -->  
  2. <%@ taglib uri="/struts-tags" prefix="s"%>  

      然后,在页面设计中调用user_regist.action方法即可

[html]  view plain  copy
  1. <form id="registerForm"  
  2.                         action="${pageContext.request.contextPath}/user_regist.action "  
  3.                         method="post" novalidate="novalidate"  
  4.                         onsubmit="return checkForm()">  

        其他一些边边角角的基础代码没有贴出来,大致框架就是这样。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值