SpringSpringMvcMybatisHelloWorld(Spring + SpringMVC + Mybatis 框架搭建示例)

闪入说明:

本工程在 SpringMybatisHelloWorld(Spring4.x与Mybatis3.x框架整合示例) 这个工程基础上完成的,在参考本文章前请先阅读上面文章;

较上篇文章内容:

  • 1、加入SpringMvc配置
  • 2、将多个Spring的.xml配置合理拆分,方便维护
  • 3、添加一些必要的Jar包依赖
  • 4、添加Controller类

其他如实体类/Services类/Mapper配置文件等均未做变动

一、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_2_5.xsd"
	id="WebApp_ID" version="2.5">

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

    <!-- 中央控制器 -->
    <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:applicationContext-springmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    
	<!-- 配置统一编码过滤器 -->
	<filter>
		<filter-name>encodingFilter</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>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

</web-app>

二、pom.xml配置文件增加一些Jar包依赖

<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.ltcui</groupId>
	<artifactId>SpringSpringMvcHelloWorld</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>SpringSpringMvcHelloWorld</name>
	<description>SpringSpringMvcHelloWorld</description>
	
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<spring.version>4.0.4.RELEASE</spring.version>
		<mybatis.version>3.2.8</mybatis.version>
		<mybatis-spring.version>1.2.3</mybatis-spring.version>

		<oracle.driver.version>11.2.0.3.0</oracle.driver.version>
		<druid.version>1.0.18</druid.version>

		<logback.version>1.1.3</logback.version>
		<logback-ext-spring.version>0.1.2</logback-ext-spring.version>
		
		<jackson.version>2.3.0</jackson.version>
		<fastjson.version>1.2.28</fastjson.version>
		
		<commons-fileupload.version>1.3.1</commons-fileupload.version>
		<xstream.version>1.4.7</xstream.version>
		<junit.version>3.8.1</junit.version>
	</properties>

	<dependencies>
		<!--Spring Core start -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-oxm</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<!--Spring Core end -->

		<!-- mybatis start -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>${mybatis.version}</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>${mybatis-spring.version}</version>
		</dependency>
		<!-- mybatis end -->

		<!-- db oracle -->
		<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>ojdbc6</artifactId>
			<version>${oracle.driver.version}</version>
		</dependency>
		<!-- db oracle -->

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>${druid.version}</version>
			<exclusions>
				<exclusion>
					<groupId>com.alibaba</groupId>
					<artifactId>jconsole</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.alibaba</groupId>
					<artifactId>tools</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<!-- logback start -->
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<version>${logback.version}</version>
		</dependency>
		<dependency>
			<groupId>org.logback-extensions</groupId>
			<artifactId>logback-ext-spring</artifactId>
			<version>${logback-ext-spring.version}</version>
		</dependency>
		<!-- logback end -->

		<!-- fastxml start -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.module</groupId>
			<artifactId>jackson-module-jaxb-annotations</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.datatype</groupId>
			<artifactId>jackson-datatype-joda</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.dataformat</groupId>
			<artifactId>jackson-dataformat-xml</artifactId>
			<version>${jackson.version}</version>
		</dependency>		
		<!-- fastxml end -->

		<!-- fastjson start -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>${fastjson.version}</version>
		</dependency>
		<!-- fastjson end -->

		<!-- commens start -->
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>${commons-fileupload.version}</version>
		</dependency>
		
		<dependency>
			<groupId>com.thoughtworks.xstream</groupId>
			<artifactId>xstream</artifactId>
			<version>${xstream.version}</version>
		</dependency>
		<!-- commens end -->

		<!-- junit -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
		</dependency>

	</dependencies>

	<!-- 指定maven编译方式为jdk1.7版本 -->
	<profiles>
		<profile>
			<id>jdk-1.7</id>
			<activation>
				<activeByDefault>true</activeByDefault>
				<jdk>1.7</jdk>
			</activation>
			<properties>
				<maven.compiler.source>1.7</maven.compiler.source>
				<maven.compiler.target>1.7</maven.compiler.target>
				<maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
			</properties>
		</profile>
	</profiles>
</project>

三、Spring核心配置文件拆分为三个, applicationContext.xml、applicationContext-springmvc.xml、applicationContext-mybatis.xml 

1) applicationContext-springmvc.xml 是SpringMvc框架的核心配置  后续相关MVC的配置内容均在此配置文件中维护

