Jboss7上+maven搭建struts2+spring3+hibernate3完整能运行

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 这是一个采用maven项目管理工具,集成struts2+spring3+hibernate3+mysql的一套框架模板,只是提供集成成功,struts2我采用的是零配置方式的,如果对着stuts2零配置方式不理解的,则回头学习一下。

这是一个采用maven项目管理工具,集成struts2+spring3+hibernate3+mysql的一套框架模板,只是提供集成成功,struts2我采用的是零配置方式的,如果对着stuts2零配置方式不理解的,则回头学习一下。该程序测试时在jboss7 AS上运行成功。但是没有使用jndi数据源,在jboss7中数据源配置需要按照module的方式配置,但是jboss4中数据源则相对简单一点。jboss4中使用spring和struts2集成时会有问题,这里有一个解决的文章可以参考一下:http://blog.csdn.net/zgmzyr/article/details/6893537.我的该框架在tomcat7下也是测试通过的,提示:如果阁下的maven仓库没有这些pom.xml,可以去下载后放到项目的lib目录下也是可以的。

1、这是我maven项目的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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.veight</groupId>
	<artifactId>veight</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>veight</name>
	<description />
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>
	<build>
		<sourceDirectory>src</sourceDirectory>
		<resources>
			<resource>
				<directory>src</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
		</resources>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.3.2</version>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.2</version>
				<configuration>
					<warSourceDirectory>${basedir}/WebRoot</warSourceDirectory>
					<version>3.0</version>
					<failOnMissingWebXml>false</failOnMissingWebXml>
				</configuration>
			</plugin>
		</plugins>
	</build>
	<dependencies>
		<!-- spring 3.2 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>3.2.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>3.2.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>3.2.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</artifactId>
			<version>3.2.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>3.2.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>3.2.0.RELEASE</version>
		</dependency>
		<!-- Struts 2 -->
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-core</artifactId>
			<version>2.3.15.2</version>
		</dependency>
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-json-plugin</artifactId>
			<version>2.3.15.2</version>
		</dependency>
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-spring-plugin</artifactId>
			<version>2.3.15.2</version>
		</dependency>
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-convention-plugin</artifactId>
			<version>2.3.15</version>
		</dependency>
		<!-- hibernate 3.6 -->
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>3.6.10.Final</version>
		</dependency>
		<!-- JPA -->
		<dependency>
			<groupId>org.hibernate.javax.persistence</groupId>
			<artifactId>hibernate-jpa-2.0-api</artifactId>
			<version>1.0.1.Final</version>
		</dependency>
		<!-- log4j -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.2</version>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.16</version>
		</dependency>
		<!-- C3P0 -->
		<dependency>
			<groupId>c3p0</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.1.2</version>
		</dependency>
		<!-- mysql5.1.30 驱动包 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.30</version>
		</dependency>
	</dependencies>
</project>

2、struts2的配置文件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>
	<!-- 在struts2.3.15 admin!login。action,找不到action的错误 开启动态调用方法 -->
	<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
	<!-- 是否显示详细错误信息 -->
	<constant name="struts.devMode" value="false" />
	<!-- 配置使用Spring管理Action -->
	<constant name="struts.objectFactory" value="spring" />
	<!-- 后缀 -->
	<constant name="struts.action.extension" value="action" />
	<!-- 国际化资源文件名称 -->
	<constant name="struts.custom.i18n.resources" value="i18n" />
	<!-- 是否自动加载国际化资源文件  -->
	<constant name="struts.i18n.reload" value="false" />
	<!-- convention类重新加载 -->
	<constant name="struts.convention.classes.reload" value="false" />
	<!-- 浏览器是否缓存静态内容 -->
	<constant name="struts.serve.static.browserCache" value="true" />
	<!-- 上传文件大小限制设置 -->
	<constant name="struts.multipart.maxSize" value="-1" />
	<!-- 主题 -->
	<constant name="struts.ui.theme" value="simple" />
	<!-- 编码 -->
	<constant name="struts.i18n.encoding" value="UTF-8" />
	<!-- 结果资源的路径 -->
	<constant name="struts.convention.result.path" value="/WEB-INF/template/" />
	<!-- URL资源分隔符 -->
	<constant name="struts.convention.action.name.separator" value="_" />
	
	<package name="basePackage" extends="struts-default">
		<interceptors>
			<interceptor-stack name="baseStack">
                <interceptor-ref name="exception" />
                <interceptor-ref name="alias" />
                <interceptor-ref name="servletConfig" />
                <interceptor-ref name="i18n" />
                <interceptor-ref name="prepare" />
                <interceptor-ref name="chain" />
                <interceptor-ref name="debugging" />
                <interceptor-ref name="scopedModelDriven" />
                <interceptor-ref name="modelDriven" />
                <interceptor-ref name="fileUpload" />
                <interceptor-ref name="checkbox" />
                <interceptor-ref name="multiselect" />
                <interceptor-ref name="staticParams" />
                <interceptor-ref name="actionMappingParams" />
                <interceptor-ref name="params">
					<param name="excludeParams">dojo\..*,^struts\..*</param>
                </interceptor-ref>
                <interceptor-ref name="conversionError"/>
                <!-- 配置方法级别的校验 -->
                <interceptor-ref name="validation">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                    <param name="validateAnnotatedMethodOnly">true</param>
                </interceptor-ref>
                <interceptor-ref name="workflow">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>
            </interceptor-stack>
		</interceptors>
		<!-- 配置默认拦截器栈 -->
		<default-interceptor-ref name="baseStack" />
		<!-- 未到找Action指向页面 -->
		<default-action-ref name="errorPage" />
		<action name="errorPage">
			<result type="redirect">/html/error_page_404.html</result>
		</action>
	</package>
	<!-- 后台管理 Action -->
	<package name="admin" extends="basePackage" namespace="/admin/">
		<interceptors>
			<interceptor-stack name="adminStack">
				<interceptor-ref name="baseStack" />
			</interceptor-stack>
		</interceptors>
		<global-results>
			<result name="error" type="freemarker">/WEB-INF/template/admin/error.ftl</result>
			<result name="success" type="freemarker">/WEB-INF/template/admin/success.ftl</result>
		</global-results>
	</package>
