曾经使用过Spring和Spring mvc 但是之后多使用框架开发,渐渐淡忘。为拾起来特写此博文,其中参考了很多文章和例子,也报了很多错误幸亏有互联网让我们能够找到适合自己的答案。(PS:网上很多发布的都没有经过测试,导致各种问题),不多说来来来我们坐下谈谈Spring mvc

首先我使用的是使用Maven创建的web项目,具体做法“右键--选中Maven Project” 然后创建工程。详情不懂的请参考我的另一篇文章使用Maven创建web项目

创建成功共我们的目录结构总体是这样的

1.第一步 pom.xml

既然要使用Spring 和 Spring mvc 必须引用相关的JAR文件 (ps:最下面的build几点可以忽略我之所以贴上是保证完整性)

<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>com.flower.dujiaohao</groupId><artifactId>dujiaohao</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>dujiaohao</name><dependencies><!-- spring mvc 相关配置 --><dependency><groupId>org.springframework</groupId>  <artifactId>spring-tx</artifactId>  <version>4.3.3.RELEASE</version>  </dependency><dependency><groupId>org.springframework</groupId>  <artifactId>spring-oxm</artifactId>  <version>4.3.3.RELEASE</version>  </dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>4.3.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.3.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.3.RELEASE</version></dependency><dependency>  <groupId>org.springframework</groupId>  <artifactId>spring-context-support</artifactId>  <version>4.3.3.RELEASE</version>  </dependency> <dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>4.3.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>4.3.3.RELEASE</version></dependency><dependency>  <groupId>org.springframework</groupId>  <artifactId>spring-jdbc</artifactId>  <version>4.3.3.RELEASE</version>  </dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.3.3.RELEASE</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><scope>provided</scope><version>3.0.1</version></dependency><!-- mybatis配置 --> <dependency>  <groupId>org.mybatis</groupId>  <artifactId>mybatis</artifactId>  <version>3.2.6</version>  </dependency>  <dependency>  <groupId>org.mybatis</groupId>  <artifactId>mybatis-spring</artifactId>  <version>1.2.2</version>  </dependency>  <dependency><groupId>javax.annotation</groupId><artifactId>javax.annotation-api</artifactId><version>1.2</version></dependency><!-- 导入Mysql数据库链接jar包 -->  <dependency>  <groupId>mysql</groupId>  <artifactId>mysql-connector-java</artifactId>  <version>5.1.30</version>  </dependency>  <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->  <dependency>  <groupId>commons-dbcp</groupId>  <artifactId>commons-dbcp</artifactId>  <version>1.2.2</version>  </dependency> <dependency>  <groupId>log4j</groupId>  <artifactId>log4j</artifactId>  <version>1.2.17</version>  </dependency> <!-- 映入JSON -->  <dependency>  <groupId>com.fasterxml.jackson.core</groupId>  <artifactId>jackson-core</artifactId>  <version>2.1.0</version>  </dependency>  <dependency>  <groupId>com.fasterxml.jackson.core</groupId>  <artifactId>jackson-databind</artifactId>  <version>2.1.0</version>  </dependency>  <dependency>  <groupId>com.fasterxml.jackson.core</groupId>  <artifactId>jackson-annotations</artifactId>  <version>2.1.0</version>  </dependency>  </dependencies><build><plugins><!-- 加上这个配置就会规避 pom.xml的war处出现failOnMissingWebXml的错误,且web工程不必使用web.xml --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.1.1</version><configuration><!-- 这段配置为指定项目中web.xml的位置,但我使用了failOnMissingWebXml配置故注释掉此段<warSourceDirectory>  ${basedir}/src/main/webapp  </warSourceDirectory>  <webXml>${basedir}/src/main/webapp/WEB-INF/web.xml</webXml>  --><failOnMissingWebXml>false</failOnMissingWebXml></configuration></plugin></plugins></build>
</project>

