spring mvc + mybaties+ mysql搭建--2016版

本文详细介绍了如何从零开始搭建SpringMVC与MyBatis框架,包括项目结构设计、配置文件编写及各组件间的交互过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了熟悉spring mvc和mybatis框架的搭建。自己决定,亲手从0开始搭建。


1:新建一个webproject ,这个不用多说。会eclipse的都会建的。


2:找到搭建项目所需要的包(这里有个原则,一开始并不是很清楚知道要用哪些包,但心里大概要清楚spring的常用包,比如srping-core,spring-beans,spring-aop,spring-tx,spring-contenxt,spring-context-support,spring-jdbc,spring-test,spring-web,spring-webmvc,还有既然有mysql。那就需要mysql-connector-java.既然用到mybties了,那就需要mybaties-spring...log日志相关的olf4j。等等, 还有,如果缺少哪个包,项目启动会报错,这个只有根椐错误来填补缺少的jar包,我这次搭建也遇到缺少jar包的情况好几次,根椐错误来下载缺少的包就可以,下载jar包有个很好的网站http://search.maven.org/,如果你目前所在公司的项目有这些常用包,就直接拿来用吧,省的下载了,我其实就是直接拿来用的大笑,下面我贴下我这次搭建用到的包。



3:新建好的项目结构如下图




4:新建springmvc-servlet文件。

<pre name="code" class="html"><?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:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.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-3.0.xsd
      					http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
      					http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">


	<context:component-scan base-package="com.chain.controller" />
	<!-- 启动对@AspectJ注解的支持 -->
	<!-- <aop:aspectj-autoproxy proxy-target-class="true" /> -->
	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list>
				<bean
					class="org.springframework.http.converter.StringHttpMessageConverter">
					<property name="supportedMediaTypes">
						<list>
							<value>text/plain;charset=UTF-8</value>
							<value>application/json;charset=UTF-8</value>
						</list>
					</property>
				</bean>
				<bean
					class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
				</bean>
			</list>
		</property>
	</bean>

	<!-- 只能用于springMVC,用于配置springMVC的注解驱动 @RequestMapping, @Controller, although support for those is the default behaviour), as well as adding support for declrative validation via @Valid and message body marshalling with @RequestBody/ResponseBody.-->
	<mvc:annotation-driven />
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix">
			<value>/WEB-INF/jsp/</value>
		</property>
		<property name="suffix">
			<value>.jsp</value>
		</property>
	</bean>
	
</beans>	



5:新建srping的配置文件application.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:mvc="http://www.springframework.org/schema/mvc" 
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.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-3.0.xsd
      					http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
      					http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
	
	<context:component-scan base-package="com.chain.service" />
	
   <!-- 引入配置文件 -->  
    <bean id="propertyConfigurer"  
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
        <property name="location" value="classpath:properties/jdbc.properties" />  
    </bean>  
</beans>

6:新建jdbc.proptertis配置文件

jdbc.url=jdbc\:mysql\://localhost\:3306/ksfulife?useUnicode\=true&characterEncoding\=UTF-8&allowMultiQueries\=true
jdbc.driver=com.mysql.jdbc.Driver
jdbc.username=root
jdbc.password=root
dataSource.initialSize=10
dataSource.maxIdle=20
dataSource.minIdle=5
dataSource.maxActive=50
dataSource.logAbandoned=true
dataSource.removeAbandoned=true
dataSource.removeAbandonedTimeout=180
dataSource.maxWait=2000


7:新建spring与mybaties配置文件 spring-resource.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:mvc="http://www.springframework.org/schema/mvc" 
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:util="http://www.springframework.org/schema/util"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.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-3.0.xsd
      					http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
      					http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
      					http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
    <!-- 数据库连接池 --> 
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
		<property name="driverClass" value="${jdbc.driver}"></property>
		<property name="jdbcUrl" value="${jdbc.url}"></property>
		<property name="user" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>
		<property name="maxPoolSize" value="10"></property>
        <property name="minPoolSize" value="10"></property>
        <property name="initialPoolSize" value="10"></property>
        <property name="maxIdleTime" value="20"></property>
        <property name="acquireIncrement" value="5"></property>
        <property name="idleConnectionTestPeriod" value="60"></property>
        <property name="preferredTestQuery" value="select 1"></property>
	</bean>
	
	<!-- spring与mybaties -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
     p:dataSource-ref="dataSource"
	 p:configLocation="classpath:config/mybatis-config.xml"
	 p:mapperLocations="classpath:mapping/*.xml"/> <!-- mapping文件,里面定义了dao.和相关方法的sql实现 -->
	
	<!-- 自动扫描了所有的XxxxMapper.java,这样就不用一个一个手动配置Mpper的映射了,只要Mapper接口类和Mapper映射文件对应起来就可以了。 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.chain.dao" />
		<property name="sqlSessionFactoryBeanName"  value="sqlSessionFactory" />
	</bean>

	<!-- 事务管理器 该类在spring-jdbc-3.2.4.RELEASE.jar包下-->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
	<!-- 使用annotation注解方式配置事务 -->   
    <!-- <tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager" /> -->
    
    <!-- 声明式事务 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
        	<!-- -所有方法启用事务 -->
            <tx:method name="*" propagation="REQUIRED" />
        </tx:attributes>
    </tx:advice>
    
    <aop:config expose-proxy="true">
        <!-- 只对业务逻辑层实施事务 注意*和“com.chain.service”这里之间需要一个空格-->
        <aop:pointcut id="txPointcut" expression="execution(*  com.chain.service.*.*(..))" />
        <!-- Advisor定义,切入点和通知分别为txPointcut、txAdvice -->
        <aop:advisor pointcut-ref="txPointcut" advice-ref="txAdvice"/>
    </aop:config>
