当前位置: 代码迷 >> VC/MFC >> maven+spring+springmvc+mybatis调整
  详细解决方案

maven+spring+springmvc+mybatis调整

热度:232   发布时间:2016-05-02 03:15:44.0
maven+spring+springmvc+mybatis整合

开发环境:eclipse-mars2(自带maven)

1,创建工程file-new-maven project-next

选择webapp-next

填写项目名字-finish

此时的项目前有红色X,项目结构也有问题,需要处理一下,选中项目右键-properties-resource-utf-8 apply

,选择java build path-jre-edit-勾选workspace defult……,apply-finish


还报错,继续,打开pom.xml,加入

!-- 导入java ee jar 包 -->
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
        </dependency>


问题解决。项目结构如下:



2,现在整合spring+mybatis


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/maven-v4_0_0.xsd">	<modelVersion>4.0.0</modelVersion>	<groupId>com.foresee</groupId>	<artifactId>mssm</artifactId>	<packaging>war</packaging>	<version>0.0.1-SNAPSHOT</version>	<name>mssm</name>	<url>http://maven.apache.org</url>	<properties>		<!-- spring版本号 -->		<spring.version>4.0.2.RELEASE</spring.version>		<!-- mybatis版本号 -->		<mybatis.version>3.2.6</mybatis.version>		<!-- log4j日志文件管理包版本 -->		<slf4j.version>1.7.7</slf4j.version>		<log4j.version>1.2.17</log4j.version>	</properties>	<dependencies>		<dependency>			<groupId>junit</groupId>			<artifactId>junit</artifactId>			<version>4.11</version>			<!-- 表示开发的时候引入,发布的时候不会加载此包 -->			<scope>test</scope>		</dependency>		<!-- spring核心包 -->		<dependency>			<groupId>org.springframework</groupId>			<artifactId>spring-core</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-oxm</artifactId>			<version>${spring.version}</version>		</dependency>		<dependency>			<groupId>org.springframework</groupId>			<artifactId>spring-tx</artifactId>			<version>${spring.version}</version>		</dependency>		<dependency>			<groupId>org.springframework</groupId>			<artifactId>spring-jdbc</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-aop</artifactId>			<version>${spring.version}</version>		</dependency>		<dependency>			<groupId>org.springframework</groupId>			<artifactId>spring-context-support</artifactId>			<version>${spring.version}</version>		</dependency>		<dependency>			<groupId>org.springframework</groupId>			<artifactId>spring-test</artifactId>			<version>${spring.version}</version>		</dependency>		<!-- mybatis核心包 -->		<dependency>			<groupId>org.mybatis</groupId>			<artifactId>mybatis</artifactId>			<version>${mybatis.version}</version>		</dependency>		<!-- mybatis/spring包 -->		<dependency>			<groupId>org.mybatis</groupId>			<artifactId>mybatis-spring</artifactId>			<version>1.2.2</version>		</dependency>		<!-- 导入java ee jar 包 -->		<dependency>			<groupId>javax</groupId>			<artifactId>javaee-api</artifactId>			<version>7.0</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>		<!-- JSTL标签类 -->		<dependency>			<groupId>jstl</groupId>			<artifactId>jstl</artifactId>			<version>1.2</version>		</dependency>		<!-- 日志文件管理包 -->		<!-- log start -->		<dependency>			<groupId>log4j</groupId>			<artifactId>log4j</artifactId>			<version>${log4j.version}</version>		</dependency>		<!-- 格式化对象,方便输出日志 -->		<dependency>			<groupId>com.alibaba</groupId>			<artifactId>fastjson</artifactId>			<version>1.1.41</version>		</dependency>		<dependency>			<groupId>org.slf4j</groupId>			<artifactId>slf4j-api</artifactId>			<version>${slf4j.version}</version>		</dependency>		<dependency>			<groupId>org.slf4j</groupId>			<artifactId>slf4j-log4j12</artifactId>			<version>${slf4j.version}</version>		</dependency>		<!-- log end -->		<!-- 映入JSON -->		<dependency>			<groupId>org.codehaus.jackson</groupId>			<artifactId>jackson-mapper-asl</artifactId>			<version>1.9.13</version>		</dependency>		<!-- 上传组件包 -->		<dependency>			<groupId>commons-fileupload</groupId>			<artifactId>commons-fileupload</artifactId>			<version>1.3.1</version>		</dependency>		<dependency>			<groupId>commons-io</groupId>			<artifactId>commons-io</artifactId>			<version>2.4</version>		</dependency>		<dependency>			<groupId>commons-codec</groupId>			<artifactId>commons-codec</artifactId>			<version>1.9</version>		</dependency>	</dependencies>	<build>		<finalName>mssm</finalName>		<!-- jetty插件 -->		<plugins>	<plugin>		<groupId>org.mortbay.jetty</groupId>		<artifactId>maven-jetty-plugin</artifactId>		<version>6.1.26</version>		<configuration>			<!-- 在很短的时间间隔内在扫描web应用检查是否有改变,如果发觉有任何改变则自动热部署。默认为0,表示禁用热部署检查。任何一个大于0的数字都将表示启用。 -->			<scanIntervalSeconds>10</scanIntervalSeconds>			<webAppConfig>				<!-- jetty插件启动后的访问路径: http://localhost:8080/mssm -->				<contextPath>/mssm</contextPath>				<tempDirectory>${project.build.directory}/work</tempDirectory>			</webAppConfig>		</configuration>	</plugin>			<!-- java编译版本 -->			<plugin>				<groupId>org.apache.maven.plugins</groupId>				<artifactId>maven-compiler-plugin</artifactId>				<version>2.3.2</version>				<configuration>					<source>1.6</source>					<target>1.6</target>				</configuration>			</plugin>		</plugins>	</build></project>
spring-mybatis.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:p="http://www.springframework.org/schema/p"	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-3.1.xsd                            http://www.springframework.org/schema/context                            http://www.springframework.org/schema/context/spring-context-3.1.xsd                            http://www.springframework.org/schema/mvc                            http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">	<!-- 自动扫描 -->	<context:component-scan base-package="com.foresee" />	<!-- 引入配置文件spring4.0新方式 -->	<context:property-placeholder location="classpath:jdbc.properties"/>		<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">		<property name="driverClassName" value="${jdbc.driver}" />		<property name="url" value="${jdbc.url}" />		<property name="username" value="${jdbc.username}" />		<property name="password" value="${jdbc.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/foresee/mapping/*Mapper.xml"></property>	</bean>	<!-- DAO接口所在包名,Spring会自动查找其下的类 -->	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">		<property name="basePackage" value="com.foresee.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>