2.第二步 配置web.xml。现在有两种配置方法第一种为使用配置文件,另一种使用0配置方式,也就是把配置文件写到代码中进行管理。我们这次就是用最广泛使用的第一种方式进行配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance  http://www.springmodules.org/schema/cache/springmodules-cache.xsd http://www.springmodules.org/schema/cache/springmodules-ehcache.xsd"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_2_5.xsd"id="WebApp_ID" version="2.5"><!-- Spring和mybatis的配置文件 -->  <context-param>  <param-name>contextConfigLocation</param-name>  <param-value>classpath:spring-mybatis.xml</param-value>  </context-param>  <!--  编码过滤器  --> <filter>  <filter-name>encodingFilter</filter-name>  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  <async-supported>true</async-supported><init-param>  <param-name>encoding</param-name>  <param-value>UTF-8</param-value>  </init-param>  </filter>  <filter-mapping>  <filter-name>encodingFilter</filter-name>  <url-pattern>/*</url-pattern>  </filter-mapping>  <!--Spring监听器  --> <listener>  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener>  <!--防止Spring内存溢出监听器  --><listener>  <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  </listener>  <!-- 配置DispatchcerServlet --><servlet><servlet-name>springDispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 配置Spring mvc下的配置文件的位置和名称 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springconf/springmvc-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springDispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.css</url-pattern></servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.gif</url-pattern></servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.jpg</url-pattern></servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.js</url-pattern></servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.html</url-pattern></servlet-mapping><welcome-file-list><welcome-file>/views/index.html</welcome-file></welcome-file-list>
</web-app>

配置的Servlet-mapping可以使我们访问.html文件不必非是.jsp

第三步  配置springmvc-servlet.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:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"><!-- 配置自动扫描的包 --><context:component-scan base-package="com.flower.dujiaohao.controllers"></context:component-scan><!-- 默认的注解映射的支持 --><mvc:annotation-driven /><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"><property name="messageConverters"><list ><ref bean="mappingJacksonHttpMessageConverter" /></list></property></bean><!--避免IE执行AJAX时,返回JSON出现下载文件 -->  <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value></list></property></bean> <!-- 配置视图解析器 如何把handler 方法返回值解析为实际的物理视图 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name = "prefix" value="/views/"></property><property name = "suffix" value = ".html"></property></bean>
</beans>

第四步 配置MyBatis和Spring结合的配置文件

