web框架之SSH框架的搭建

25 篇文章 1 订阅
15 篇文章 0 订阅

一、新建web项目导入所需jar包

1)struts2.jar包

下载:http://struts.apache.org/download.cgi#struts2231

完成后解压struts-2.2.3-all,到\struts-2.2.3\apps\struts2-blank\WEB-INF\lib下拷贝所有jar包(共11个)

此外因为要整合spring及使用json对象,所以需要到struts-2.2.3-all\lib下拷贝如下jar包(共3个)

       struts2-json-plugin-2.2.3.jar
       json-lib-2.1-jdk15.jar
       struts2-spring-plugin-2.2.3.jar

2)spring.jar包

下载:http://www.springsource.org/download

完成后解压spring-framework-3.0.6.RELEASE,到\dist\下拷贝所需jar包(共11个)

       org.springframework.aop-3.0.6.RELEASE.jar
       org.springframework.asm-3.0.6.RELEASE.jar
       org.springframework.aspects-3.0.6.RELEASE.jar
       org.springframework.beans-3.0.6.RELEASE.jar
       org.springframework.context.support-3.0.6.RELEASE.jar
       org.springframework.context-3.0.6.RELEASE.jar
       org.springframework.core-3.0.6.RELEASE.jar
       org.springframework.expression-3.0.6.RELEASE.jar
       org.springframework.jdbc-3.0.6.RELEASE.jar
       org.springframework.transaction-3.0.6.RELEASE.jar
       org.springframework.web-3.0.6.RELEASE.jar

下载依赖包:spring-framework-3.0.2.RELEASE-dependencies,导入以下包

       com.springsource.net.sf.cglib-2.2.0.jar
       com.springsource.org.aopalliance-1.0.0.jar
       com.springsource.org.apache.commons.dbcp-1.2.2.osgi.jar
       com.springsource.org.apache.commons.logging-1.1.1.jar
       com.springsource.org.apache.commons.pool-1.5.3.jar
       com.springsource.org.aspectj.tools-1.6.6.RELEASE.jar
       com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

3)hibernate.jar包

下载: http://sourceforge.net/projects/hibernate/files/hibernate3/3.6.7.Final/

完成后解压hibernate-distribution-3.6.7.Final,拷贝

       hibernate3.jar

进入/lib/required/目录下拷贝所有包

进入/lib/jpa/目录下拷贝所有包

       hibernate-jpa-2.0-api-1.0.1.Final.jar

、配置

1)配置web.xml