jdbc.propertis文件

jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/foreseejdbc.username=rootjdbc.password=root#定义初始连接数initialSize=0#定义最大连接数maxActive=20#定义最大空闲maxIdle=20#定义最小空闲minIdle=1#定义最长等待时间maxWait=60000

log4j.propertis文件

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 = 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

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" 			xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">  <display-name>Archetype Created Web Application</display-name>  <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>  <listener>    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener>  <listener>    <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  </listener>  <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:spring-mvc.xml</param-value>    </init-param>    <load-on-startup>1</load-on-startup>    <async-supported>true</async-supported>  </servlet>  <servlet-mapping>    <servlet-name>SpringMVC</servlet-name>    <url-pattern>/</url-pattern>  </servlet-mapping>  <welcome-file-list>    <welcome-file>/index.jsp</welcome-file>  </welcome-file-list></web-app>

3、整合spring-mvc.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:p="http://www.springframework.org/schema/p"	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-3.1.xsd                            http://www.springframework.org/schema/context                            http://www.springframework.org/schema/context/spring-context-3.1.xsd                            http://www.springframework.org/schema/mvc                            http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">	<!-- 自动扫描该包,[email protected] -->	<context:component-scan base-package="com.foresee.controller" />	<!--避免IE执行AJAX时,返回JSON出现下载文件 -->	<bean id="mappingJacksonHttpMessageConverter"		class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">		<property name="supportedMediaTypes">			<list>				<value>text/html;charset=UTF-8</value>			</list>		</property>	</bean>	<!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->	<bean		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">		<property name="messageConverters">			<list>				<ref bean="mappingJacksonHttpMessageConverter" /> <!-- JSON转换器 -->			</list>		</property>	</bean>	<!-- 定义跳转的文件的前后缀 ,视图模式配置 -->	<bean		class="org.springframework.web.servlet.view.InternalResourceViewResolver">		<!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->		<property name="prefix" value="/WEB-INF/jsp/" />		<property name="suffix" value=".jsp" />	</bean>		<!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->	<bean id="multipartResolver"		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">		<!-- 默认编码 -->		<property name="defaultEncoding" value="utf-8" />		<!-- 文件大小最大值 -->		<property name="maxUploadSize" value="10485760000" />		<!-- 内存中的最大值 -->		<property name="maxInMemorySize" value="40960" />	</bean></beans>  

