(Maven实战)整合SSH项目案例

本文代码下载地址

配置eclipse中Maven环境

  • 配置m2e插件,新版eclipse自带Maven插件
  • 配置Maven程序
  • 配置userSetting:让eclipse知道Maven仓库

创建Servlet

创建Servlet类

public class HelloMaven extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public HelloMaven() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

在web.xml中配置Servlet

<servlet>
    <description></description>
    <display-name>HelloMaven</display-name>
    <servlet-name>HelloMaven</servlet-name>
    <servlet-class>com.zlc.servlet.HelloMaven</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloMaven</servlet-name>
    <url-pattern>/HelloMaven</url-pattern>
  </servlet-mapping>

Maven整合struts2

  • 添加struts2依赖
<dependency>
	  <groupId>org.apache.struts</groupId>
	  <artifactId>struts2-core</artifactId>
	  <version>2.5.20</version>
</dependency>
  • 创建struts.xml
  • 创建action
  • 在web.xml中配置struts2框架核心过滤器
<!--  配置struts2框架核心过滤器 -->
 <filter>
 	<filter-name>struts2</filter-name>
 	<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilte</filter-class>
 </filter>
 
 <filter-mapping>
 	<filter-name>struts2</filter-name>
 	<url-pattern>/*</url-pattern>
 </filter-mapping>
  • 编写action方法
public String save() throws Exception {
		System.out.println("CustomerAction调用了save方法");
		return SUCCESS;
	}
  • 在struts.xml中配置
<package name="demo" namespace="/" extends="struts-default">
    	<action name="customerAction_*" class="com.zlc.action.CustomerAction">
    		<result name="success">/index.jsp</result>
    	</action>
    </package>

通过Maven整合SSH框架(重点)

项目名称:SSH-Maven

添加ssh依赖

<properties>
  	<spring.version>4.1.4.RELEASE</spring.version>
  	<hibernate.version>5.0.7.Final</hibernate.version>
  	<struts.version>2.3.24</struts.version>
  </properties>
  
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.10</version>
      <scope>test</scope>
    </dependency>
    <dependency>
    	<groupId>javax.servlet</groupId>
    	<artifactId>javax.servlet-api</artifactId>
    	<version>4.0.1</version>
    </dependency>

    <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>

搭建struts2环境

  1. 创建struts2配置文件:struts.xml
  2. 在web.xml中配置struts2的核心过滤器
 <!--  配置struts2框架核心过滤器 -->
 <filter>
 	<filter-name>struts2</filter-name>
 	<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
 </filter>
 
 <filter-mapping>
 	<filter-name>struts2</filter-name>
 	<url-pattern>/*</url-pattern>
 </filter-mapping>

搭建Spring环境

  1. 创建spring配置文件 applicationContext.xml
  2. 在web.xml中配置监听器ContextLoaderListener
 <!-- 配置监听器:默认加载WEB-INF/applicationContext.xml -->
  <listener>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <!-- 通过上下文参数指定配置spring配置文件路径 -->
  <context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>classpath:applicationContext.xml</param-value>
  </context-param>

搭建Hibernate环境

  • 创建Hibernate核心配置文件 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 name="mysql">
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password">1111</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        
        <!-- 为了方便调试是否在运行hibernate时在日志中输出sql语句 -->
        <property name="hibernate.show_sql">true</property>
        
        <!-- 是否对日志中输出的sql语句进行格式化 -->
        <property name="hibernate.format_sql">true</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
    </session-factory>
</hibernate-configuration>

struts2跟spring整合

整合关键点:action对象创建,交给spring创建

  • 创建action类
  • 将action对象配置到spring配置文件中
  • 在struts.xml中的action节点中class属性配置为spring工厂中action对象bean的id

spring跟hibernate框架整合

整合关键点:
1. 数据源DataSource交给Sprig
2. sessionFactory对象创建交给Spring
3. 事务管理
  • 在spring配置文件中配置DataSource
<!-- 加载属性文件 "classpath:"只有在spring框架中使用-->
	<context:property-placeholder location="classpath:db.properties"/>
	
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="${jdbc.driverClass}"></property>
		<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
		<property name="user" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>
	</bean>
  • 在spring配置文件中配置sessionFactory
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<property name="configLocations" value="classpath:applicationContext.xml"></property>
	</bean>
  • 事务管理
    1)配置事务管理器:PlatFormTransactionManager接口
    i. jdbc:DataSourceTransactionManager
    ii.hibernate:HibernateTransactionManager
<!-- 配置事务管理器 -->
	<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	
	<!-- xml方式管理事务 -->
	<!-- 配置通知:具体增强逻辑 -->
	<tx:advice id="txAdvice">
		<tx:attributes>
			<!-- 匹配业务类中方法名称 -->
			<tx:method name="save*"/>
			<tx:method name="update*"/>
			<tx:method name="delete*" read-only="true"/>
			<tx:method name="find*"/>
			<tx:method name="*"/>
		</tx:attributes>
	</tx:advice>
	
	<!-- 配置AOP -->
	<aop:config>
		<!-- 配置切入点:具体哪些方法要增强(真正被增强的方法) -->
		<aop:pointcut expression="execution(* com.zlc.service.*.*(..))" id="cut"/>
		<!-- 配置切面:将增强逻辑作用到切点(通知+切入点) -->
		<aop:advisor advice-ref="txAdvice" pointcut-ref="cut"/>
	</aop:config>
	<!-- xml方式管理事务 结束 -->
	
	<!-- 注解方式管理事务 -->
	<!-- 1、开启注解驱动,2、在service类上或者方法上使用注解@Transactional -->
	<tx:annotation-driven transaction-manager="transactionManager" />
	<!-- 注解方式管理事务 结束 -->

需求

在地址栏输入action请求,action-service-dao。完成客户查询。

具体实现

  • 创建客户实体类以及映射文件、将映射文件引入到Hibernate核心配置文件中

  • 创建action、service、dao 完成注入

    在类中添加属性生成set方法
    在Spring配置文件中完成注入

<!-- 配置DAO对象 -->
	<bean id="customerDao" class="com.zlc.dao.impl.CustomerDaoImpl">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	
	<!-- 配置service对象 -->
	<bean id="customerService" class="com.zlc.service.impl.CustomerServiceImpl">
		<property name="customerDao" ref="customerDao"></property>
	</bean>
	
	
	
	<!-- 配置action对象 切记action要设置成多实例prototype -->
	<bean id="customerAction" class="com.zlc.web.action.CustomerAction" scope="prototype">
		<property name="customerService" ref="customerService"></property>
	</bean>
  • 在struts.xml配置文件中配置action,配置结果视图
<package name="demo" namespace="/" extends="struts-default" strict-method-invocation="false">
    	<action name="customerAction_*" class="customerAction" method="{1}">
    		<result name="success">/index.jsp</result>
    	</action>
    </package>

总结:

  1. 页面提交参数,在服务端接收参数
  2. 调用业务层方法–>dao方法–>DB
  3. 将返回的数据存到值栈
  4. 配置结果视图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值