<?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"
	xmlns:metrics="http://www.ryantenney.com/schema/metrics"
	xsi:schemaLocation="http://www.springframework.org/schema/beans	
						http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
						http://www.springframework.org/schema/context 
						http://www.springframework.org/schema/context/spring-context-3.0.xsd
						http://www.springframework.org/schema/mvc 
						http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
						http://www.ryantenney.com/schema/metrics 
						http://www.ryantenney.com/schema/metrics/metrics-3.1.xsd">
	<!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
	<context:component-scan base-package="com.ltcui.**.controller" />
	
    <!-- 自动注解 -->
    <mvc:annotation-driven content-negotiation-manager="contentNegotiationManager">
		<mvc:message-converters register-defaults="true">
			<!-- HttpMessageConverter即消息转换器机制:完成请求报文到对象和对象到响应报文的转换 -->
			<bean class="org.springframework.http.converter.StringHttpMessageConverter">
		    	<constructor-arg value="UTF-8" />
			</bean>
			<!-- 将Jackson2HttpMessageConverter的默认格式化输出设为true -->
			<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="prettyPrint" value="true"/>
            </bean>
            <bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
                <property name="marshaller">
                    <bean class="org.springframework.oxm.xstream.XStreamMarshaller"></bean>
                </property>
            </bean>
  		</mvc:message-converters>
	</mvc:annotation-driven>
	
	<!-- REST中根据URL后缀自动判定Content-Type及相应的View -->
	<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
	    <property name="ignoreAcceptHeader" value="true" />
        <property name="defaultContentType" value="application/json" />
	    <property name="mediaTypes">
	        <value>
	            json=application/json
	            xml=application/xml
	        </value>
	    </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>

	<!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
		<property name="messageConverters">
			<list>
				<ref bean="mappingJacksonHttpMessageConverter"/>
				<bean id="formHttpHttpMessageConverter" class="org.springframework.http.converter.FormHttpMessageConverter" />
			</list>
		</property>
	</bean>
	
	<!-- 对模型视图的解析 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/views/"/>
		<property name="suffix" value=".jsp"/>
	</bean>
	
	<!-- 文件上传表单的视图解析器 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="defaultEncoding" value="UTF-8" />
		<!-- 设置允许上传的最大文件大小,以字节为单位计算。当设为-1时表示无限制,默认是-1。 -->
	    <property name="maxUploadSize" value="1000000000" /> <!-- 1G -->
		<!-- 设置在文件上传时允许写到内存中的最大值,以字节为单位计算,默认是10240。 -->
	    <property name="maxInMemorySize" value="10000000" /> <!-- 10M -->
	</bean>
</beans>

2) applicationContext.xml 是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"
	xsi:schemaLocation="
   http://www.springframework.org/schema/beans 
   http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
   http://www.springframework.org/schema/context 
   http://www.springframework.org/schema/context/spring-context-4.0.xsd">

	<!-- 加载Mybatis文件配置 -->
	<import resource="applicationContext-mybatis.xml" />

</beans>

即整个工程的框架集成时,按不同的框架分别生成一个配置文件,而配置文件由 applicationContext.xml统一管理

三、applicationContext-mybatis.xml 是Mybatis框架连接数据库的配置 与上面文章的配置相同,现列出如下:

<?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"
	xsi:schemaLocation="
   http://www.springframework.org/schema/beans 
   http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
   http://www.springframework.org/schema/context 
   http://www.springframework.org/schema/context/spring-context-4.0.xsd">

	<!-- 指定spring读取db.properties配置 -->
	<context:property-placeholder location="classpath:connection.properties"/>
	
	<!--容器自动扫描IOC组件  -->
    <context:component-scan base-package="com.ltcui" />

	<!-- druid数据库连接池 -->
	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">  
		<!-- 数据库基本信息配置 -->
		<property name="url" value="${connect.oracle.url}" />  
		<property name="username" value="${connect.oracle.username}" />  
		<property name="password" value="${connect.oracle.password}" />  
		<property name="driverClassName" value="${connect.oracle.driverClassName}" />  
		<property name="filters" value="${connect.oracle.filters}" />  
		<!-- 最大并发连接数 -->
		<property name="maxActive" value="${connect.oracle.maxActive}" />
		<!-- 初始化连接数量 -->
		<property name="initialSize" value="${connect.oracle.initialSize}" />
		<!-- 配置获取连接等待超时的时间 -->
		<property name="maxWait" value="${connect.oracle.maxWait}" />
		<!-- 最小空闲连接数 -->
		<property name="minIdle" value="${connect.oracle.minIdle}" />  
		<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
		<property name="timeBetweenEvictionRunsMillis" value="${connect.oracle.timeBetweenEvictionRunsMillis}" />
		<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
		<property name="minEvictableIdleTimeMillis" value="${connect.oracle.minEvictableIdleTimeMillis}" />  
		<property name="validationQuery" value="${connect.oracle.validationQuery}" />  
		<property name="testWhileIdle" value="${connect.oracle.testWhileIdle}" />  
		<property name="testOnBorrow" value="${connect.oracle.testOnBorrow}" />  
		<property name="testOnReturn" value="${connect.oracle.testOnReturn}" />  
		<property name="maxOpenPreparedStatements" value="${connect.oracle.maxOpenPreparedStatements}" />
		<!-- 打开removeAbandoned功能 -->
		<property name="removeAbandoned" value="${connect.oracle.removeAbandoned}" />
		<!-- 1800秒,也就是30分钟 -->
		<property name="removeAbandonedTimeout" value="${connect.oracle.removeAbandonedTimeout}" />
		<!-- 关闭abanded连接时输出错误日志 -->   
		<property name="logAbandoned" value="${connect.oracle.logAbandoned}" />
	</bean>

	<!-- MyBatis配置 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<!-- 显式指定Mapper文件位置 -->
		<property name="mapperLocations" value="classpath*:com/ltcui/**/mapper/*Mapper.xml" />
		<!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
		<property name="typeAliasesPackage" value="com.ltcui.**.entity"/>
	</bean>

</beans>

四、增加一个 StudentController.java 类来跟Web端交互

package com.ltcui.student.controller;

import javax.annotation.Resource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.ltcui.student.entity.Student;
import com.ltcui.student.services.StudentServices;

@Controller
public class StudentController {
	private static Logger logger = LoggerFactory.getLogger(StudentController.class);
	
	@Resource
	private StudentServices studentServices;

	@ResponseBody
	@RequestMapping(value="student", method=RequestMethod.GET)
	public String getStudent(String stuId) {
		Student stu = studentServices.getStudentById("1");
		
		logger.info(stu.toString());
		
		return stu.toString();
	}
}

整个工程目录截图如下:

源代码下载: SprigSpringMvcMybatisHelloWorld 不要不舍得你的积分哦!

至此结束,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值