4、创建数据库foresee,创建user表

5、 实体类user.java

package com.foresee.pogo;public class User {    private int id;    private String userName;    private String password;	public int getId() {		return id;	}	public void setId(int id) {		this.id = id;	}	public String getUserName() {		return userName;	}	public void setUserName(String userName) {		this.userName = userName;	}	public String getPassword() {		return password;	}	public void setPassword(String password) {		this.password = password;	}    }

6、映射文件UserMapper.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.foresee.dao.IUserDao">  <resultMap id="ResultMap" type="com.foresee.pogo.User">    <id column="id" property="id" jdbcType="INTEGER" />    <result column="userName" property="userName" jdbcType="VARCHAR" />    <result column="password" property="password" jdbcType="VARCHAR" />  </resultMap>    <select id="selectById" resultMap="ResultMap" parameterType="int" >    select id, userName, password    from user    where id = #{id}  </select>    <delete id="deleteById" parameterType="int" >    delete from user    where id = #{id}  </delete>    <insert id="addUser" parameterType="com.foresee.pogo.User" >    insert into user (id, userName, password)    values (#{id}, #{userName}, #{password})  </insert>    <update id="updateById" parameterType="com.foresee.pogo.User" >    update user    <set >      <if test="userName != null" >        userName = #{userName},      </if>      <if test="password != null" >        password = #{password},      </if>    </set>    where id = #{id}  </update>  </mapper>

7、DAO接口IUserDao.java

package com.foresee.dao;import com.foresee.pogo.User;public interface IUserDao {		public void deleteById(int id);		public void addUser(User user);	    public User selectById(int id);	    public void updateById(User user);}

8、建立service接口和实现类

package com.foresee.service;import com.foresee.pogo.User;public interface IUserService {     public User getUserById(int id);  }	

实现类

package com.foresee.serviceImpl;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.foresee.dao.IUserDao;import com.foresee.pogo.User;import com.foresee.service.IUserService;@Service("userService")public class IUserServiceImpl implements IUserService {	@Resource	private IUserDao userDao;		public User getUserById(int id) {		return this.userDao.selectById(id);	}}	

9、在webapp创建jsp文件

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  <html>    <head>      <title>测试</title>    </head>        <body>      ${user.userName}    </body>  </html> 

10、创建controller文件

package com.foresee.controller;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import com.foresee.pogo.User;import com.foresee.service.IUserService;@Controller  @RequestMapping("/user") public class UserController {	@Resource      private IUserService userService;            @RequestMapping("/showUser")      public String toIndex(HttpServletRequest request,Model model){          int id = Integer.parseInt(request.getParameter("id"));          User user = this.userService.getUserById(id);          model.addAttribute("user", user);          return "showUser";    }}

11、创建测试类

import javax.annotation.Resource;import org.apache.log4j.Logger;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.alibaba.fastjson.JSON;import com.foresee.pogo.User;import com.foresee.service.IUserService;@RunWith(SpringJUnit4ClassRunner.class)// 表示继承了SpringJUnit4ClassRunner类@ContextConfiguration(locations = { "classpath:spring-mybatis.xml" })public class TestMyBatis {	private static Logger logger = Logger.getLogger(TestMyBatis.class);	@Resource	private IUserService userService = null;	@Test	public void test1() {		User user = userService.getUserById(1);		 System.out.println(user.getUserName());		logger.info(JSON.toJSONString(user));	}}

测试结果

运行项目,利用jetty:run

run完毕,浏览器输入localhost:8080/mssm/user/showUser?id=1

这是一个和bug战斗的过程。





  相关解决方案