一步步教你搭建Spring MVC && Spring &&mybatis框架

一步步教你搭建Spring MVC && Spring &&mybatis框架

本文使用的是Spring 4.3.2

项目源码下载地址

转载请注明出处

0x01 创建工程

下载地址

解压后的截图

解压后的截图

新创建一个SpringTest的web project,将libs下的所有jar放到项目的WEB-INF/lib目录下

结果如图

项目结构

0x02 创建Spring MVC 的配置文件

在src目录下新建 SpringMVCConfig.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:p="http://www.springframework.org/schema/p"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"

    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">
    <!-- 注解驱动 -->
    <mvc:annotation-driven>
    </mvc:annotation-driven>
    <!-- 自动装配 -->
    <context:component-scan base-package="com.zdr.controller" />
    <!--视图解析器 -->
    <bean id="jspViewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/" />
        <property name="suffix" value=".jsp" />
    </bean>
    <!-- 加载静态资源 -->
    <mvc:default-servlet-handler/>
</beans>
注解驱动:是可以自动将将请求的返回数据转换为JSON数据的工具,你可以直接将一些对象,集合返回给浏览器,这个驱动会自动将数据转换为JSON数据返回给浏览器。

自动装配:com.zdr.controller 的包是你自己创建的,Spring会自动扫描这个包下的所有带Controller注解的类。这个包下是所有controller的类,这些类不需要你自己去new就可以使用,是Spring MVC帮你管理的。

视图解析器:根据controller返回的数据,会去匹配相应的视图。Spring MVC会去/WEB-INF/pages/目录下找相应的.jsp文件。其中的pages目录是你自己创建的。

加载静态资源:有些静态资源例如图片,css不需要经过controlle的管理,所以需要做这个配置。

到这一步后,项目的结构如图

项目结构

0x03 加载Spring MVC 的配置文件。

在web.xml文件中添加下面的代码
<!-- spring mvc 配置 -->
<servlet>
    <servlet-name>mvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:SpringMVCConfig.xml</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>mvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
其中 classpaths 指向的文件就是你在上一步创建的文件。

创建Controller

在 com.zdr.controller 包下新建一个java类,作为controller,代码如下
package com.zdr.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class TestController {
    @RequestMapping(value = "/test")
    public String gotoIndex(){
        return "/index";
    }
}
@Controller:添加这个注解后Spring MVC便会将这个类当作controller处理。

@RequestMapping: 这个注解是用在controller的方法上的。value指定当你访问哪个路径时会执行该方法。比如要执行该方法需要访问的地址是 http://localhost:8080/SpringTest/test

return "/index": 一定要注意!!!这个返回值不要随便写。这个是跟你的视图解析器是对应的,在我的这个项目中,当执行完这句后,Spring MVC 会去 该项目的 /WEB-INF/pages/ 目录下,去寻找 index.jsp 的页面。如果没有的话会出现404的错误。还有,返回值不带.jsp,.html等后缀

0x04 创建视图

在 /WEB-INF/pages/ 目录下创建 index.jsp。一定要注意,跟上一步的返回值一样。

到这一步整个项目的结构如图

项目结构

访问下 http://localhost:8080/SpringTest/test试试吧。

0x05 返回字符串到浏览器

如果我们不希望跳转页面,希望返回一些字符串到浏览器,需要用到@ResponseBody注解。代码如下
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {
    @RequestMapping(value = "/test")
    @ResponseBody
    public String gotoIndex(){
        return "/index";
    }
}
再次访问下试试看,一定要记得,每次修改了Controller都有重启tomcat。

0x06 返回 JSON 数据到浏览器

0x06.1 添加jackson包

下载地址

0x06.2 添加消息转换器

在 SpringMVCConfig.xml 中做如下修改
    <!-- 注解驱动 -->
    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class = "org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            </bean>
            <bean class = "org.springframework.http.converter.StringHttpMessageConverter">
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
添加这句后会自动将返回的对象转换成JSON数据。

0x06.3 创建User类

public class User {
    private String account;
    private String pwd;

    public User() {

    }
    //以及对应的get set方法,一定要有一个无餐的构造方法
}

