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

作者:风一样的码农 时间:2024-01-23 12:27:19 

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

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

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

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

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

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();
}
}
}

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

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

@author   风一样的码农

来源:http://www.cnblogs.com/chenpi/p/5155252.html

标签:spring,mvc,spring,hibernate,mysql
0
投稿

猜你喜欢

  • 使用Django xadmin 实现修改时间选择器为不可输入状态

    2023-11-19 12:12:06
  • 详解Python编程中time模块的使用

    2023-08-29 16:57:08
  • window.showModalDialog()返回值的学习心得总结

    2024-05-09 10:35:39
  • ASP.Net Core MVC基础系列之中间件

    2024-05-09 09:04:47
  • Zend Framework教程之Zend_Config_Ini用法分析

    2024-05-13 09:23:47
  • 博客使用标签是迟早的事

    2008-10-31 12:55:00
  • mysql分表分库的应用场景和设计方式

    2024-01-22 05:49:39
  • pycharm激活码2020最新分享适用pycharm2020最新版亲测可用

    2021-09-21 11:11:33
  • Springboot集成Camunda使用Mysql介绍

    2024-01-22 12:41:36
  • vscode中配置jupyter的详细步骤(彻底解决Failed to start the Kernel问题)

    2022-06-21 06:56:26
  • asp中去除html中style,javascript,css代码

    2011-02-16 11:18:00
  • Python 4种实现定时任务的方案

    2021-12-12 18:08:27
  • 如何使用FSO搜索硬盘文件

    2007-09-27 12:59:00
  • php引用返回与取消引用的详解

    2023-11-20 02:50:07
  • BootStrap modal实现拖拽功能

    2024-04-18 09:43:48
  • python中的集合及集合常用的使用方法

    2023-05-04 11:14:11
  • python用装饰器自动注册Tornado路由详解

    2021-07-16 07:53:37
  • 跟老齐学Python之坑爹的字符编码

    2021-07-13 06:07:38
  • Python进行数据提取的方法总结

    2022-06-23 18:02:45
  • SQL Server DBA维护常用语句

    2024-01-22 01:47:00
  • asp之家 网络编程 m.aspxhome.com