maven 搭建ssh spring struts2 hibernate

本文详细介绍了使用Maven搭建SSH(Struts2 + Spring + Hibernate)框架的过程,包括配置pom.xml、applicationContext.xml等关键文件,并分享了解决过程中遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面,自己搭建maven ssh框架费了很多工夫,最后采用了最笨的方法,和myeclipse里面的项目进行比对,比对jar包,最后把maven项目里的jar包反复考到myeclipse项目里面,最后在myeclipse里面成功了,此时,在maven项目中还剩下一个

 这样的异常,其他这个异常蛮简单,就是

<property name="packagesToScan">
			<list>
				<value>com.nitian.model.*</value>
			</list>
</property>

 ·我把model写出mode了,粗心大意的结果害我找了半天错误

         下面我贴上完整的代码,如果对大家有用,希望给个b( ̄▽ ̄)d赞

一.pom.xml

<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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>ssh</groupId>
	<artifactId>ssh</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>ssh Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<properties>
		<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
		<maven.compiler.encoding>utf-8</maven.compiler.encoding>
	</properties>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<!-- servlet -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
		</dependency>

		<!-- spring -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>3.1.1.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>3.1.1.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</artifactId>
			<version>3.1.1.RELEASE</version>
		</dependency>


		<!-- struts2 -->
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-spring-plugin</artifactId>
			<version>2.3.15.3</version>
		</dependency>

		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-convention-plugin</artifactId>
			<version>2.3.15.3</version>
		</dependency>

		<!-- hibernate -->
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-ehcache</artifactId>
			<version>4.2.7.Final</version>
		</dependency>

		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-c3p0</artifactId>
			<version>4.2.7.Final</version>
		</dependency>

		<!-- json -->
		<dependency>
			<groupId>net.sf.json-lib</groupId>
			<artifactId>json-lib</artifactId>
			<version>2.4</version>
			<classifier>jdk15</classifier>
		</dependency>

		<!-- 其他必须 -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.8.4</version>
		</dependency>

		<dependency>
			<groupId>cglib</groupId>
			<artifactId>cglib-nodep</artifactId>
			<version>2.2.2</version>
		</dependency>
	</dependencies>
	<build>
		<finalName>ssh</finalName>
		<plugins>
			<!-- tomcat7插件 -->
			<plugin>
				<groupId>org.mortbay.jetty</groupId>
				<artifactId>maven-jetty-plugin</artifactId>
				<version>6.1.10</version>
				<configuration>
					<!-- 每2秒的间隔扫描一次,实现热部署 -->
					<scanIntervalSeconds>2</scanIntervalSeconds>
				</configuration>
			</plugin>

			<!-- 修改java jdk 版本不对 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.2</version>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

 二.applicationContext.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:jee="http://www.springframework.org/schema/jee"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:util="http://www.springframework.org/schema/util"
	xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:tool="http://www.springframework.org/schema/tool" xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans   
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
            http://www.springframework.org/schema/tx  
            http://www.springframework.org/schema/tx/spring-tx.xsd  
            http://www.springframework.org/schema/aop  
            http://www.springframework.org/schema/aop/spring-aop.xsd  
            http://www.springframework.org/schema/context  
            http://www.springframework.org/schema/context/spring-context.xsd  
           	http://www.springframework.org/schema/jee  
           	http://www.springframework.org/schema/jee/spring-jee.xsd  
           	http://www.springframework.org/schema/util  
           	http://www.springframework.org/schema/util/spring-util.xsd  
           	http://www.springframework.org/schema/tool  
           	http://www.springframework.org/schema/tool/spring-tool.xsd"
	default-lazy-init="true" default-autowire="byName">
	<!-- -->

	<!-- 让SPRING支持ANNOTATION注解 -->
	<context:annotation-config />
	<!-- 设置扫描路径 -->
	<context:component-scan base-package="*.*" />
	<!-- 配置数据源 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close"><!-- destroy生命周期 -->
		<property name="driverClass" value="com.mysql.jdbc.Driver" />
		<property name="jdbcUrl"
			value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8" />
		<property name="user" value="root" />
		<property name="password" value="root" />
		<property name="minPoolSize" value="5" />
		<property name="maxPoolSize" value="50" />
		<property name="initialPoolSize" value="5" />
		<property name="maxIdleTime" value="25000" />
		<property name="acquireIncrement" value="1" />
		<property name="acquireRetryAttempts" value="30" />
		<property name="acquireRetryDelay" value="1000" />
		<property name="testConnectionOnCheckin" value="true" />
		<property name="automaticTestTable" value="c3p0TestTable" />
		<property name="idleConnectionTestPeriod" value="18000" />
		<property name="checkoutTimeout" value="100" />
	</bean>

	<!-- 配置 HIBERNATE -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="packagesToScan">
			<list>
				<value>com.nitian.model.*</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<value>
				hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
				hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext
				hibernate.hbm2ddl.auto=update
				hibernate.format_sql=true
				hibernate.show_sql=true
				hibernate.cache.use_query_cache=true
				hibernate.cache.use_second_level_cache=true
				hibernate.cache.provider_class=net.sf.ehcache.hibernate.EhCacheProvider
				hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory
				net.sf.ehcache.configurationResourceName=ehcache.xml
			</value>
		</property>
	</bean>
	<!-- 采用注解来管理Bean -->
	<tx:annotation-driven transaction-manager="transactionManager" />
	<!-- 事务配置 -->
	<bean id="txManager"
		class="org.springframework.orm.hibernate4.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	<tx:advice id="txAdvice" transaction-manager="txManager">
		<tx:attributes>
			<tx:method name="save*" propagation="REQUIRED" />
			<tx:method name="update*" propagation="REQUIRED" />
			<tx:method name="delete*" propagation="REQUIRED" />
			<tx:method name="test*" propagation="REQUIRED" />

			<tx:method name="get*" propagation="REQUIRED" read-only="true" />
			<tx:method name="count*" propagation="REQUIRED" read-only="true" />
			<tx:method name="find*" propagation="REQUIRED" read-only="true" />
			<tx:method name="*" read-only="true" />
		</tx:attributes>
	</tx:advice>

	<!-- 只对业务逻辑层实施事务 -->
	<aop:config proxy-target-class="true">
		<!-- 只对业务逻辑层实施事务 -->
		<aop:pointcut id="txPointcut"
			expression="
	
        execution(* test.web..service..*.*(..))
        or execution(* user.web..service..*.*(..))
        " />
		<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut" />
	</aop:config>
