(SSM框架)SpringMVC+Spring4+Mybatis+Maven环境快速搭建开发案例
2016-09-14 23:34
567 查看
一.前言
这几天搞完了SpringMVC,所以想把这个环境搭建写出来,供自己今后开发用,大家也可以借鉴一下。之后我会写一下这几天学的SpringMVC,也当复习和总结了。话不多说了,让我们开始吧!!!!GO!!!二.快速搭建
2.1 环境准备
数据库环境:Mysql5.7JAVA环境:
JDK: 1.8.0_77
Eclipse:LUNA
新建工程:Maven-webapp工程
SpringMVC的版本:4.1.6.RELEASE
Spring的版本: 4.1.6.RELEASE
Mybatis的版本:3.3.1
因此在Maven工程中的pom.xml文件中引入以下坐标依赖,仅供参考
<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>org.jboss.tools.examples</groupId> <artifactId>SpringMVC_Spring_Mybatis</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>SpringMVC_Spring_Mybatis Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- 日志适配器 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.5</version> </dependency> <!-- 日志实现 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.5</version> </dependency> <!-- aspectj框架包 --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.9</version> <scope>runtime</scope> </dependency> <!-- Spring依赖 --> <!--1)spring核心依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.1.6.RELEASE</version> </dependency> <!--spring ioc依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.1.6.RELEASE</version> </dependency> <!--2 spring坐标依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.6.RELEASE</version> <scope>runtime</scope> </dependency> <!--3 spring web相关依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.6.RELEASE</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.1.6.RELEASE</version> </dependency> <!--4spring dao层依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.1.6.RELEASE</version> </dependency> <!--5spring test相关依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.1.6.RELEASE</version> </dependency> <!-- 引入mybatis依赖坐标 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.1</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.0</version> </dependency> <!-- 引入jstl包 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- 引入mysql驱动包--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.32</version> </dependency> <!-- 数据库连接池的包 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-dbcp2</artifactId> <version>2.1.1</version> <scope>runtime</scope> </dependency> </dependencies> <build> <finalName>SpringMVC_Spring_Mybatis</finalName> </build> </project>
如图为加入的jar包
2.2 配置 mybatis连接 mysql
在src/main/resources中新建mybatis和spring目录,在mybatis目录中新建sqlMapConfig.xml,在spring目录中新建aplicationContext-dao.xml还有一个db.properties文件
sqlMapConfig.xml内容如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 全局setting配置,根据需要添加 --> <!-- 配置别名 --> <typeAliases> <!-- 批量扫描别名 --> <package name="com.yc.ssm.entity"/> </typeAliases> <!-- 配置mapper 由于使用spring和mybatis的整合包进行mapper扫描,这里不需要配置了。 必须遵循:mapper.xml和mapper.java文件同名且在一个目录 ps:也可以不在同一个目录,但是要配置路径,我在application-dao.xml中配置了另外的路径,可以查阅 --> <!-- <mappers> </mappers> --> </configuration>
applicationContext-dao.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:util="http://www.springframework.org/schema/util" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.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.xsd"> <!-- 加载db.properties文件中的内容,db.properties文件中key命名要有一定的特殊规则 --> <context:property-placeholder location="classpath:db.properties" /> <!-- 配置数据源 ,dbcp --> <!-- 数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" p:driverClassName="${jdbc.driver}" p:url="${jdbc.url}" p:username="${jdbc.username}" p:password="${jdbc.password}" /> <!-- sqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 数据库连接池 --> <property name="dataSource" ref="dataSource" /> <!-- 加载mybatis的全局配置文件 --> <property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml" /> <property name="mapperLocations" value="classpath:mapper/*Mapper.xml"></property> <!-- 这里另外配置mapper.xml路径 --> </bean> <!-- mapper扫描器 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 扫描包路径,如果需要扫描多个包,中间使用半角逗号隔开 --> <property name="basePackage" value="com.yc.ssm.mapper"></property> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> </bean> </beans>
db.properties 配置文件内容如下:
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mysql jdbc.username=root jdbc.password=1234
2.2.1 测试mybatis连接mysql是否成功
在src/test/java中新建一个ConnTest.java文件,来做junit测试测试代码如下:
package com.yc.ssm.connect; import static org.junit.Assert.assertNotNull; import java.sql.Connection; import org.apache.ibatis.session.SqlSessionFactory; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** * * <p>Title:ConnTest.java</p> * <p>Description:</p> * <p>Company:</p> * @author HuangMai * @Version 1.0 * */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:spring/aplicationContext-dao.xml") public class ConnTest { @Autowired private SqlSessionFactory sqlSessionFactory; @Test public void testConn() { Connection con = sqlSessionFactory.openSession().getConnection(); assertNotNull("数据库连接失败!!!", con); } }
测试结果如下:
测试成功! PS:明正常连接,如果你测试有误,就多看看junit具体报的什么错误,开始我的也报错,看错误成功解决.
2.3 配置前端控制器
在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_3_0.xsd" id="WebApp_ID" version="3.0"> <!-- 加载spring容器 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>spring/applicationContext-*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 配置springmvc的dispatchServlet的处理类 --> <servlet> <servlet-name>srpingDispatherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置DispatchServlet的初始化参数,加载配置文件(配置处理映射器,适配器)springmvc配置文件的位置和名称 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为--> <!--[<servlet-name>]-servlet.xml,如SpringMVC-servlet.xml --> <!-- <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/SpringMVC-servlet.xml</param-value> </init-param> --> <load-on-startup>1</load-on-startup> </servlet> <!-- 配置springmvc的DispathServlet的映射匹配URL --> <servlet-mapping> <servlet-name>srpingDispatherServlet</servlet-name> <!-- 第一种: *.action,访问以.action结尾 由DispatcherServlet进行解析 第二种: /. 所有访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析 第三种: /* 这种配置不对,使用这种配置,最终要转发到一个jsp页面时,仍然会由DispatcherServlet解析jsp地址,不能根据jsp页面找到handler,会报错 --> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
2.4 配置SpringMVC.xml
如下:
<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 可以扫描controller、service、... 这里让扫描controller,指定controller的包 --> <context:component-scan base-package="com.yc"></context:component-scan> <!--注解映射器 --> <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> --> <!--注解适配器 --> <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> --> <!-- 使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置 mvc:annotation-driven默认加载很多的参数绑定方法, 比如json转换解析器就默认加载了,如果使用mvc:annotation-driven不用配置上边的RequestMappingHandlerMapping和RequestMappingHandlerAdapter 实际开发时使用mvc:annotation-driven --> <!-- <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven> --> <mvc:annotation-driven ></mvc:annotation-driven> <!-- 视图解析器 解析jsp解析,默认使用jstl标签,classpath下的得有jstl的包 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 配置jsp路径的前缀 --> <property name="prefix" value="/login"/> <!-- 配置jsp路径的后缀 --> <property name="suffix" value=".jsp"/> </bean> <!-- 自定义参数绑定 --> <!-- <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> 转换器 <property name="converters"> <list> 日期类型转换 <bean class="com.yc.ssm.controller.converter.CustomDateConverter"/> </list> </property> </bean> --> </beans>
2.5 配置applicationContext-service.xml
这里我对service采用配置的形式,也可以采用注解的方式<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:util="http://www.springframework.org/schema/util" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.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.xsd"> <!-- 用户管理service --> <bean id="userService" class="com.yc.ssm.service.impl.UserServiceImpl"/> </beans>
2.6 测试spring+mybatis与mysql是否连通
这里面我自己写了一个user实体类,user mapper接口,user Controller类,user Service接口,user Service实现类,和mapper.xml 在mysql中创建了一个user 来模拟用户的简单登录。这里我就不贴代码了,到时候上传到百度云,供大家参考.贴一下目录结构:2.7 编写jsp页面
在webapp目录下创建一个login目录,在其目录下创建三个jsp页面。分别是login.jsp,success.jsp,fail.jsplogin.jsp代码为:
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>用户登录界面</title> </head> <body> <form action="userLogin.action" method="post" style="text-align: center; margin: 80px auto; width: 500px;"> <p>用户名:<input type="text" name="uname" /></p> <p>密码:<input type="password" name="upwd" /></p> <input type="submit" value="登录"/> </form> </body> </html>
success.jsp和fail.jsp的代码我就不贴了,就是用来显示登录是否成功。
2.7.1 测试springmvc 层是否成功
在UserController代码为package com.yc.ssm.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.yc.ssm.entity.User; import com.yc.ssm.service.UserService; /** * * <p>Title:UserController.java</p> * <p>Description:</p> * <p>Company:</p> * @author HuangMai * @Version 1.0 * */ @Controller @RequestMapping("/login") public class UserController { @Autowired private UserService userService; @RequestMapping("/userLogin") public ModelAndView userLogin(String uname,String upwd){ ModelAndView mav=new ModelAndView(); User user=userService.login(uname, upwd); if(user!=null){ mav.setViewName("/success"); return mav; }else{ mav.setViewName("/fail"); return mav; } } }
PS:配置Controller 别配置错了,不然会报404错误。中间我也出现过小问题,通过debug调试就解决了。大家细心点。要注意在springmvc.xml中配置的前缀后和后缀。我改过来了。
测试页面:
测试成功:
失败我就不上传了,改一下密码就Ok。
3. 总结
搭建的方式不唯一,大家灵活运用,能搭建成功就ok。本次springmvc+spring+mybatis+maven快速搭建到此结束。ps:注意编码,可以配置一个过滤器 案例demo在此:http://download.csdn.net/detail/michael_hm/9631402相关文章推荐
- JAVAWEB创建和发送邮件
- java jdk官网下载地址
- java集合框架系列---包装器
- Java中的几种设计模式
- 北京联想招聘-java 云服务开发工程师 加入qq 群:220486180 或者直接在此 留言咨询
- java集合框架系列---Iterator和Enumeration比较
- Java-Java匿名内部函数
- package 以java开头的包名报:ClassNotFoundException真相
- BottomSheetBehavior 之 java.lang.IllegalArgumentException: The view is not associated with BottomSheetBehavior
- java集合框架系列---TreeSet
- java集合框架系列---HashSet
- collections.sort()在java程序中的应用举例
- java中接口中成员的定义
- 栈内存与堆内存
- 我的第一篇博客——自写MyLinkedList类
- Java-面向对象(基础篇)-构造方法私有化及对象数组
- java集合框架系列---Set接口
- Spring boot的第一次简单上手实践
- Java项目下新建Folder时,文件夹图标却显示为package图标的解决办法
- Spring Boot实战与原理分析