SpringMVC+MyBatis+MySql环境搭建
来源:互联网 发布:冯提莫用什么唱歌软件 编辑:程序博客网 时间:2024/06/05 20:26
第一次搭建springmvc+mybatis框架踩了不少坑,比如缺少jar包,配置参数出错,路径问题等等。通过不断的搜索和比对别人的搭建过程,还是让我搭建出来了。于是,打算总结一下我的搭建过程,并附上所需的jar包。希望能帮到有打算自己搭建SpringMVC框架的人。
搭建框架的大致步骤是:
- 导入相关jar包;
- 添加并配置springmvc、mybatis文件;
- 在web.xml中配置springmvc和mybatis文件;
- 在代码中的使用。
一、依赖的jar包
我用到的jar包主要是spring的框架包,这个可以到官网下载最新版。还有mybatis的jar包,mybatis-spring(这个尽量用最新版的,可以到这里下载,之前搭建的时候因为用的是旧版的,有出现了强转失败的情况,新版则没有。)以及其他相关的jar包。具体如下图
二、添加springmvc-servlet.xml配置文件
这个文件我是放到WEB-INF目录下(这个路径在后面web.xml配置中需要用到)。主要配置了需要注解驱动、扫描包文件、已经jsp路径,代码如下
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射--> <mvc:annotation-driven /> <!-- 启动包扫描功能,以便注册带有@Controller、@Service、@repository、@Component等注解的类成为spring的bean --> <context:component-scan base-package="com.jarvis" /> <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> </bean> <!-- 对模型视图名称的解析,在请求时模型视图名称添加前后缀,除了index.jsp,其他jsp页面都放在了WEB-INF/view下面了。 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/view/" p:suffix=".jsp" /> </beans>
三、配置mybatis
(1)、spring-mybatis配置文件
1、前提是mysql数据库已经装好,且测试正常。那么,接下来就是配置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: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"> <!-- 自动扫描,dao目录下的接口文件 --> <context:component-scan base-package="com.jarvis.dao" /> <!-- 引入配置文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:datasource.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/jarvis/mapping/*.xml"></property> </bean> <!-- DAO接口所在包名,Spring会自动查找其下的类 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.jarvis.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>
(2)、mysql配置参数
在上面的配置文件中,可以看到参数是通过
<!-- 引入配置文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:datasource.properties" /> </bean>
来引入的,引入的文件为datasource.properties,添加properties文件主要是为了方便数据库配置
driver=com.mysql.jdbc.Driver#访问地址和端口号,test为数据库名url=jdbc:mysql://127.0.0.1:3306/test#用户名username=root#密码password=123456#定义初始连接数initialSize=0#定义最大连接数maxActive=20#定义最大空闲maxIdle=20#定义最小空闲minIdle=1#定义最长等待时间maxWait=60000
四、配置web.xml
基本的配置文件都写完后,需要在web.xml配置把它们配置进去,才能在项目启动时加载它们。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" id="WebApp_ID" version="3.0"> <!-- Spring和mybatis的配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-servlet.xml, classpath*:spring-mybatis.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 配置spring核心servlet --> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- url-pattern配置为/,不带文件后缀,会造成其它静态文件(js,css等)不能访问。如配为*.do,则不影响静态文件的访问 --> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 编码过滤器 --> <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.util.IntrospectorCleanupListener</listener-class> </listener> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> <!-- 配置SESSION超时,单位是分钟 --> <session-config> <session-timeout>15</session-timeout> </session-config></web-app>
五、使用流程
到这边的话,就基本是配置完了。接下来,就来看看如何使用了。首先,我们假设一个业务流程,根据用户的id来获取用户名,并显示到页面上。
1、添加表及数据
我在mysql中创建了一个test数据库,并添加了一个user的表
- 建表语句
create table user ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '编号', name varchar(32) NOT NULL COMMENT '姓名',password varchar(128) NOT NULL COMMENT '密码');
- 添加的数据
insert into user values(2,"test","123456")
2、添加constroller
首先是在com.jarvis包下添加一个constroller包,专门用来方式constroller。然后创建一个LoginConstroller.java,代码如下
package com.jarvis.constroller;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.servlet.ModelAndView;import com.jarvis.pojo.User;import com.jarvis.serv.IUserService;@Controller @RequestMapping("/user")public class LoginConstroller {@Resourceprivate IUserService userService;public LoginConstroller() {} @RequestMapping(value = "/login/{id}", method = RequestMethod.GET) public ModelAndView myMethod(HttpServletRequest request,HttpServletResponse response, @PathVariable("id") String id, ModelMap modelMap) throws Exception { User users = userService.getUserById(Integer.valueOf(id)); modelMap.put("loginUser", users.getUserName()); return new ModelAndView("/login/hello", modelMap); }
上面这个方法是通过url传入id,然后通过id查询数据库,并取出用户,信息输入用户名,然后跳转到/login下的hello.jsp。从这个类中可以看到,除了查询数据库的service外,还有一个pojo类User。接下来,就先创建pojo类。
3、添加pojo
package com.jarvis.pojo;public class User { private Integer id; private String userName; private String password; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName == null ? null : userName.trim(); } public String getPassword() { return password; } public void setPassword(String password) { this.password = password == null ? null : password.trim(); }}
4、添加userService
这边需要注意的是,在controller中使用到的userService,是通过注解来完成,而注解的名称就是userService。所以在添加userService时,需要注意一下,不要写错了。
- 先添加一个接口IUserService
package com.jarvis.serv;import com.jarvis.pojo.User;public interface IUserService { public User getUserById(int userId);}
- 添加实现类UserServiceImpl
package com.jarvis.serv.impl;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.stereotype.Service;import com.jarvis.dao.IUserDao;import com.jarvis.pojo.User;import com.jarvis.serv.IUserService;@Service("userService")public class UserServiceImpl implements IUserService {@Autowired @Qualifier("IUserDao")private IUserDao IUserDao;@Overridepublic User getUserById(int userId) {return this.IUserDao.selectByPrimaryKey(userId);}}
这里用到的IUserDao是直接在UserServiceImpl这个类中注解的。
5、添加dao
package com.jarvis.dao;import org.springframework.transaction.annotation.Isolation;import org.springframework.transaction.annotation.Propagation;import org.springframework.transaction.annotation.Transactional;import com.jarvis.pojo.User;@Transactional(propagation=Propagation.REQUIRES_NEW,readOnly=false,isolation=Isolation.DEFAULT)public interface IUserDao { User selectByPrimaryKey(Integer id);}
6、添加dao对应的mapper文件
<?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.jarvis.dao.IUserDao" > <resultMap id="BaseResultMap" type="com.jarvis.pojo.User" > <id column="id" property="id" jdbcType="INTEGER" /> <result column="name" property="userName" jdbcType="VARCHAR" /> <result column="password" property="password" jdbcType="VARCHAR" /> </resultMap> <sql id="Base_Column_List" > id, name, password </sql> <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" > select <include refid="Base_Column_List" /> from user where id = #{id,jdbcType=INTEGER} </select></mapper>
7、添加对应的页面
因为在springmvc-servlet中,我们把页面的路径放到了WEB-INF目录下的view目录,而在LoginController中返回的路径是login下的hello.jsp,所以,我们首先要在WEB-INF下创建一个view目录,在view下,创建一个login目录,在login目录下创建一个名为hello的jsp文件。
hello.jsp的代码如下
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'hello.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> </head> <body> 你好:<%=request.getAttribute("loginUser") %>,现在时间是<%= new Date() %> </body> </html>
8、测试
到这边,就可以开始测试了。不过首先,我们要搞清楚访问的url。首先肯定是http://ip:端口/项目名,然后是看LoginController中,类的@RequestMapping是”/user”,方法的@RequestMapping是”/login/{id}”。其中的{id}是我们要传的值。所以,访问的url是
http://localhost:8080/项目名/user/login/id
运行效果如下:
- SpringMVC+MyBatis+MySql环境搭建
- Spring+Mybatis+SpringMVC+Maven+MySql环境搭建
- mybatis+SpringMVC环境搭建
- springMVC+mybatis环境搭建
- maven+Spring+SpringMVC+Mybatis+MySQL+tomcat环境搭建
- Spring+SpringMVC+myBatis环境搭建
- 搭建Springmvc+Mybatis+Spring环境
- springmvc + mybatis + mysql搭建感想
- SpringMVC与Mybatis整合环境搭建
- Maven+Spring+SpringMVC+MyBatis搭建环境心得
- SpringMVC+mybatis学习一之环境搭建
- maven+spring+springMVC+mybatis环境搭建
- 【AngularJS】AngularJS整合Springmvc、Mybatis环境搭建
- SpringMVC+Mybatis集成开发,环境搭建。
- springMVC+maven+mybatis+Intellij IDEA环境搭建
- springMVC+maven+mybatis+Intellij IDEA环境搭建
- 使用maven搭建SpringMVC+MyBatis开发环境
- springMVC+maven+mybatis+Intellij IDEA环境搭建
- 素数分解 (2016_6)
- 山东省第八届 ACM 省赛 company (贪心、水)
- Spring中使用@Pointcut出现IllegalArgumentException
- opencv之仿射与透视变换总结
- qml ListModel与Repeater编写重复控件界面
- SpringMVC+MyBatis+MySql环境搭建
- Centos 设置tomcat开机启动
- android选取linux作为内核的原因
- 在Linux上安装字体
- LeetCode刷题(C++)——Count and Say(Easy )
- 网络命令
- Mybatis-sql
- POJ 3252 Round Numbers (数位DP入门)
- LeetCode 561. Array Partition I