【ssh】struts2-hibernate-spring框架的搭建

​​​​​​创建一个web项目

1. 创建的是一个web项目 必须要添加web.xml文件

web.xml is missing and <failOnMissingWebXml> is set to true

 

   2.在src目录下创建一个WEB-INF的文件夹。创建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" 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>blxgfdb</display-name>
  <!-- 指定struts2的核心过滤器-->
  <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>
  <!-- 确定spring配置文件的位置 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <!-- spring监听器  加载xml配置文件  tomcat启动加载配置文件-->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <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

3.在src下创建config文件夹,在文件夹里添加applicationContext.xml,c3p0-db.properties数据配置文件,log4j.properties日志文件 ,struts.xml struts2的配置文件

1.applicationContext.xml

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

	<!--配置c3p0连接池 用以连接数据库 -->
	<context:property-placeholder location="classpath:c3p0-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.user}"></property>
		<property name="password" value="${jdbc.password}"></property>

		<!--定义在从数据库获取新连接失败后重复尝试的次数。默认值: 30 ;小于等于0表示无限次 -->
		<property name="acquireRetryAttempts" value="0" />
		<!--重新尝试的时间间隔,默认为:1000毫秒 -->
		<property name="acquireRetryDelay" value="1000" />
		<!--定义所有连接测试都执行的测试语句。在使用连接测试的情况下这个一显著提高测试速度。测试的表必须在初始数据源的时候就存在。Default: 
			null -->
		<property name="preferredTestQuery" value="select 1" />
		<!--每1800秒检查所有连接池中的空闲连接。Default: 0 -->
		<property name="idleConnectionTestPeriod" value="300" />
		<!-- 获取连接时测试有效性,每次都验证连接是否可用 -->
		<property name="testConnectionOnCheckout" value="false" />
	
	</bean>

   <!-- spring整合hibernate  获得sessionFactory  LocalSessionFactoryBean 
    1.数据源   2.hibernateProperties  hibernate其他配置文件-->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
				<prop key="hibernate.show_sql">true</prop>						<!-- 控制sql语句是否在控制台输出 -->
				<prop key="hibernate.format_sql">true</prop>					<!-- 格式化控制台输出的sql语句 -->
				<prop key="hibernate.hbm2ddl.auto">update</prop>				<!-- 如果没有表,自动创建 -->
				<prop key="javax.persistence.validation.mode">none</prop>
				<prop key="hibernate.current_session_context_class">thread</prop>
				<prop key="hibernate.dialect">hbsi.yfzx.util.Oracle11gDialect</prop>
			</props>
		</property>




		<!-- 以上文件均可拷贝 -->
		<!--读取映射文件 -->
		<property name="mappingDirectoryLocations">
			<value>classpath:hbsi/yfzx/domain/</value>
		</property>

 		
	</bean>


	<!--配置Dao -->
	<!-- 
	<bean id="userDao" class="hbsi.yfzx.dao.Impl.UserDaoImpl">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	 -->
	<bean id="bjbDao" class="hbsi.yfzx.dao.Impl.BjbDaoImpl">
		<property name="sessionFactory" ref="sessionFactory"></property>
		<property name="pZdcsDao" ref="pZdcsDao"></property>
	</bean>
    <!--配置service-->
    <bean id="bjbService" class="hbsi.yfzx.service.Impl.BjbServiceImpl">
		<property name="bjbDao" ref="bjbDao"></property>
	</bean>
   <!--配置声明事务管理方式 -->

	<bean id="txManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	<!--配置回滚条件 -->
	<tx:advice id="txAdvice" transaction-manager="txManager">
		<tx:attributes>
			<tx:method name="save*" />
			<tx:method name="update*" />
			<tx:method name="delete*" />
			<tx:method name="find*" read-only="true" />
		</tx:attributes>
	</tx:advice>
	<!--配置哪个包里的需要回滚 -->
	<aop:config>
		<aop:advisor advice-ref="txAdvice"
			pointcut="execution(* hbsi.yfzx.service..*.*(..))" />
	</aop:config>

2.c3p0-db.properties

jdbc.driverClass=oracle.jdbc.driver.OracleDriver
jdbc.jdbcUrl=jdbc:oracle:thin:@xxx.xxx.x.x:1521:orcl
jdbc.user=system
jdbc.password=root

3.log4j.properties

log4j.rootLogger=INFO,CONSOLE,DayRollingFile

#console
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=INFO
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d - %c -%-4r [%t] %-5p %x - %m%n

# dayrollingfile
log4j.appender.DayRollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DayRollingFile.file=C:/blxLogs/log_
log4j.appender.DayRollingFile.DatePattern=yyyyMMdd'.log'
log4j.appender.DayRollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.DayRollingFile.layout.ConversionPattern=/n/n[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

 

4.struts.xml

<struts>

	<constant name="struts.i18n.encoding" value="UTF-8"></constant>
	<constant name="struts.devMode" value="false"></constant>
	<!--该属性设置浏览器是否缓存静态内容.当应用处于开发阶段时,我们希望每次请求都获得服务器的最新响应,则可设置该属性为false. -->
	<constant name="struts.serve.static.browserCache" value="false" />
	<!--对于某些Java EE服务器,不支持HttpServlet Request调用getParameterMap()方法,此时可以设置该属性值为true来解决该问题.该属性的默认值是false.对于WebLogic、Orion和OC4J服务器,通常应该设置该属性为true. -->
	<constant name="struts.dispatcher.parametersWorkaround" value="false" />
	<!--该属性设置当struts.xml文件改变后,系统是否自动重新加载该文件.该属性的默认值是false. -->
	<constant name="struts.configuration.xml.reload" value="true" />
	<!-- 上传文件使用 设置存放临时文件的文件夹 -->
	<constant name="struts.multipart.saveDir" value="/tmp"></constant>
 这里拦截器就不配置了,各位根据自己需要拦截内容 自行配置
 <!-- 这句话是将struts交给spring管理 -->  
    <constant name="struts.objectFactory" value="spring"></constant>  
<!---配置action--!>
<package name="site" namespace="/" extends="json-default">
<action name="siteBjbAction_*" class="hbsi.yfzx.action.BjbAction" method="{1}">
			<result name="data" type="json">
				<param name="callbackParameter">callback</param>
				<param name="noCache">true</param>
				<param name="root">dataMap</param>
			</result>
		</action>

</package>

温馨提示:文档仅供参考,若有不足,请多多指教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值