</beans>


8.新建login-mapping.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.chain.dao.ILoginDao">
	<select id="login" parameterType="com.chain.dto.OperatorDto" resultType="com.chain.dto.OperatorDto">
		select operate_code as operateCode ,md5_password as password from op_operator
		where operate_code = #{operateCode} and md5_password = #{password}
	</select>
</mapper>



9:新建mybaties配置文件mybatis-config.xml

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- 基础设置 -->
	<settings>
		<!-- changes from the defaults,全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 -->
		<setting name="lazyLoadingEnabled" value="false" />
	</settings>
	
	<!-- 自定义类型转换器 -->
	<!-- <typeHandlers>
		<typeHandler javaType="Boolean" jdbcType="CHAR" handler="com.sfpay.product.dao.BooleanTypeHandler" />
	</typeHandlers> -->
		
	<!-- SQL映射文件 -->
	<mappers>		
		<!-- <mapper resource="mapping/login-mapping.xml" /> -->
	</mappers>
	
</configuration>

10

编辑WEB-INF下的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">
	<display-name>spmvc</display-name>

	<!-- 加载spring配置文件,mabaties数据库配置文件,多个文件用分号隔开 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:/applicaiton.xml;
  	              classpath*:resource/spring-resource.xml
  	 </param-value>
	</context-param>

	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- 加载springmvc配置文件。默认文件名-servlet.xml.我这里自定义的文件名跟默认名一样,也可以改一个名字 -->
	<servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>
				/WEB-INF/springmvc-servlet.xml
            </param-value>
		</init-param>
		<init-param>
			<param-name>dispatchOptionsRequest</param-name>
			<param-value>true</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	<!-- 字符集过滤器 -->
	<filter>
		<filter-name>CharacterEncodingFilter</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>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

11:新建LoginController.java

package com.chain.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.RequestParam;

import com.chain.dto.OperatorDto;
import com.chain.service.ILoginService;

/**
 *@author chenlijiang
2016年3月23日
上午9:35:30
 */
@Controller
public class LoginController {
	private Logger logger = LoggerFactory.getLogger(this.getClass());
	@Resource
	private ILoginService loginService; 
	
<span style="white-space:pre">	</span>//这里为了方便浏览器测试,把方法置为get方式的。
	@RequestMapping(value="/login/login", method=RequestMethod.GET,produces="applicaiton/json")
	public String login(@RequestParam String username,@RequestParam String password) {
		logger.info("登陆开始.........................");
		OperatorDto operatorDto = new OperatorDto();
		operatorDto.setOperateCode(username);
		operatorDto.setPassword(password);
		String resultStr = loginService.login(operatorDto);
		if ("success".equals(resultStr)) {
			return "success";
		} else {
			return "faliled";
		}
	}
	
}

12,新建service.   ILoginSerce

package com.chain.service;

import com.chain.dto.OperatorDto;

public interface ILoginService {
	public String login(OperatorDto operatorDto);
}

13.新建loginServiceImpl

package com.chain.service;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.chain.dao.ILoginDao;
import com.chain.dto.OperatorDto;

@Service("loginService")
public class LoginServiceImpl implements ILoginService {
	@Resource ILoginDao loginDao;

	
	public String login(OperatorDto operatorDto) {
		OperatorDto operatorDto2 = new OperatorDto(); 
		
		operatorDto2 = loginDao.login(operatorDto);
		if (operatorDto2!=null) {
			return "success";
		}
		return "failed";
	}


	
}

14 .新建LloginDao

package com.chain.dao;

import com.chain.dto.OperatorDto;
public interface ILoginDao {

	public OperatorDto login(OperatorDto operatorDto);
}

15.新建参数封装实体类LoginDto

package com.chain.dto;

public class OperatorDto {
		private String operateCode;
		private String password;
		public String getOperateCode() {
			return operateCode;
		}
		public void setOperateCode(String operateCode) {
			this.operateCode = operateCode;
		}
		public String getPassword() {
			return password;
		}
		public void setPassword(String password) {
			this.password = password;
		}
		
}

16.完成以上,还差数据库的建立和表的建立,读者可自行建立数据库和表结构,然后修改下jdbc.properties配置就行了。

17.在WEB-INF/jsp下建立 success.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 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
    Hello.框架搭建成功!恭喜您哦。! <br>
  </body>
</html>


18.建立failed.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 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
   	登陆失败,请重新登陆! <br>
  </body>
</html>




19.启动项目浏览器输入localhost:8080/spmvc/login/login.do?username=chen&password=7dc588f54dd051de2b1deac570d5c8a2




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

8一天不

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值