`
pengjj2
  • 浏览: 138465 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

springMVC+spring+hibernate整合(1)

阅读更多

以前一直用ssh2做东西,最近一阵子忽然想学习一下springMVC。据说设计理念也很不错的。我是个实用主义者,啥也不说,看看书,立马开始动手。

1、web.xml

     这个是大家一开始都需要配置的

     

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    
这个是我的初始化类,用来自动建立数据库的,可以不需要
   <servlet> <servlet-name>initialServlet</servlet-name> <servlet-class>com.news.servlet.InitialServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
//spring配置文件加载
  <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:/applicationContext.xml,classpath:/applicationContext-*.xml </param-value> </context-param>
//spring监听的配置
  <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>
//spring框架自带的字符集过滤(比自己写应该能省不少事)
  <filter> <filter-name>Set Character Encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter>
//springMVC控制器的配置,初始化值中有配置文件路径
  <servlet> <servlet-name>SpringController</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:/*-servlet.xml</param-value> </init-param> </servlet> <filter-mapping> <filter-name>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet-mapping> <servlet-name>SpringController</servlet-name> <url-pattern>*.htm</url-pattern> </servlet-mapping> <jsp-config> <taglib> <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri> <taglib-location>/WEB-INF/tld/c.tld</taglib-location> </taglib> </jsp-config> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>

 ok,web.xml完成了,我们来接着配置spring的一系列配置文件。

 2、applicationContext系列配置,我个人的风格喜欢将不同作用的配置分门别类的放到不同的配置文件中

       (1)applicationContext.xml,这个文件我仅做了一项配置,用于加载properties文件

      

<?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: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-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyOverrideConfigurer">
	<property name="ignoreInvalidKeys"  value="true"></property>
//如果没有匹配的属性,我们忽略它
 <property name="locations"> <list> <value> /WEB-INF/customerConfigs/applicationContext-*.properties </value> </list> </property> </bean>
//使用properties的方式来完成一些配置是为了方便,采用属性重写的方式来使用properties文件,如果properties文件中存在对应的属性,则采用properties文件中的值,否则,仍然使用xml中的值
  </beans>

    properties文件

   

dataSource.driverClass=com.mysql.jdbc.Driver
dataSource.jdbcUrl=jdbc:mysql://localhost:3306/filesystem
dataSource.user=root
dataSource.password=root
//前缀一定要对应bean 的 id 属性,是依靠ID来定位的
 jdbcUrlBase=jdbc:mysql://localhost:3306/?
这个就是不存在的属性了,我把它当一个值来用
 

    (2)和hibernate的整合

<?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: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-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
	<property name="driverClass" value="com.mysql.jdbc.Driver" />
	<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/news"/>
	<property name="user" value="root"/>
	<property name="password" value="root"/>
	<property name="minPoolSize" value="5"/>
	<property name="maxPoolSize" value="60"/>
	<property name="initialPoolSize" value="3"/>
	<property name="maxIdleTime" value="60"/>
	<property name="acquireIncrement" value="10"/>
	<property name="idleConnectionTestPeriod" value="60"/>
	<property name="acquireRetryAttempts" value="30"/>
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
	<property name="dataSource" ref="dataSource" />
	<property name="hibernateProperties">
		<props>
			<prop key="hibernate.dialect">
				org.hibernate.dialect.MySQLInnoDBDialect
			</prop>
			<prop key="hibernate.show_sql">true</prop>
			<prop key="hibernate.jdbc.batch_size">30</prop>
			<prop key="hibernate.default_batch_fetch_size">30</prop>
			</props>
	</property>
	<property name="packagesToScan" value="com.news.po"></property>
</bean>
//使用注解方式来配置hibernate的,hbm文件实在有点多,不大方便,因为是初步配置,并没有加入2级缓存等一些功能,以后再补上
 <bean id="transactionManagerDAO" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> </beans>

    3、事务的代理,因为我个人觉得事务的管理是一个比较独立的东西,是基于AOP的,所以把一些AOP的配置放一块了

     

<?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: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-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
	<bean id="logInterceptor" class="com.news.advice.LogInterceptor">
	</bean>
	
	<bean id="exceptionInterceptor" class="com.news.advice.ExceptionInterceptor"></bean>
                
//上面两个是做日志处理的,把日志分成error和info,分别记录,方便查看,下次再介绍
//下面就是事务的声明式管理了,事务的管理还是应该配置在service层的,很多初步教材都喜欢把这个写在DAO层,日志的处理究竟应该放在控制层还是service层,还在考虑中,暂时放在serivce层中了
<bean id="transactionInterceporDAO" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager" ref="transactionManagerDAO"></property> <property name="transactionAttributes"> <props> <prop key="get*,find*,check*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <bean id="daoAutoProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="interceptorNames"> <list> <value>logInterceptor</value> <value>exceptionInterceptor</value> <value>transactionInterceporDAO</value> </list> </property> <property name="beanNames"> <list> <value>*Service</value> </list> </property> </bean> </beans>

    4、以下是spring对DAO和serivce的管理,这个比较简单,随便贴个代码

   

<?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: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-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

<bean id="baseDAO" class="com.news.dao.impl.BaseDAOImpl" abstract="true">
	<property name="hibTemplate" ref="hibernateTemplate"></property>
</bean>

//如果想把抽象类也交给spring管理,别忘了加上abstract属性
 <bean id="userDAO" class="com.news.dao.impl.UserDAOImpl"> <property name="hibTemplate" ref="hibernateTemplate"></property> </bean> </beans>

   

<?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: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-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
	<bean id="userService" class="com.news.service.impl.UserServiceImpl">
		<property name="userDAO" ref="userDAO"></property>
		<property name="roleDAO" ref="roleDAO"></property>
	</bean>

</beans>

 

   5、加入springMVC的配置,最后一步

  

<?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: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-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd" default-autowire="byName">
	
//Ajax上传用,下次介绍
 <bean id="ajaxViewResolver" class="com.news.util.AjaxViewResolver"> <property name="ajaxPrefix" value="ajax_"></property> <property name="ajaxView"> <bean class="com.news.util.AjaxView"></bean> </property> </bean> <bean id="multipartResolver" class="com.news.util.AjaxFileUploadResolver"> <property name="maxUploadSize" value="1000000000"/> </bean>
//springMVC的视图解析,可以指定前缀和后缀
  <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/" /> <property name="suffix" value=".jsp"></property> </bean>
//spring的异常处理,提供对用户比较友好的错误界面,可以指定不同的异常类型
  <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="java.lang.Exception"> jsp/errors/exception </prop> </props> </property> </bean>
//这种URL-mapping方式是spring的默认匹配方式,很直观
  <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"> <property name="order" value="2"></property> </bean>
//springmvc中最常用的url-mapping方式,因为比较习惯通配符的做法,因此依照本人习惯,还是通配符,将匹配顺序置为第一。同时还可以给springMVC指定方法的解析模式,一种是采用指定参数的形式,另一种是根据url直接指定方法(所谓的属性匹配),我不用,写出来参考一下
  <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="order" value="1"/> <property name="mappings"> <props> <prop key="index.htm">indexInit</prop> <prop key="*SysAdmin.htm">sysAdminManage</prop> <prop key="login*.htm">login</prop> </props> </property> </bean> <bean id="methodResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> <property name="paramName" value="method"></property> </bean> <bean id="propetyResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver"> <property name="mappings"> <props> <prop key="/jcrsSearch.htm">jcrsSearch</prop> <prop key="/jcrsSearch2.htm">jcrsSearch2</prop> </props> </property> </bean>
//下面就是控制器的配置了,上面的映射分别将路径对应到控制器中,由控制器来处理请求,在下面我也写了方法名解析的方式的使用,如果想使用这种方式的话,可以参考。因为我觉得一个请求就对应一个类在实际使用中其实很少用,所以,本着实用的想法,将一类请求对应相同的类,将contral全部继承MultiActionController
  <bean id="sysAdminManage" class="com.news.controller.SysAdminManageController"> <property name="userService" ref="userService"></property> </bean> <bean id="jcrs" class="com.news.controller.JcrTestTwoController"> <!-- <property name="methodNameResolver" ref="propetyResolver"></property> --> </bean> <bean id="indexInit" class="com.news.controller.MainPageController"> </bean> <bean id="upload" class="com.news.controller.JcrTestController"> <property name="commandClass" value="com.news.po.UpFile"></property> <property name="formView" value="jsp/jcrTest"></property> <property name="successView" value="jsp/jcrList"></property> <!-- <property name="jcrService" ref="jcrService"></property> --> </bean> <!-- login bean --> <bean id="login" class="com.news.controller.LoginController"> <property name="userService" ref="userService"></property> </bean> <!-- web control <bean id="indexControl" class="com.pjj.news.controller.MainPageController"> </bean>--> </beans>

 6、这样的话可以在你的index.jsp中写下

      <jsp:forward page="checkSysAdmin.htm"></jsp:forward>

     那么springmvc的映射将会将路径映射到你的控制器中,进行请求处理了

暂时就写这么多,如果大家有好的学习经验,可以多多交流啊

    

分享到:
评论

相关推荐

    springmvc+spring+hibernate

    通过上述步骤,我们完成了Spring MVC、Spring、Hibernate的整合。这样的架构具有良好的解耦性、可扩展性和维护性,适用于大型企业级应用的开发。在实际项目中,可能还需要考虑其他因素,如安全性(Spring Security)...

    Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA

    在现代Java Web开发中,"Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA"是一个常见的架构组合,被广泛应用于构建企业级应用程序。这个组合通常被称为"SSM",其中"M"代表Maven,"S"代表Spring,包括Spring核心...

    SpringMVC+Spring3+Hibernate4

    SpringMVC、Spring3和Hibernate4的整合,使得开发者可以在一个统一的框架下完成整个Web应用的开发。Spring3通过AOP来管理事务,确保数据的一致性。SpringMVC中的Controller可以利用Spring3的DI来注入需要的服务,如...

    SpringMVC+Spring+Hibernate+Oracle 实现图书管理(CRUD)

    在这个案例中,"SpringMVC+Spring+Hibernate+Oracle 实现图书管理(CRUD)"是一个使用了四大主流Java技术栈的项目,分别是SpringMVC作为前端控制器、Spring作为应用层框架、Hibernate作为持久层框架,以及Oracle作为...

    maven(springmvc+spring+hibernate)

    SSH整合指的是Spring、Struts和Hibernate这三大Java开源框架的集成应用。这三大框架分别负责控制层、视图层和持久层,它们的结合能够构建出功能强大的企业级Web应用程序。 Spring框架是整个SSH整合的核心,它提供了...

    springmvc+spring3+hibernate4整合

    1. 工具和版本选择:在搭建Spring+SpringMVC+JPA+Hibernate平台时,可以选择myeclipse8.6作为开发工具,并使用mysql5.1作为数据库。作者建议使用Spring2.5和Hibernate3.3版本来避免jar包冲突,相较于Spring2.5和...

    spring+springMVC+jpa+hibernate框架整合

    在IT领域,构建高效、可扩展的Web应用是至关重要的,而"spring+springMVC+jpa+hibernate框架整合"就是一个常见的解决方案。这个整合涉及到四个关键的技术栈:Spring框架、SpringMVC、JPA(Java Persistence API)...

    spring4+springmvc4+hibernate4 整合

    开发者可以通过这个项目学习如何将Spring、SpringMVC和Hibernate整合到实际的应用场景中。 总的来说,"spring4+springmvc4+hibernate4 整合"是一个深入学习和实践Java Web开发的重要主题。通过理解这三个框架的核心...

    SpringMVC+Spring+SpringDataJPA+Hibernate整合登录的效果

    这是整合SpringMVC+Spring+SpringDataJPA+Hibernate简单的实现登录的功能,用的是mysql数据库,这是一个web Project 如果你用的是JavaEE6那么你要注意bean-validator.jar和weld-osgi-bundle.jar与slf4j的jar包冲突。...

    springmvc+spring+hibernate环境

    在"springmvc+spring+hibernate环境"中,配置文件通常会包括Spring的配置文件(如applicationContext.xml)、Spring MVC的配置文件(如spring-mvc.xml)、Hibernate的配置文件(如hibernate.cfg.xml)以及缓存的配置...

    SpringMVC+Hibernate+Spring整合实例

    总的来说,"SpringMVC+Hibernate+Spring整合实例"提供了一个全面的学习平台,帮助开发者深入理解Java企业级应用的开发模式和最佳实践。通过这个实例,你可以提升自己的技能,为未来的项目开发打下坚实的基础。

    ssh框架整合step by step (springMVC + spring 5.0.4 + hibernate 5.0.12)

    ssh框架搭建step by step (springMVC + spring 5.0.4 + hibernate 5.0.12) 好久不弄web了, 周末心血来潮, 使用较新spirng/hibernate搭建一个ssh框架, 供有需要的同学参考/学习/使用. 使用eclipse开发, 搭建,分三步: ...

    idea工具创建的Spring+SpringMVC+Hibernate+maven项目

    标题中的"idea工具创建的Spring+SpringMVC+Hibernate+maven项目"指的是使用IntelliJ IDEA这个集成开发环境(IDE)构建的一个Java Web项目,该项目整合了四个关键的技术框架:Spring、SpringMVC、Hibernate以及Maven...

    SpringMVC+Hibernate+Spring+JSP整合实例

    "SpringMVC+Hibernate+Spring+JSP整合实例"是一个经典的后端技术组合,它涵盖了Java领域中多个核心框架的集成应用,旨在实现数据持久化、业务逻辑处理以及用户界面展示的无缝连接。下面我们将深入探讨这些技术及其...

    springMVC + spring + hibernate 整合的管理系统小案例

    下载后请修改数据库用户名和密码,即springAnnotation-hibernate.xml文件 案例系统支持功能如下: 注册功能,身份证,邮箱,手机号,姓名等校验,ajax异步获取资源 分页显示,编辑更新,多行删除等更功能,使用了MVC...

    spring+springMVC+Hibernate整合

    在IT行业中,Spring、SpringMVC和Hibernate是三个非常重要的框架,它们分别专注于不同领域的功能。Spring是一个全面的Java企业级应用开发框架,提供依赖注入(DI)和面向切面编程(AOP)等核心特性;SpringMVC是...

    springmvc+spring+hibernate集成jar包

    这个"springmvc+spring+hibernate集成jar包"包含了这三个框架集成所需的所有依赖,使得开发者能够快速搭建一个基于SSH(Spring、Spring MVC、Hibernate)的项目。 Spring 框架是Java企业级应用的核心,它提供了依赖...

    spring+springMVC+hibernate整合框架jar包

    spring + spring MVC + hibernate三大框架整合开发必要的jar包,完整版本。没有缺失。spring + spring MVC + hibernate三大框架整合开发必要的jar包,完整版本。没有缺失。

    SpringMVC+Spring+Hibernate(SSH)框架搭建之一

    在IT行业中,SSH框架是Java Web开发中常用的三大框架组合,包括SpringMVC、Spring和Hibernate。本教程将详细介绍如何一步步搭建一个基于SSH的Web应用环境,并提供了解决常见问题的说明文档。 首先,让我们从...

    Spring+SpringMvc+Maven+Hibernate整合

    在"Spring+SpringMvc+Maven+Hibernate整合"中,Maven通过其配置文件pom.xml来管理所有依赖库,包括Spring、SpringMVC和Hibernate,确保版本兼容,避免“类路径地狱”。 Hibernate是一个强大的对象关系映射(ORM)...

Global site tag (gtag.js) - Google Analytics