[html]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
  5.     version="3.0">  
  6.     <!-- struts2配置 -->  
  7.     <filter>  
  8.         <filter-name>struts2</filter-name>  
  9.         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
  10.     </filter>  
  11.     <filter-mapping>  
  12.         <filter-name>struts2</filter-name>  
  13.         <url-pattern>/*</url-pattern>  
  14.     </filter-mapping>  
  15.       
  16.     <!-- spring配置 -->  
  17.     <context-param>  
  18.         <param-name>contextConfigLocation</param-name>  
  19.         <!-- 这里指定spring配置文件置于src目录下 -->  
  20.         <param-value>classpath:applicationContext.xml</param-value>  
  21.     </context-param>  
  22.     <listener>  
  23.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  24.     </listener>  
  25. </web-app>  
2)配置struts.xml(src目录下)
[html]  view plain copy
  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.apache.org/dtds/struts-2.0.dtd">  
  5. <struts>  
  6.     <!-- struts整合spring -->  
  7.     <constant name="struts.objectFactory" value="spring"></constant>  
  8.     <package name="default" namespace="/" extends="struts-default">  
  9.     </package>  
  10. </struts>  
3)配置applicationContext.xml(src目录下)

[html]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"  
  5.     xsi:schemaLocation="  
  6.        http://www.springframework.org/schema/beans   
  7.        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  8.        http://www.springframework.org/schema/tx   
  9.        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
  10.        http://www.springframework.org/schema/aop   
  11.        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
  12.        http://www.springframework.org/schema/context  
  13.          http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
  14.   
  15.     <!-- 配置 Spring 的 支持注解方式 -->  
  16.     <context:annotation-config />  
  17.       
  18.     <!-- 数据库的连接池配置 -->  
  19.     <bean id="mysqlDataSource" class="org.apache.commons.dbcp.BasicDataSource"  
  20.         destroy-method="close">  
  21.         <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
  22.         <property name="url" value="jdbc:mysql://localhost:3306/onlinepm" />  
  23.         <property name="username" value="root" />  
  24.         <property name="password" value="123" />  
  25.     </bean>  
  26.     <!-- 配置 hibernate的SessionFactory-->  
  27.     <bean id="sessionFactory"  
  28.         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  29.         <property name="dataSource" ref="mysqlDataSource" />  
  30.         <property name="mappingResources">  
  31.             <list>  
  32.                 <value>/com/gl/dao/bean/User.hbm.xml</value>  
  33.                 <value>/com/gl/dao/bean/Role.hbm.xml</value>  
  34.                 <value>/com/gl/dao/bean/Depart.hbm.xml</value>  
  35.             </list>  
  36.         </property>  
  37.         <property name="hibernateProperties">  
  38.             <value>  
  39.                 hibernate.dialect=org.hibernate.dialect.MySQLDialect  
  40.                 show_sql=true  
  41.             </value>  
  42.         </property>  
  43.     </bean>  
  44.       
  45.     <!-- 定义hibernate的事务管理对象-->  
  46.     <bean id="transactionManager"  
  47.         class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
  48.         <property name="sessionFactory" ref="sessionFactory" />  
  49.     </bean>  
  50.       
  51.     <!-- 开启注解事务管理 -->  
  52.     <tx:annotation-driven transaction-manager="transactionManager" />  
  53.       
  54.     <!-- 其他的Bean配置-->  
  55.     <bean id="userDaoImple" class="com.gl.dao.imple.UserDaoImple"/>  
  56.     <bean id="userService" class="com.gl.service.imple.UserServiceImple"/>  
  57.       
  58.     <!-- Struts 中的Action配置  
  59.     <bean id="listEmpsAction" class="com.gl.action.ListEmpsAction"></bean>  
  60.      -->  
  61. </beans>  

三、搭建项目框架

1)对struts(偏向control)

com.linxcool.action                 XXXAction
com.linxcool.interceptor         XXXInterceptor

2)对spring(业务处理)

com.linxcool.service.iface        IXXXService
com.linxcool.service.impl       XXXServiceImpl

3)对hibernate(偏向model)

com.linxcool.bean                   XXX.java     XXX.hbm.xml
com.linxcool.dao.iface            IXXXDAO
com.linxcool.dao.impl            XXXDAOImpl

4)工具包

com.linxcool.utils                    MD5加密  类型转换

四、测试

1)构建pojo(bean)及hbm文件,建议使用myeclipse或其他插件生成,不然很容易出错。

2)编写dao接口及dao对象

[java]  view plain copy
  1. public interface IUserDao {  
  2.     public abstract boolean save(User user) throws Exception;  
  3.     public abstract boolean delete(String id) throws Exception;  
  4.     public abstract boolean update(User user) throws Exception;  
  5.     public abstract List<User> getUsers() throws Exception;  
  6.     public abstract User getUserById(int id) throws Exception;  
  7. }  
[java]  view plain copy
  1. public class UserDaoImple implements IUserDao {  
  2.     /**启用注解*/  
  3.     @Autowired  
  4.     private SessionFactory sessionFactory;  
  5.       
  6.     @Override  
  7.     public boolean save(User user)throws Exception{  
  8.         try {  
  9.             Session session=sessionFactory.getCurrentSession();  
  10.             session.persist(user);  
  11.             return true;  
  12.         } catch (Exception e) {  
  13.             throw e;  
  14.         }  
  15.     }  
  16.     @Override  
  17.     public boolean delete(String id)throws Exception{  
  18.         try {  
  19.             Session session=sessionFactory.getCurrentSession();  
  20.             session.delete(id, User.class);  
  21.             return true;  
  22.         } catch (Exception e) {  
  23.             throw e;  
  24.         }  
  25.     }  
  26.     @Override  
  27.     public boolean update(User user)throws Exception{  
  28.         try {  
  29.             Session session=sessionFactory.getCurrentSession();  
  30.             session.merge(user);  
  31.             return true;  
  32.         } catch (Exception e) {  
  33.             throw e;  
  34.         }  
  35.     }  
  36.   
  37.     @SuppressWarnings("unchecked")  
  38.     @Override  
  39.     public List<User> getUsers()throws Exception{  
  40.         List<User> users=new ArrayList<User>();  
  41.         try {  
  42.             Session session=sessionFactory.getCurrentSession();  
  43.             users=session.createQuery("from User user").list();  
  44.         } catch (Exception e) {  
  45.             throw e;  
  46.         }  
  47.         return users;  
  48.     }  
  49.   
  50.     @Override  
  51.     public User getUserById(int id)throws Exception{  
  52.         User user=new User();  
  53.         try {  
  54.             Session session=sessionFactory.getCurrentSession();  
  55.             user=(User)session.createQuery("from User user where id=?").setInteger(0, id).uniqueResult();  
  56.         } catch (Exception e) {  
  57.             throw e;  
  58.         }  
  59.         return user;  
  60.     }  
  61. }  
