zoukankan      html  css  js  c++  java
  • 初学者易上手的SSH-整合

    许久没更新博客了!

    spring还有一章aop(面向切面),我就没讲述了,你们可以去看下代理模式。

    那么我们开始整合:struts2  2.3.4 ,hibernate 5.2.10 ,spring 4.3.10 ,一直以来用到的xml式,那么整合也不例外,就是有些麻烦。另外注解式想了解请留言(虽然ssh已过时)。

    首先建立一个maven项目,导入以下依赖:

        <!-- javax.servlet-api -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>4.0.0</version>
                <scope>provided</scope>
            </dependency>
    
            <!-- hibernate-core -->
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>5.2.10.Final</version>
            </dependency>
    
            <!-- spring-context -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>4.3.10.RELEASE</version>
            </dependency>
    
            <!-- spring-orm -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-orm</artifactId>
                <version>4.3.10.RELEASE</version>
            </dependency>
    
            <!-- spring-aspects -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>4.3.10.RELEASE</version>
            </dependency>
    
            <!-- struts2-core -->
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-core</artifactId>
                <version>2.3.24</version>
            </dependency>
    
            <!-- struts2-spring-plugin -->
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-spring-plugin</artifactId>
                <version>2.3.24</version>
            </dependency>
    
            <!-- mysql -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.41</version>
            </dependency>
    
            <!-- c3p0 -->
            <dependency>
                <groupId>com.mchange</groupId>
                <artifactId>c3p0</artifactId>
                <version>0.9.5.2</version>
            </dependency>

    由于整个用xml文件,所以分开配置,比较容易理解:

    在resources文件夹下建立以下xml

    1.applicationContext-public.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
    
        <!-- 配置数据库连接池 c3p0 -->
        <bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="user" value="root"></property>
            <property name="password" value="sasa"></property>
            <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ssh"></property>
            <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
            <property name="initialPoolSize" value="3"></property>
            <property name="maxPoolSize" value="20"></property>
            
        </bean>
    
        <!-- 配置sessionFactory -->
        <bean id="sessionFactoryBean"
            class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
            <property name="dataSource" ref="datasource"></property>
    <!--可以不用--> <property name="configLocation" value="classpath:hibernate.cfg.xml"></property> <property name="mappingLocations" value="classpath:com/entity/*.hbm.xml"></property> </bean> <!-- 配置事务 --> <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactoryBean"></property> </bean> <!-- 配置事务属性 --> <tx:advice id="myAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="add*" propagation="REQUIRED" /> <tx:method name="update*" propagation="REQUIRED" /> <tx:method name="delete*" propagation="REQUIRED" /> <tx:method name="*" /> </tx:attributes> </tx:advice> <!-- 配置事务切点 --> <aop:config> <aop:pointcut expression="execution(* com.dao.*.*(..))" id="myPointcut" /> <aop:advisor advice-ref="myAdvice" pointcut-ref="myPointcut" /> </aop:config> </beans>

     建立basedao,用户dao层获取seesion来获取数据

    package com.dao.impl;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    
    public class BaseDao {
    
    	private static SessionFactory sessionFactory;
    
    	public static SessionFactory getSessionFactory() {
    		return sessionFactory;
    	}
    
    	public static void setSessionFactory(SessionFactory sessionFactory) {
    		BaseDao.sessionFactory = sessionFactory;
    	}
    
    	public static Session getSession() {
    		return sessionFactory.getCurrentSession();
    
    	}
    
    }
    

      建立dao类继承basedao

    package com.dao.impl;
    
    import java.util.List;
    
    import com.dao.IMenuDao;
    import com.entity.Menu;
    
    public class MenuDao extends BaseDao implements IMenuDao {
    
        
        public List<Menu> getAll(String rid, String title) {
        //引用basedao getSession()方法
    getSession().createQuery(sql) .....
          return null;
    }
    }

    2.applicationContext-dao.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
    
    <!--此为公共类 获取session--> <bean id="baseDao" class="com.dao.impl.BaseDao">
    <!--name为basedao中的引用对象名 其实是set方法名 因为对象的set方法一般与对象名一致 ref为applicationContext-public.xml中配置sessionFactory 的id-->
    <property name="sessionFactory" ref="sessionFactoryBean"></property> </bean>

    <!--id 自己写 class为类全路径 parent意为父类,即继承了上面的basedao-->

    </bean>

    <bean id="menuDao" class="com.dao.impl.MenuDao" parent="baseDao">
    </bean>

    
    
    </beans>

    建立biz类引用dao类

    package com.biz.impl;
    
    import java.util.List;
    
    import com.biz.IMenuBiz;
    import com.dao.IMenuDao;
    import com.entity.Menu;
    
    public class MenuBiz implements IMenuBiz {
    
    //引用dao 提供getter and setter
    private IMenuDao iMenuDao; public IMenuDao getiMenuDao() { return iMenuDao; } public void setiMenuDao(IMenuDao iMenuDao) { this.iMenuDao = iMenuDao; } public List<Menu> getAll(String rid,String title) { return iMenuDao.getAll(rid,title); } }

    3.applicationContext-biz.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
    
      

    <bean id="menuBiz" class="com.biz.impl.MenuBiz">

    <!--name biz类中引用对象名  ref为applicationContext-dao.xml中对象dao的id-->

    <property name="iMenuDao" ref="menuDao"></property>
    </bean>

    </beans>

    建立Action类引用biz

    package com.action;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.List;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.struts2.ServletActionContext;
    
    import com.biz.IMenuBiz;
    import com.entity.Menu;
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.ModelDriven;
    
    import net.sf.json.JSONArray;
    
    public class MenuAction extends ActionSupport implements ModelDriven<Menu> {
    
        private static final long serialVersionUID = 1L;
    
        private Menu menu = new Menu();
    

    //引用的biz
    private IMenuBiz iMenuBiz; public IMenuBiz getiMenuBiz() { return iMenuBiz; } public void setiMenuBiz(IMenuBiz iMenuBiz) { this.iMenuBiz = iMenuBiz; } public Menu getModel() { return menu; } }

    4.建立applicationContext-action.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
    
        
        
        <bean id="menuAction" class="com.action.MenuAction" scope="prototype">
    //配置与dao,biz意思一样 <property name="iMenuBiz" ref="menuBiz"></property> </bean> </beans>

    最后建立struts.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
        <package name="mypackage" extends="struts-default">
            <!--calss为applicationContext-action.xml对应的id-->    
            <action name="menu*" class="menuAction" method="{1}">
                <result name="success">/index.jsp</result>
                <result name="error">/login.jsp</result>
            </action>
        </package>
    </struts>

    web.xml配置

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
        <display-name>Archetype Created Web Application</display-name>
    
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext-*.xml</param-value>
        </context-param>
    
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
    
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>*.action</url-pattern>
        </filter-mapping>
    
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
    
    
    </web-app>

    整个下来很容易配错,要细心。关于在其中的许多解释就没说了,附图一张:  ssh完

  • 相关阅读:
    洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk( 普及-)
    洛谷 P1909 [NOIP2016 普及组] 买铅笔
    全排列问题
    集合的划分(setsub)
    自然数拆分-回溯
    洛谷 P4414 [COCI2006-2007#2] ABC
    洛谷 P5709 【深基2.习6】Apples Prologue
    洛谷 P4326 [COCI2006-2007#1] Herman
    平面分割
    洛谷 P1601 A+B Problem(高精)
  • 原文地址:https://www.cnblogs.com/lzx2509254166/p/7989881.html
Copyright © 2011-2022 走看看