【框架集成】ssh简单实例-上篇

本篇主要把ssh框架配置介绍一遍

先来看一下配置结构图:

第一步:引入需要的jar包

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>cn.itcast</groupId>
  <artifactId>ssh</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
   <!-- 属性 -->
	<properties>
		<spring.version>4.2.4.RELEASE</spring.version>
		<hibernate.version>5.0.7.Final</hibernate.version>
		<struts.version>2.3.24</struts.version>
	</properties>

	<!-- 锁定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-context</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-aspects</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-orm</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-test</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-web</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.hibernate</groupId>
				<artifactId>hibernate-core</artifactId>
				<version>${hibernate.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.struts</groupId>
				<artifactId>struts2-core</artifactId>
				<version>${struts.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.struts</groupId>
				<artifactId>struts2-spring-plugin</artifactId>
				<version>${struts.version}</version>
			</dependency>
		</dependencies>
	</dependencyManagement>
	<!-- 依赖管理 -->
	<dependencies>
		<!-- spring -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
		</dependency>
		<!-- hibernate -->
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
		</dependency>

		<!-- 数据库驱动 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.6</version>
			<scope>runtime</scope>
		</dependency>
		<!-- c3p0 -->

		<dependency>
			<groupId>c3p0</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.1.2</version>
		</dependency>


		<!-- 导入 struts2 -->
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-spring-plugin</artifactId>
		</dependency>

		<!-- servlet jsp -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.0</version>
			<scope>provided</scope>
		</dependency>
		<!-- 日志 -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.2</version>
		</dependency>
		<!-- junit -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.9</version>
			<scope>test</scope>
		</dependency>
		<!-- jstl -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<!-- 设置编译版本为1.7 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>

			<!-- maven内置 的tomcat6插件 -->
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>tomcat-maven-plugin</artifactId>
				<version>1.1</version>
				<configuration>
					<!-- 可以灵活配置工程路径 -->
					<path>/ssh</path>
					<!-- 可以灵活配置端口号 -->
					<port>8080</port>
				</configuration>
			</plugin>

		</plugins>
	</build>
</project>

第二步:配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">

<listener>
 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>	
<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>/*</url-pattern>
</filter-mapping>

	
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>

</web-app>

第三步:配置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>
	<!-- 配置常量 -->
	<!-- 字符集 -->
	<constant name="struts.i18n.encoding" value="UTF-8"></constant>
	<!-- 开发模式 -->
	<constant name="struts.devMode" value="true"></constant>
	<!-- 主题 -->
	<constant name="struts.ui.theme" value="simple"></constant>
	<!-- 扩展名 -->
	<constant name="struts.action.extension" value="action"></constant>

	<!-- 通用package -->
	<package name="customer" namespace="/" extends="struts-default">

		<action name="findById" class="cn.itcast.crm.action.CustomerAction" method="findCustomerById">
			<result name="success">/info.jsp</result>
		</action>
		
		<action name="saveCustomer" class="cn.itcast.crm.action.CustomerAction" method="saveCustomer">
			<result name="success">/info.jsp</result>
		</action>
		
		<action name="updateCustomer" class="cn.itcast.crm.action.CustomerAction" method="updateCustomer">
			<result name="success">/info.jsp</result>
		</action>
		
		<action name="deleteCustomer" class="cn.itcast.crm.action.CustomerAction" method="deleteCustomer">
			<result name="success">/info.jsp</result>
		</action>
		<action name="findCustomerByHql" class="cn.itcast.crm.action.CustomerAction" method="findCustomerByHql">
			<result name="success">/info.jsp</result>
		</action>
		
		<action name="findCustomerByHqlPage" class="cn.itcast.crm.action.CustomerAction" method="findCustomerByHqlPage">
			<result name="success">/info.jsp</result>
		</action>
		<action name="getCount" class="cn.itcast.crm.action.CustomerAction" method="getCount">
			<result name="success">/info.jsp</result>
		</action>
		
		<action name="saveOrder" class="cn.itcast.crm.action.OrderAction" method="saveOrder">
			<result name="success">/info2.jsp</result>
		</action>

	</package>
</struts>

第四步:配置hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<!-- 会话工厂 -->
	<session-factory>
		<!-- 数据库方言,根据数据库选择 -->
	    <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

		<!--为了方便调试是否在运行hibernate时在日志中输出sql语句 -->
		<property name="hibernate.show_sql">true</property>
		<!-- 是否对日志中输出的sql语句进行格式化 -->
		<property name="hibernate.format_sql">true</property>

		<property name="hibernate.hbm2ddl.auto">none</property>
		
		<!-- 加载映射文件 -->
		<mapping resource="cn/itcast/crm/entity/Customer.hbm.xml"/>
		<mapping resource="cn/itcast/crm/entity/Order.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

第五步:配置核心融合剂 application.xml

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans.xsd 
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context.xsd 
	http://www.springframework.org/schema/aop 
	http://www.springframework.org/schema/aop/spring-aop.xsd 
	http://www.springframework.org/schema/tx  
	http://www.springframework.org/schema/tx/spring-tx.xsd">
	
	
	<!-- 数据库连接池 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="com.mysql.jdbc.Driver" />
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/mybatis" />
		<property name="user" value="root" />
		<property name="password" value="123456" />
	</bean>

	<!-- 配置sessionFactory -->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
		<!-- 依赖dataSource -->
		<property name="dataSource" ref="dataSource"/>
		<!-- 创建工厂需要加载hibernate映射文件 -->
		<property name="configLocations" value="classpath:hibernate.cfg.xml"></property>
	</bean>
	
	<bean id="customerDao" class="cn.itcast.crm.dao.impl.CustomerDaoImpl">
	 <property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	
	<bean id="customerService" class="cn.itcast.crm.service.impl.CustomerServiceImpl">
	 <property name="customerDao" ref="customerDao"></property>
	</bean>
	
	<bean id="customerAction" class="cn.itcast.crm.action.CustomerAction" scope="prototype">
	 <property name="customerService" ref="customerService"></property>
	</bean>
	
	<bean id="orderDao" class="cn.itcast.crm.dao.impl.OrderDaoImpl">
	 <property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	
	<bean id="orderService" class="cn.itcast.crm.service.impl.OrderServiceImpl">
	 <property name="orderDao" ref="orderDao"></property>
	</bean>
	
	<bean id="orderAction" class="cn.itcast.crm.action.OrderAction" scope="prototype">
	 <property name="orderService" ref="orderService"></property>
	</bean>
	
	
		<!-- 支持@AspectJ风格的切面声明 -->
    <aop:aspectj-autoproxy/>
	<!-- 配置参与事务的类 -->
    <aop:config>
    	<!-- 第一个*代表所有的返回值类型、 第3,4个*代表所有的类 、第五个*代表类所有方法 最后一个..代表所有的参数。 -->
        <aop:pointcut id="appService" expression="execution(* cn.itcast.crm.service..*Service*.*(..))"/>
        <!-- Advisor定义,切入点和通知分别为appService、txAdvice -->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="appService"/>
    </aop:config>

<!--  声明式容器事务管理 ,transaction-manager指定事务管理器为transactionManager-->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
        	<!-- propagation=Propagation.REQUIRED默认的spring事务传播级别,使用该级别的特点是,如果上下文中已经存在事务,那么就加入到事务中执行,如果当前上下文中不存在事务,则新建事务执行 -->
            <!-- 在mysql下测试,发现支持readOnly,设置为true时,只能查询,若增删改会异常 -->
            <tx:method name="select*" read-only="true"/>
            <tx:method name="find*" read-only="true"/>
            <tx:method name="get*" read-only="true"/>
            <tx:method name="*"/>
        </tx:attributes>
    </tx:advice>
	<!-- 配置基于注解的声明式事务管理,如果没有使用hibernate框架,则将class替换成"org.springframework.jdbc.datasource.DataSourceTransactionManager" -->
     <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">

        <property name="sessionFactory" ref="sessionFactory" />

    </bean>

</beans>

好了,至此ssh配置已经完成,下一篇我们进行内容的填充,让项目运行起来。

猜你喜欢

转载自blog.csdn.net/fxkcsdn/article/details/82843948