</struts>
3、重要spring配置文件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: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">
	<!-- 使用注解注入 -->
	<context:annotation-config />
	<!-- JDBC参数配置 -->
	<bean
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
		lazy-init="true">
		<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
		<property name="ignoreResourceNotFound" value="true" />
		<property name="locations">
			<list>
				<value>classpath:/jdbc.properties</value>
			</list>
		</property>
	</bean>
	<!-- 连接池配置 C3p0-->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="${jdbc.driver}"></property>
		<property name="jdbcUrl" value="${jdbc.url}"></property>
		<property name="user" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>
	</bean>
	<!-- 配置hibernate信息 -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<!-- 配置Hibernate拦截器,自动填充数据的插入、更新时间 -->
		<property name="dataSource" ref="dataSource" />
		<property name="hibernateProperties">
			<value>
				<!-- 设置数据库方言 -->
				hibernate.dialect=${hibernate.dialect}
				<!-- 设置自动创建|更新|验证数据库表结构 -->
				hibernate.hbm2ddl.auto=update
				<!-- 输出SQL语句到控制台 -->
				hibernate.show_sql=${hibernate.show_sql}
				<!-- 格式化输出到控制台的SQL语句 -->
				hibernate.format_sql=${hibernate.format_sql}
				<!-- 是否开启二级缓存 -->
				hibernate.cache.use_second_level_cache=false
				<!-- 配置二级缓存产品 -->
				hibernate.cache.provider_class=org.hibernate.cache.OSCacheProvider
				<!-- 是否开启查询缓存 -->
				hibernate.cache.use_query_cache=false
				<!-- 数据库批量查询数 -->
				hibernate.jdbc.fetch_size=50
				<!-- 数据库批量更新数 -->
				hibernate.jdbc.batch_size=30
			</value>
		</property>
		<!-- 注入实体对象 -->
		<property name="annotatedClasses">
			<list>
				<value>org.veight.admin.domain.Admin</value>
			</list>
		</property>
	</bean>
	<!-- 设置需要进行Spring注解扫描的类包 -->
	<context:component-scan base-package="org.veight" />
	<!-- 配置freemarkerManager -->
	<bean id="freemarkerManager" class="org.apache.struts2.views.freemarker.FreemarkerManager" />

</beans>
4、JDBC的属性文件在spring中要引用,你也可以根据自己的情况直接写在spring的配置文件中,jdbc.properties

#SHOP++ JDBC\u914D\u7F6E\u6587\u4EF6
#Wed Mar 13 22:12:01 CST 2013
jdbc.url=jdbc\:mysql\://localhost\:3306/test?useUnicode\=true&characterEncoding\=UTF-8
jdbc.username=root
hibernate.dialect=org.hibernate.dialect.MySQLDialect
jdbc.driver=com.mysql.jdbc.Driver
hibernate.show_sql=false
jdbc.password=123456
hibernate.format_sql=false


