spring mvc4.1.6 spring4.1.6 hibernate4.3.11 mysql5.5.25开发环境搭建图文教程

一、准备工作
开始之前,先参考上一篇: 
struts2.3.24 + spring4.1.6 + hibernate4.3.11 + mysql5.5.25 开发环境搭建及相关说明
思路都是一样的,只不过把struts2替换成了spring mvc

二、不同的地方
工程目录及jar包:

action包改成controller;
 删除struts2 jar包,添加spring mvc包(已有的话,不需添加);

web.xml配置: 

跟之前不同的地方是把struts2的过滤器替换成了一个servlet,主要目的是路由url,交给spring mvc处理;

<?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>SSH</display-name>

 <context-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>classpath:applicationContext.xml</param-value>
 </context-param>
 <listener>
 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>

 <welcome-file-list>
 <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>

 <servlet>
 <servlet-name>springmvc</servlet-name>
 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 <init-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:springmvc-servlet.xml</param-value>
 </init-param>
 <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
 <servlet-name>springmvc</servlet-name>
 <url-pattern>*.do</url-pattern>
 </servlet-mapping>

</web-app>

applicationContext.xml配置:
 不同的地方主要是配置自动扫描的时候,要排除@Controller组件,这些bean是由spring mvc 去生成的;
 其它配置跟前一篇一样;

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:p="http://www.springframework.org/schema/p"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:aop="http://www.springframework.org/schema/aop"
 xmlns:jdbc="http://www.springframework.org/schema/jdbc"
 xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.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-4.1.xsd
  http://www.springframework.org/schema/jdbc
  http://www.springframework.org/schema/jdbc/spring-jdbc-4.1.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context-4.1.xsd">

 <!-- scans the classpath for annotated components (including @Repostory
 and @Service that will be auto-registered as Spring beans -->
 <context:component-scan base-package="ssh" >
 <!--排除@Controller组件,该组件由SpringMVC配置文件扫描 -->
 <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
 </context:component-scan>

 <!--配数据源 -->
 <bean name="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/demo" />
 <property name="user" value="root" />
 <property name="password" value="root" />

 <property name="acquireIncrement" value="1"></property>
 <property name="initialPoolSize" value="80"></property>
 <property name="maxIdleTime" value="60"></property>
 <property name="maxPoolSize" value="80"></property>
 <property name="minPoolSize" value="50"></property>
 <property name="acquireRetryDelay" value="1000"></property>
 <property name="acquireRetryAttempts" value="60"></property>
 <property name="breakAfterAcquireFailure" value="false"></property>
 <!-- 如出现Too many connections, 注意修改mysql的配置文件my.ini,增大最多连接数配置项,(查看当前连接命令:show processlist) -->
 </bean>

 <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
 <property name="dataSource" ref="dataSource" />

 <property name="hibernateProperties">
  <props>
  <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
  <prop key="hibernate.show_sql">true</prop>
  <prop key="hibernate.hbm2ddl.auto">update</prop>
  <prop key="connection.pool_size">10</prop>
  <prop key="current_session_context_class">thread</prop>
  <prop key="hibernate.cache.use_second_level_cache">true</prop>
  <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>
  <prop key="hibernate.cache.use_query_cache">true</prop>
  <prop key="hibernate.cache.provider_configuration_file_resource_path">ehcache.xml</prop>
  </props>
 </property>
 <property name="mappingLocations">
  <list>
  <value>classpath:ssh/model/User.hbm.xml</value>
  </list>
 </property>
 <!--
 <property name="annotatedClasses">
  <list>
  <value>ssh.model.User</value>
  </list>
 </property>
 -->
 </bean>

 <!-- 配置事务管理器 -->
 <bean id="transactionManager"
 class="org.springframework.orm.hibernate4.HibernateTransactionManager">
 <property name="sessionFactory" ref="sessionFactory" />
 </bean>

 <!-- 事务的传播特性 -->
 <tx:advice id="txadvice" transaction-manager="transactionManager">
 <tx:attributes>
  <tx:method name="add*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
  <tx:method name="delete*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
  <tx:method name="update*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
  <tx:method name="save*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
 </tx:attributes>
 </tx:advice>

 <aop:config>
 <aop:pointcut id="pcMethod" expression="execution(* ssh.service..*.*(..))" />
 <aop:advisor pointcut-ref="pcMethod" advice-ref="txadvice" />
 </aop:config>

 <!-- 自定义aop处理 测试 -->
 <bean id="aopTest" class="ssh.aop.AopTest"></bean>
 <bean id="myAop" class="ssh.aop.MyAop"></bean>
 <aop:config proxy-target-class="true">
 <aop:aspect ref="myAop">
  <aop:pointcut id="pcMethodTest" expression="execution(* ssh.aop.AopTest.test*(..))"/>
  <aop:before pointcut-ref="pcMethodTest" method="before"/>
  <aop:after pointcut-ref="pcMethodTest" method="after"/>
 </aop:aspect>
 </aop:config>

 </beans>

springmvc-servlet.xml配置:
 配置自动扫描ssh.controller包下的@Controller,这里要恢复applicationContext.xml中配置的exclude-filter;
 配置视图解析器,有很多解析器,这里以InternalResourceViewResolver为例;

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

 <!-- 启动自动扫描该包下所有的Bean(例如@Controller) -->
 <context:component-scan base-package="ssh.controller" >
 <!-- 恢复父容器设置的 exclude-filter,注意包扫描路径ssh.controller-->
 <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
 </context:component-scan>

 <!-- 定义视图解析器 -->
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
 <property name="prefix">
  <value>/WEB-INF/jsp/</value>
 </property>
 <property name="suffix">
  <value>.jsp</value>
 </property>
 </bean>

</beans>

编写controller:
 由于使用spring mvc替换struts2,也就没有了action包了,删除,并新建controller包,在包下新建UserController类;
 @RequestMapping:映射url;
 @ResponseBody:内容直接作为body返回;

 UserController.java 

package ssh.controller;

import java.io.PrintWriter;
import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import ssh.aop.AopTest;
import ssh.model.User;
import ssh.service.UserService;

import com.google.gson.Gson;

@Controller
@RequestMapping("/user")
public class UserController {
 Logger logger = Logger.getLogger(UserController.class);
 @Resource
 private UserService userService;
 @Resource
 private AopTest aopTest;

 @RequestMapping(value="/addUser")
 @ResponseBody
 public void addUser(HttpServletRequest request, HttpServletResponse response){
 PrintWriter out = null;
 try{
  response.setContentType("text/html;charset=UTF-8");
  String account = request.getParameter("account");
  String name = request.getParameter("name");
  String address = request.getParameter("address");
  User user = new User();
  user.setAccount(account);
  user.setAddress(address);
  user.setName(name);
  userService.add(user);
  out = response.getWriter();
  out.write(new Gson().toJson("success"));
 }catch(Exception e){
  e.printStackTrace();
  logger.error(e.getMessage());
  if(out != null)
  out.write(new Gson().toJson("fail"));
 }finally{
  out.flush();
  out.close();
 }

 }

 @RequestMapping(value="/queryUser")
 @ResponseBody
 public void queryAllUser(HttpServletRequest request, HttpServletResponse response){
 PrintWriter out = null;

 aopTest.test1();
 aopTest.test2();

 try {

  response.setContentType("text/html;charset=UTF-8");

  Gson gson = new Gson();
  List<User> userList= userService.queryAllUser();
  String gsonStr = gson.toJson(userList);

  out = response.getWriter();
  out.write(gsonStr);
 } catch (Exception e) {
  e.printStackTrace();
  logger.error(e.getMessage());
  if(out != null)
  out.write(new Gson().toJson("fail"));
 }finally{
  out.flush();
  out.close();
 }
 }
}

三、运行程序
运行程序,添加用户、查询用户功能正常;
另外二级缓存也正常工作,第二次查询已经没有操作数据库了;

@author   风一样的码农

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • SSH框架网上商城项目第1战之整合Struts2、Hibernate4.3和Spring4.2

    本文开始做一个网上商城的项目,首先从搭建环境开始,一步步整合S2SH.这篇博文主要总结一下如何整合Struts2.Hibernate4.3和Spring4.2. 整合三大框架得先从搭建各部分环境开始,也就是说首先得把Spring,Hibernate和Struts2的环境搭建好,确保它们没有问题了,再做整合.这篇博文遵从的顺序是:先搭建Spring环境-->然后搭建Hibernate环境--> 整合Spring和Hibernate --> 搭建Struts2环境 --> 整合Spri

  • MyBatis学习教程(八)-Mybatis3.x与Spring4.x整合图文详解

    一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: 复制代码 代码如下: mvn archetype:create -DgroupId=me.gacl -DartifactId=spring4-mybatis3 -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false 如下图所示: 创建好的项目如下: 编辑pom.xml文件 <project xmlns="http://maven.apac

  • java中实现兼容ie6 7 8 9的spring4+websocket

    效果 不支持websocket的浏览器,用flash模拟websocket.当然,也可以用flash socket直接与服务端socket连接. 事实上,websocket协议比较简单,用actionscript模拟也比较简单,这个在本屌的另外一篇文章让ie6 7 8 9支持html5 websocket简单说了下. 另外,spring为sockjs 提供api,只需简单配置下,就可以兼容低版本浏览器,原理是用js模拟websocket object.具体的本屌还没有去看. 几点说明: 1.使用

  • 配置Spring4.0注解Cache+Redis缓存的用法

    前言: 目前公司项目在上一个技术架构的处理,已经搭建好了Redis,但redis只用在了做session的管理,然而 后台的对象缓存没有用上 1. redis 和 ehcache的区别: 简单了解了下,个人觉得 从部署上而言,redis更适合分布式部署,ehcache是在每台应用服务器上开辟一块内存做缓存,集群时还得考虑缓存的情况, redis就不需要考虑缓存了.单独部署在一台服务器中(也可以是在某一台应用服务器中) 2. 项目配置(spring mvc+maven+mybaits+redis)

  • struts2.3.24+spring4.1.6+hibernate4.3.11+mysql5.5.25开发环境搭建图文教程

    struts2.3.24 + spring4.1.6 + hibernate4.3.11+ mysql5.5.25开发环境搭建及相关说明. 一.目标 1.搭建传统的ssh开发环境,并成功运行(插入.查询) 2.了解c3p0连接池相关配置 3.了解验证hibernate的二级缓存,并验证 4.了解spring事物配置,并验证 5.了解spring的IOC(依赖注入),将struts2的action对象(bean)交给spring管理,自定义bean等...并验证 6.了解spring aop(面向

  • spring4新特性之web开发增强

    从Spring4开始,Spring以Servlet3为进行开发,如果用Spring MVC 测试框架的话需要指定Servlet3兼容的jar包(因为其Mock的对象都是基于Servlet3的).另外为了方便Rest开发,通过新的@RestController指定在控制器上,这样就不需要在每个@RequestMapping方法上加 @ResponseBody了.而且添加了一个AsyncRestTemplate ,支持REST客户端的异步无阻塞支持. 1.@RestController Java代码

  • Spring4整合Hibernate5详细步骤

    Spring与Hiberante整合 通过hibernate的学习,我们知道,hibernate主要在hibernate.cfg.xml配置文件中 接下来我们看一下hibernate的一个配置文件 hibernate配置文件 hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibern

  • spring mvc4.1.6 spring4.1.6 hibernate4.3.11 mysql5.5.25开发环境搭建图文教程

    一.准备工作 开始之前,先参考上一篇:  struts2.3.24 + spring4.1.6 + hibernate4.3.11 + mysql5.5.25 开发环境搭建及相关说明 思路都是一样的,只不过把struts2替换成了spring mvc 二.不同的地方 工程目录及jar包: action包改成controller:  删除struts2 jar包,添加spring mvc包(已有的话,不需添加): web.xml配置:  跟之前不同的地方是把struts2的过滤器替换成了一个ser

  • 浅谈SpringMVC+Spring3+Hibernate4开发环境搭建

    早期的项目比较简单,多是用JSP .Servlet + JDBC 直接搞定,后来使用 Struts1(Struts2)+Spring+Hibernate, 严格按照分层概念驱动项目开发,这次又使用 Spring MVC取代Struts来进行开发. MVC已经是现代Web开发中的一个很重要的部分,下面介绍一下SpringMVC+Spring3+Hibernate4的开发环境搭建 先大致看一下项目结构: 具体的代码不再演示,主要是走了一个很平常的路线,mvc-servcie-dao-hibernat

  • Java Spring开发环境搭建及简单入门示例教程

    本文实例讲述了Java Spring开发环境搭建及简单入门示例.分享给大家供大家参考,具体如下: 前言 虽然之前用过Spring,但是今天试着去搭建依然遇到了困难,而且上网找教程,很多写的是在web里使用Spring MVC的示例,官方文档里的getting start一开始就讲原理去了(可能打开的方法不对).没办法,好不容易实验成功了,记下来免得自己以后麻烦. 添加依赖包 进入spring官网,切换到projects下点击 spring framework.官网上写的是以maven依赖的形式写

  • spring cloud 阿波罗 apollo 本地开发环境搭建过程

    开源配置中心 - Apollo Apollo(阿波罗)是携程框架部门研发的配置管理平台,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性.服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器. 检出代码 apollo github 可以fork下然后本地使用idea打开 数据库脚本 执行以下脚本创建ApolloConifgDB.ApolloPortalDB apoll

  • Spring学习之开发环境搭建的详细步骤

    最近搞定了项目,工作终于松了下来,顺便有时间学习Spring框架,记录于此,不足之处,希望大家不吝赐教 Spring的介绍 Spring是一个轻量级的Java框架,由于Spring基本提供了全套的开发服务,所以Spring基本上可以应用在Java开发中的很多方面,从本周开始学习Spring框架,顺便将自己的学习笔记整理出来,以巩固自己的学习,增进自己的表达能力,加深对Spring的了解 Spring体系结构 Spring的体系结构可以从官方文档中得知,具体如下所示: Spring体系结构 从上面

  • macOS下Spring Boot开发环境搭建教程

    macOS搭建Spring Boot开发环境,具体内容如下 软硬件环境 macOS Sierra java 1.8.0_65 maven 3.5.0 idea 2017.1.5 前言 最近接触了一点java web相关的知识,了解一下最近比较火的开发框架Spring Boot,站在一个从未涉足过java web和spring的开发者角度来讲,spring boot确实是一个非常不错的框架,配置简单,容易入门,对于想入行java web的童鞋,是一个很好的切入点. maven安装 这里选择mave

  • 详解spring mvc4使用及json 日期转换解决方案

    又到搭新开发环境的时候,总是不免去网上搜下目前最新的框架.spring是web开发必用的框架,于是乎下载了目前最新的spring4.0.3,同时越来越不想用struts2,想试试spring mvc,也将spring-webmvc4.0.3下了下来,投入两天时间学习后,发现还是挺优雅的,特别是从3.0后,spring mvc使用注解方式配制,以及对rest风格的支持,真是完美致极. 下面将这两天研究到的问题做个总结,供参考. 1.request对象的获取 方式1:在controller方法上加入

  • Spring MVC4.1服务器端推送实现过程解析

    这篇文章主要介绍了Spring MVC4.1服务器端推送实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 服务器端推送 SSE(server send event)是一种服务器端向浏览器推送消息的技术,而不是我们常规的浏览器像server请求然后响应; 当我们需要使用server向浏览器主动推送数据的时候,请考虑使用该项技术,而不是考虑具有双向通讯功能的websocket; 以前我们用ajax轮询server也能实现,服务器负担大;

  • Spring整合MyBatis(Maven+MySQL)图文教程详解

    一. 使用Maven创建一个Web项目 为了完成Spring4.x与MyBatis3.X的整合更加顺利,先回顾在Maven环境下创建Web项目并使用MyBatis3.X,第一.二点内容多数是回顾过去的内容 . 1.2.点击"File"->"New"->"Other"->输入"Maven",新建一个"Maven Project",如下图所示: 1.2.请勾选"Create a si

随机推荐