<?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:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"><!-- 自动扫描 -->  <context:component-scan base-package="com.flower.dujiaohao" /> <!-- 引入配置文件 -->  <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  <property name="location" value="classpath:jdbc.properties" />  </bean>  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  <property name="driverClassName" value="${driver}" />  <property name="url" value="${url}" />  <property name="username" value="${username}" />  <property name="password" value="${password}" />  <!-- 初始化连接大小 -->  <property name="initialSize" value="${initialSize}"></property>  <!-- 连接池最大数量 -->  <property name="maxActive" value="${maxActive}"></property>  <!-- 连接池最大空闲 -->  <property name="maxIdle" value="${maxIdle}"></property>  <!-- 连接池最小空闲 -->  <property name="minIdle" value="${minIdle}"></property>  <!-- 获取连接最大等待时间 -->  <property name="maxWait" value="${maxWait}"></property>  </bean>  <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  <property name="dataSource" ref="dataSource" />  <!-- 自动扫描mapping.xml文件 -->  <property name="mapperLocations" value="classpath:com/flower/dujiaohao/mapping/*.xml"></property>  </bean>  <!-- DAO接口所在包名,Spring会自动查找其下的类 -->  <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  <property name="basePackage" value="com.flower.dujiaohao.dao" />  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>  </bean>  <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  <property name="dataSource" ref="dataSource" />  </bean>
</beans>

第五步 配置我们的log4j和jdbc.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://1.1.1.1:3306/test
username=123
password=456
#\u5B9A\u4E49\u521D\u59CB\u8FDE\u63A5\u6570
initialSize=0
#\u5B9A\u4E49\u6700\u5927\u8FDE\u63A5\u6570
maxActive=20
#\u5B9A\u4E49\u6700\u5927\u7A7A\u95F2
maxIdle=20
#\u5B9A\u4E49\u6700\u5C0F\u7A7A\u95F2
minIdle=1
#\u5B9A\u4E49\u6700\u957F\u7B49\u5F85\u65F6\u95F4
maxWait=60000  
log4j.rootLogger=INFO,Console,File
#\u5B9A\u4E49\u65E5\u5FD7\u8F93\u51FA\u76EE\u7684\u5730\u4E3A\u63A7\u5236\u53F0
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#\u53EF\u4EE5\u7075\u6D3B\u5730\u6307\u5B9A\u65E5\u5FD7\u8F93\u51FA\u683C\u5F0F\uFF0C\u4E0B\u9762\u4E00\u884C\u662F\u6307\u5B9A\u5177\u4F53\u7684\u683C\u5F0F
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n#\u6587\u4EF6\u5927\u5C0F\u5230\u8FBE\u6307\u5B9A\u5C3A\u5BF8\u7684\u65F6\u5019\u4EA7\u751F\u4E00\u4E2A\u65B0\u7684\u6587\u4EF6
log4j.appender.File = org.apache.log4j.RollingFileAppender
#\u6307\u5B9A\u8F93\u51FA\u76EE\u5F55
log4j.appender.File.File = D:/logs/ssm.log
#\u5B9A\u4E49\u6587\u4EF6\u6700\u5927\u5927\u5C0F
log4j.appender.File.MaxFileSize = 10MB
# \u8F93\u51FA\u6240\u4EE5\u65E5\u5FD7\uFF0C\u5982\u679C\u6362\u6210DEBUG\u8868\u793A\u8F93\u51FADEBUG\u4EE5\u4E0A\u7EA7\u522B\u65E5\u5FD7
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n

这两个配置文件可以自行配置,我这里也是寻找的看着顺眼的代码。

以上配置基本完成,那么我们就该看下我们的java代码如何进行了

HelloWord.java

@Controller
public class HellowWord {@Resourceprivate IConsultService consultService; @RequestMapping("/helloword")public String hello(HttpServletRequest request,Model model){System.out.println("aaa");String id = request.getParameter("id");String username = consultService.getUsername(Long.valueOf(id));System.out.println(username+"+++++++++");model.addAttribute("username", username);return "success";}
}

ConsultDao.java

public interface ConsultDao {int deleteByPrimaryKey(Long consultid);int insert(Consult record);int insertSelective(Consult record);Consult selectByPrimaryKey(Long consultid);int updateByPrimaryKeySelective(Consult record);int updateByPrimaryKey(Consult record);
}

ConsultMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.flower.dujiaohao.dao.ConsultDao" ><resultMap id="BaseResultMap" type="com.flower.dujiaohao.pojo.Consult" ><id column="consultId" property="consultid" jdbcType="BIGINT" /><result column="empid" property="empid" jdbcType="BIGINT" /><result column="payid" property="payid" jdbcType="BIGINT" /><result column="finish_time" property="finishTime" jdbcType="BIGINT" /><result column="addtime" property="addtime" jdbcType="BIGINT" /><result column="status" property="status" jdbcType="TINYINT" /><result column="userid" property="userid" jdbcType="BIGINT" /><result column="username" property="username" jdbcType="VARCHAR" /><result column="userphone" property="userphone" jdbcType="VARCHAR" /></resultMap><sql id="Base_Column_List" >consultId, empid, payid, finish_time, addtime, status, userid, username, userphone</sql><select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >select <include refid="Base_Column_List" />from t_lvz_consultwhere consultId = #{consultid,jdbcType=BIGINT}</select>
</mapper>

IConsultService.java

public interface IConsultService {public String getUsername(Long consultId);
}

ConsultServiceImpl.java

@Service("consultService")
public class ConsultServiceImpl implements IConsultService{@Resourceprivate ConsultDao dao;public String getUsername(Long consultId) {return dao.selectByPrimaryKey(consultId).getUsername();}}

pojo包不贴了 就是字段和set和get方法没有别的

至此我们访问http://localhost:8088/dujiaohao/helloword?id=38390667235841

好了一个简单mvc+mybatis搭建完成

其中遇到的问题:1.我们在导入mybatis包时pom.xml配置写错 一直抱:

A child container failed during start这个错误  从新配置pom.xml解决

2.

运行报错 No adapter for handler

这个错误也是参考例子中com.fasterxml.jackson.core这个pom引用时没有引用全 ,最后加上一段:
<dependency>  <groupId>com.fasterxml.jackson.core</groupId>  <artifactId>jackson-core</artifactId>  <version>2.1.0</version>  </dependency>  <dependency>  <groupId>com.fasterxml.jackson.core</groupId>  <artifactId>jackson-databind</artifactId>  <version>2.1.0</version>  </dependency>  <dependency>  <groupId>com.fasterxml.jackson.core</groupId>  <artifactId>jackson-annotations</artifactId>  <version>2.1.0</version>  </dependency>

解决。不过这个错误还有很多原因造成这里就不一一解释

哦哦哦还有一个就是我的dao,mapping.xml和pojo都是使用mybatis的一个工具直接生成的因此mapping.xml配置文件中的<mapper namespace="com.flower.dujiaohao.dao.ConsultDao" >配置出错导致mybatis无法找到比配的方法。
好了好了就这么多。
至于那个工具参考文档中有提到这个工具,我这里就不多说了 附上地址:http://blog.csdn.net/zhshulin/article/details/23912615

参考文档:http://blog.csdn.net/gebitan505/article/details/44455235/

Spring MVC+整合Batis 经过测试版相关推荐

  1. fastjson与spring mvc整合的配置

    fastjson 是阿里巴巴开发的开源json解析组件,方便于通过java来生成和解析json格式的字符串和对象. fastjson可以对Spring的返回数据进行json转换(SpringMVC的@ ...

  2. Java框架搭建-Maven、Mybatis、Spring MVC整合搭建

    Java框架搭建-Maven.Mybatis.Spring MVC整合搭建 1. 下载eclipse 到网站下载 http://www.eclipse.org/downloads/packages/e ...

  3. Spring、Mybatis、Spring MVC整合实例

    Spring.Mybatis.Spring MVC整合实例笔记 源码地址:https://gitee.com/name168/SSM_Demo 1.Maven web项目创建(IDEA) 2.SSM整 ...

  4. Spring和Spring Mvc整合详解

    Spring和Spring Mvc整合详解 官方主页 Spring Spring Mvc SpringMvc 5,可以参考这一篇<Spring和Spring Mvc 5整合详解> 概述 S ...

  5. 拦截器及 Spring MVC 整合

    一.实验介绍 1.1 实验内容 本节课程主要利用 Spring MVC 框架实现拦截器以及 Spring MVC 框架的整合. 1.2 实验知识点 Spring MVC 框架 拦截器 1.3 实验环境 ...

  6. Spring Mvc 整合 Mybatis

    第一步:pom中引入需要的jar包依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" ...

  7. SSM开发书评网29:后台二:wangEditor图片上传;(主要内容是【wangEditor图片上传的文档要求】,【Spring MVC整合FileUpload组件,以实现文件上传功能】)

    说明: (1)本篇博客内容说明:[在后台系统,我们点击新增按钮后,会弹出新增图书对话框]→[该对话框中,包含一个wangEditor富文本编辑器]→[wangEditor富文本编辑器中,可以包含图片] ...

  8. Spring mvc整合freemarker详解

    1.什么是FreeMarker FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写  FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模 ...

  9. Spring MVC整合Velocity

    Velocity模板(VM)语言介绍 Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由j ...

最新文章

  1. (转)字符型指针变量与字符数组的区别
  2. RK3288 GMAC整理
  3. HTML5无刷新修改URL:利用 History API 无刷新更改地址栏
  4. c++重载自增与自减运算符(前置与后置)
  5. MapReduce太慢了,记一次对它的调优建议。
  6. input两种默认显示文字方式
  7. 系统ghost后变成一个盘了别的分区的文件怎么找回
  8. ajax 提交 .net ispostback不执行,ASP.NET基于Ajax的Enter键提交问题分析
  9. LeetCode 445. 两数相加 II(链表大数加法)
  10. wpf中UserControl制作
  11. MTK 驱动(86)---更换CPU后,RPMB无法访问,必须同时更换eMMC
  12. java面试笔试试题http://www.jobui.com/mianshiti/it/java/6827/
  13. 6美元进公园随便挖钻石
  14. Dom对象与jQuery对象的转换
  15. JS中反射Reflect的基本使用
  16. 华为智慧屏鸿蒙系统评价,华为智慧屏V55i配置怎么样 参数介绍运行鸿蒙操作系统...
  17. 南丁格尔玫瑰图 With ggplot2【R语言】
  18. PHP中级工程师面试题
  19. 邮编查询经纬度_从经纬度查找邮政编码
  20. 2019软科中国【计算机】专业大学排名

热门文章

  1. dxo手机拍照排名_重磅!这款全能旗舰手机通过相机评测新基准,实力依旧强势|相机|镜头|广角镜头|手机|oppo...
  2. td标签中,内容过长不会自动换行
  3. js的七大设计原则--迪米特原则
  4. Spring Data JPA是什么?以及简单的使用(联表查询)
  5. 降雨对下垫面水分分配格局及地貌影响研究解决方案
  6. vsftpd.service; disabled; vendor preset: disabled解决方法
  7. 深度学习原理——41
  8. 2015年上半年信息系统项目管理师上午真题及答案
  9. librosa 音频分析
  10. 有些人控制欲望真tmd强,想杀人!