0x06.4 Controller代码

    @RequestMapping(value = "/json")
    @ResponseBody
    public User getJSON(){
        return new User("test","123456");
    }
访问 http://localhost:8080/SpringTest/json

结果如图

结果

同样的方法你也可以返回List集合。

Spring MVC 告一段落,下面开始 Spring 。


0x07 Spring 工作流程

Spring 的工作流程是: 浏览器发出请求到Controller -> Controller 调用对应的Service执行 ->
Service 调用对应的dao层获得结果。然后再依次返回给浏览器。

0x08 创建 Spring 配置文件

在src目录下新建SpringConfig.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:context="http://www.springframework.org/schema/context"

    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">
    <!-- 自动装配 -->
    <context:component-scan base-package="com.zdr.service" />
    <context:component-scan base-package="com.zdr.dao" />
</beans>

0x09 加载 SpringConfig.xml 文件

在web.xml文件中添加下面的代码
<!-- spring 配置 -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:SpringConfig.xml</param-value>
</context-param>
<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

一定要将 Spring 配置放在 Spring MVC配置上面

自动装配的那两个包是你自己创建的。

正项目的结构如图

项目结构

0x0A 创建 dao

import java.util.List;
import com.zdr.entity.User;

public interface UserDao {
    public List<User> findAllUsers();
}

//-----------我是分割线-----------

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Repository;

import com.zdr.dao.BaseDao;
import com.zdr.dao.baseDao.UserDao;
import com.zdr.entity.User;

@Repository
public class UserDaoImpl extends BaseDao implements UserDao{
    //代码太多,不宜粘贴,源码已上传github
}
需要注意的是,每一个dao的实现类都需要添加@Repository注解。
BaseDao 主要实现了数据库的连接。

0x0B 创建 service

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.zdr.dao.baseDao.UserDao;
import com.zdr.entity.User;

@Service
public class UserService {
    @Autowired
    private UserDao userDao;

    public List<User> findAllUsers(){
        return userDao.findAllUsers();
    }
}
同样Service也需要添加@Service注解,@Autowired注解是用来自动生成Dao的,添加这个注解后,你便不需要自己创建userDao了。可以直接使用。

0x0C 修改 Controller代码

    //使用Spring 管理
    @RequestMapping(value = "/getAllUsers")
    @ResponseBody
    public List<User> getAllUsers(){
        return userService.findAllUsers();
    }
记得重启tomcat

运行结果

结果

Spring 到这里就结束了,下面是myBatis


0x0D myBatis

下载地址请自行百度将相应的jar包导入项目

0x0E 创建 myBatis配置文件

在src目录下新建myBatisConfig.xml文件,代码如下
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource = "jdbc.properties">   
    </properties>
    <typeAliases>
        <package name = "com.zdr.mapper.entity"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>
    <!-- 注册映射文件 -->
    <mappers>
        <mapper resource="com/zdr/mapper/UserMapper.xml" /> 
    </mappers>
</configuration>
注意映射文件UserMapper.xml是你自己创建的。为了不与Spring混淆,这里采用了第二种配置文件。在src目录下创建jdbc.properties文件,代码如下
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://localhost\:3306/springTest
jdbc.username=root
jdbc.password=rootzdr

0x0F 创建UserMapper.xml文件

<!DOCTYPE mapper 
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zdr.dao.baseDao.UserDao">
    <select id = "findAllUsers"  resultType = "User">
        select account,pwd from users
    </select>
</mapper>

0x10 写service

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.zdr.dao.baseDao.UserDao;
import com.zdr.entity.User;
import com.zdr.utils.SqlSessionFactoryUtil;

public class MyBatisUserService {

    public List<User> findUsersByMybatis(){
        SqlSession session= SqlSessionFactoryUtil.openSession();
        UserDao userDao = session.getMapper(UserDao.class);
        List<User> list= userDao.findAllUsers();
        for(User u :list){
            System.out.println(u.toString());
        }
        return list;
    }   
}

0x11 controller测试

    @RequestMapping(value = "/getUsers")
    @ResponseBody
    public List<User> getUsers(){
        MyBatisUserService myService = new MyBatisUserService();
        return myService.findUsersByMybatis();
    }

猜你喜欢

转载自blog.csdn.net/u013451048/article/details/52971906