log4j.properties:

log4j.rootCategory=error,stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[SHOP++] %p [%t] %C.%M(%L) | %m%n

log4j.logger.com.opensymphony.xwork2.ognl.OgnlValueStack=ERROR

5、在struts2中我喜欢采用零配置,为了把freemarker也整合进来freemarker.properties

classic_compatible=true
whitespace_stripping=true
template_update_delay=3600
locale=zh_CN
default_encoding=utf-8
url_escaping_charset=utf-8
date_format=yyyy-MM-dd
time_format=HH:mm:Ss
datetime_format=yyyy-MM-dd
number_format=\#0.\#\#\#\#\#

6、工程项目就是veight,顺便说一句我的开发工具是myeclipse2013,所以直接导入应该ibu兼容的,最好是自己创建一个工程,然后复制配置文件到你工程中去。源代码我放在我自己资源中,如果在tomcat7或者在jboss7 as中部署,启动服务器,在Mysql数据库的test库中会生成一张admin的表,则说明成功。


7 、前面忘记家里web.xml的配置文件了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_3_0.xsd"
	id="WebApp_ID" version="3.0">
	<display-name>veight</display-name>
	<!-- spring配置文件位置 -->
	<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>
	<!-- struts核心控制器 -->
	<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>
	<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>



6、源码下载地址,不要积分:源码工程下载地址



相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
7月前
|
Java Maven 微服务
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的 maven 依赖
在项目中使用Swagger2工具时,需导入Maven依赖。尽管官方最高版本为2.8.0,但其展示效果不够理想且稳定性欠佳。实际开发中常用2.2.2版本,因其稳定且界面友好。以下是围绕2.2.2版本的Maven依赖配置,包括`springfox-swagger2`和`springfox-swagger-ui`两个模块。
248 0
|
11月前
|
安全 Java 应用服务中间件
如何将Spring Boot应用程序运行到自定义端口
如何将Spring Boot应用程序运行到自定义端口
844 0
|
XML Java 应用服务中间件
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
1136 2
|
Java 应用服务中间件 Maven
idea+maven+tomcat+spring 创建一个jsp项目
这篇文章介绍了如何在IntelliJ IDEA中使用Maven和Tomcat创建一个JSP项目,包括配置Maven依赖、设置Tomcat服务器、编写JSP页面、创建控制器和配置文件,以及项目的运行结果。
643 0
idea+maven+tomcat+spring 创建一个jsp项目
|
Java Maven 容器
Maven使用IDEA自带工具打包,同时将lib下的jar包打入,双击jar包可直接运行
使用IntelliJ IDEA的Artifacts功能,可以将项目依赖的第三方jar包打包进jar文件中,实现双击jar包即可直接运行。
Maven使用IDEA自带工具打包,同时将lib下的jar包打入,双击jar包可直接运行
|
SQL 前端开发 Java
在IDEA中使用Maven将SpringBoot项目打成jar包、同时运行打成的jar包(前后端项目分离)
这篇文章介绍了如何在IntelliJ IDEA中使用Maven将Spring Boot项目打包成可运行的jar包,并提供了运行jar包的方法。同时,还讨论了如何解决jar包冲突问题,并提供了在IDEA中同时启动Vue前端项目和Spring Boot后端项目的步骤。
在IDEA中使用Maven将SpringBoot项目打成jar包、同时运行打成的jar包(前后端项目分离)
|
JavaScript 前端开发 Java
用Maven运行JMeter
用Maven运行JMeter
221 0
用Maven运行JMeter
|
Java Maven Spring
用Spring导致的无法运行Java文件的问题的解决方案
本文提供了解决在IntelliJ IDEA社区版中使用Spring Initializr插件创建Spring项目后,Java文件无法运行的问题的方法,主要是通过加载Maven项目来解决。
210 0
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
487 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
数据库 Java 数据库连接
Struts 2 与 Hibernate 的完美邂逅:如何无缝集成两大框架,轻松玩转高效 CRUD 操作?
【8月更文挑战第31天】本文通过具体示例介绍了如何在 Struts 2 中整合 Hibernate,实现基本的 CRUD 操作。首先创建 Maven 项目并添加相关依赖,接着配置 Hibernate 并定义实体类及其映射文件。然后创建 DAO 接口及实现类处理数据库操作,再通过 Struts 2 的 Action 类处理用户请求。最后配置 `struts.xml` 文件并创建 JSP 页面展示用户列表及编辑表单。此示例展示了如何配置和使用这两个框架,使代码更加模块化和可维护。
389 0

热门文章

最新文章

推荐镜像

更多