</beans>















 三.struts2.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>

	<!--
		将struts2交给spring管理 <constant name="struts.objectFactory"
		value="spring"></constant>
	-->
	<constant name="struts.i18n.encoding" value="UTF-8"></constant>
	<!-- 上传文件大小最大值5M -->
	<constant name="struts.multipart.maxSize" value="50701096"></constant>
	<constant name="struts.convention.result.path" value="/WEB-INF/jsp/"></constant>
	<constant name="struts.action.extension" value="htm" />
	<constant name="struts.multipart.saveDir" value="/temp"></constant>
	<constant name="struts.serve.static.browserCache" value="true"></constant>
	<constant name="struts.devMode" value="false"></constant>

	<package name="userpackage" namespace="/" extends="convention-default">
		<global-results>
			<result name="error">/error.jsp</result>
		</global-results>
	</package>

<!--  
	<package name="login" extends="userpackage">
		<interceptors>
			<interceptor name="loginInterceptor"
				class="com.laihuigo.interceptor.LoginInterceptor"></interceptor>
			<interceptor-stack name="loginStack">
				<interceptor-ref name="loginInterceptor"></interceptor-ref>
				<interceptor-ref name="defaultStack"></interceptor-ref>
			</interceptor-stack>
		</interceptors>
		<default-interceptor-ref name="loginStack"></default-interceptor-ref>
	</package>
-->




</struts>

 四.web.xml

<web-app>
	<display-name>Archetype Created Web Application</display-name>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	<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-list>
	<!-- 指明配置文件位置 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<!-- 多个配置文件之间可以用“,”隔开 -->
		<param-value>classpath:/applicationContext.xml</param-value>
	</context-param>

	<!-- 加载spring配置文件 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>
	<session-config>
		<session-timeout>60</session-timeout>
	</session-config>

</web-app>

 五.来一个整体项目截图



 今天就到这了,休息,抽时间把spring-mvc hibernate的搭出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值