2)构建service接口及其实现
[java]  view plain copy
  1. public interface IUserService {  
  2.     public abstract boolean save(User user) throws Exception;  
  3.     public abstract boolean delete(String id) throws Exception;  
  4.     public abstract boolean update(User user) throws Exception;  
  5.     public abstract List<User> getUsers() throws Exception;  
  6.     public abstract User getUserById(int id) throws Exception;  
  7. }  
[java]  view plain copy
  1. /**启用事物管理*/  
  2. @Transactional  
  3. public class UserServiceImple implements IUserService {  
  4.     @Autowired  
  5.     private UserDaoImple userDaoImple;  
  6.       
  7.     @Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.SERIALIZABLE)  
  8.     @Override  
  9.     public boolean save(User user)throws Exception{  
  10.         return userDaoImple.save(user);  
  11.     }  
  12.   
  13.     @Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.SERIALIZABLE)  
  14.     @Override  
  15.     public boolean delete(String id)throws Exception{  
  16.         return userDaoImple.delete(id);  
  17.     }  
  18.   
  19.     @Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.SERIALIZABLE)  
  20.     @Override  
  21.     public boolean update(User user)throws Exception{  
  22.         return userDaoImple.update(user);  
  23.     }  
  24.   
  25.     @Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)  
  26.     @Override  
  27.     public List<User> getUsers()throws Exception{  
  28.         return userDaoImple.getUsers();  
  29.     }  
  30.   
  31.     @Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)  
  32.     @Override  
  33.     public User getUserById(int id)throws Exception{  
  34.         return userDaoImple.getUserById(id);  
  35.     }  
  36. }  
2)构建测试类
[java]  view plain copy
  1. public class UserServiceTest {  
  2.     /**这里必须是接口 不然会出错*/  
  3.     private IUserService userService;  
  4.       
  5.     @Before  
  6.     public void setUp() throws Exception {  
  7.         ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");  
  8.         userService=(IUserService)context.getBean("userService");  
  9.     }  
  10.   
  11.     @Test  
  12.     public void testSave() {  
  13.         User user=new User();  
  14.         user.setName("catlin");  
  15.         user.setJobNum("LINX002");  
  16.         user.setPwd("02133");  
  17.         Depart depart=new Depart();  
  18.         depart.setId(1);  
  19.         Role role=new Role();  
  20.         role.setId(1);  
  21.         user.setDepart(depart);  
  22.         user.setRole(role);  
  23.         try {  
  24.             System.out.println(userService.save(user));  
  25.         } catch (Exception e) {  
  26.             e.printStackTrace();  
  27.         }  
  28.     }  
  29.   
  30.     @Test  
  31.     public void testDelete() {  
  32.         try {  
  33.             userService.delete("1");  
  34.         } catch (Exception e) {  
  35.             e.printStackTrace();  
  36.         }  
  37.         fail("Not yet implemented");  
  38.     }  
  39.   
  40.     @Test  
  41.     public void testUpdate() {  
  42.         try {  
  43.             User user=userService.getUserById(2);  
  44.             user.setName("iso9001");  
  45.             userService.update(user);  
  46.         } catch (Exception e) {  
  47.             e.printStackTrace();  
  48.         }  
  49.     }  
  50.   
  51.     @Test  
  52.     public void testGetUsers() {  
  53.         try {  
  54.             List<User> users=userService.getUsers();  
  55.             for (User user : users) {  
  56.                 System.out.println(user.getName());  
  57.             }  
  58.         } catch (Exception e) {  
  59.             e.printStackTrace();  
  60.         }  
  61.     }  
  62.   
  63.     @Test  
  64.     public void testGetUserById() {  
  65.         try {  
  66.             User user=userService.getUserById(1);  
  67.             System.out.println(user.getName());  
  68.         } catch (Exception e) {  
  69.             e.printStackTrace();  
  70.         }  
  71.     }  
  72.   
  73. }  




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值