Maven+Spring+SpringMVC+MyBatis框架的搭建(一)

3 篇文章 0 订阅
3 篇文章 0 订阅

现在开始正式搭建,首先构建如下的包结构
这里写图片描述
src/main/java下面的包:
com.sdusz.framework.ssm.constant-一些定义的常量的类
com.sdusz.framework.ssm.controller-控制器
com.sdusz.framework.ssm.entity-与数据库表对应的实体类
com.sdusz.framework.ssm.exception-自定义异常
com.sdusz.framework.ssm.filter-自定义过滤器
com.sdusz.framework.ssm.inteceptor-自定义拦截器
com.sdusz.framework.ssm.listener-自定义监听器
com.sdusz.framework.ssm.mapper-mybatis的dao接口层,反向生成得到
com.sdusz.framework.ssm.model-一些入参和出参对应的值对象
com.sdusz.framework.ssm.service-service层
com.sdusz.framework.ssm.serviceImpl-service实现层
com.sdusz.framework.ssm.task-定时任务相关类,可以先不建(以后再讲)
com.sdusz.framework.ssm.util-自定义工具类,方便个性化操作

src/main/resources下面的文件夹:
config-一些配置参数对应的文件
i18n-服务端国际化对应的properties文件
mybatis-myBatis中的.xml文件,反向生成得到
spring-spring配置文件,包括一些与spring集成的其他框架的配置文件
mybatis-generator-core-1.3.2-反向生成用的工具包,可以不放

集成SpringMVC

1、在spring文件夹下建立这两个文件
这里写图片描述
spring-context.xml 就是spring容器上下文对应的配置文件,也是AOP,DI,IOC的核心文件。
spring-mvc.xml主要是就是对应了dispatcherServlet的定义,包括数据到Controller层,以及从Controller返回时的Converter。
spring-context.xml现在内容如下,现在可以什么bean和aop的定义都不写,但是一定要有这么一个结构,否则等下服务启动是会报错的,因为启动时会将配置文件中的<beans></beans>之间定义的bean进行解析,加载到BeanFactory中去,如果没有这个beans节点,无法解析,就会报错。

<?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:util="http://www.springframework.org/schema/util"
    xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx" 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/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

</beans>

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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
                        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
                        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
                        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
                        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

    <!-- MVC注解扫描start -->
    <mvc:annotation-driven>
        <mvc:message-converters>
            <!--避免IE执行AJAX时,返回JSON出现下载文件 start-->  
            <bean id="mappingJacksonHttpMessageConverter"  class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">  
                <property name="supportedMediaTypes">  
                    <list>  
                       <value>application/json;charset=UTF-8</value>                  
                    </list>  
                </property>  
            </bean>  
            <bean id="StringHttpMessageConverter"  class="org.springframework.http.converter.StringHttpMessageConverter">  
                <property name="supportedMediaTypes">  
                    <list>  
                        <value>text/html;charset=UTF-8</value>  
                    </list>  
                </property>  
            </bean>
            <!--避免IE执行AJAX时,返回JSON出现下载文件 end-->  
        </mvc:message-converters>
    </mvc:annotation-driven>    
    <!-- MVC注解扫描end -->

    <!-- 扫描controller包 start -->
    <context:component-scan base-package="com.sdusz.framework.ssm" use-default-filters="false">
        <context:include-filter type="regex" expression="com.sdusz.framework.ssm.controller.*" />
    </context:component-scan>
    <!-- 扫描controller包 end -->

    <!-- 使用默认servlet的处理方式处理MVC start -->
    <mvc:default-servlet-handler />
    <!-- 使用默认servlet的处理方式处理MVC end -->

    <!-- 使用CGLib动态代理技术植入增强 start -->
    <aop:aspectj-autoproxy proxy-target-class="true" />
    <!-- 使用CGLib动态代理技术植入增强 end -->
</beans>

web.xml中添加如下配置,其中:
contextConfigLocation为类路径下的,也就是src/main/resurces下的spring/spring-context.xml文件,不配置将会默认去找WEB-INF下的applicationContext.xrnl 文件,找不到就会报错,log4j配置文件的位置同理,这里就不给出log4j的具体配置了,因为因项目而异,配置没有通用性。

    <!-- 首页 start -->
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
    <!-- 首页 end -->

    <!-- 上下文初始化参数 start -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/spring-context.xml</param-value>
    </context-param>
    <!-- 上下文初始化参数 end -->

    <!-- log4j配置文件路径 start -->
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:config/log4j.properties</param-value>
    </context-param>
    <!-- log4j配置文件路径 end -->

    <!-- log4j刷新周期 start -->
    <context-param>
        <param-name>log4jRefreshInterval</param-name>
        <param-value>600000</param-value>
    </context-param>
    <!-- log4j刷新周期 end -->

    <!-- 项目根目录名称 start -->
    <context-param>
        <param-name>webAppRootKey</param-name>
        <param-value>ssm.root</param-value>
    </context-param>
    <!-- 项目根目录名称 end -->

    <!-- spring全站编码过滤器 start -->
    <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>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- spring全站编码过滤器 end -->
    <!-- log4j监听器 start -->
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>
    <!-- log4j监听器 end -->

    <!-- Spring上下文初始化监听器 start -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!-- Spring上下文初始化监听器 end -->

    <!-- 防止Spring内存溢出监听器 start -->
    <listener>
        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
    </listener>
    <!-- 防止Spring内存溢出监听器 end -->
    <!-- SpringMVC servlet start -->
    <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/spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
        <async-supported>true</async-supported>
    </servlet>
    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <url-pattern>/interfaces/*</url-pattern>
    </servlet-mapping>
    <!-- SpringMVC servlet end -->
    <!-- session过期时间 start -->
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
    <!-- session过期时间 end -->

在com.sdusz.framework.ssm.controller包下添加一个测试类TestController.java

@Controller
@RequestMapping("test")
public class TestController {
    /**
     * 方法描述: 返回单个字符串
     * 初始作者: shenmengqi
     * 创建日期: 2016年3月18日-上午9:22:08
     * 开始版本: 2.0.0
     * =================================================
     * 修改记录:
     * 修改作者 日期 修改内容
     * ================================================
     *
     * @return
     *         String 返回的字符串
     */
    @RequestMapping("/m001")
    @ResponseBody
    public String getString() {

        return "hello,这只是一个字符串!";
    }
    /**
     * 方法描述: 返回map对象
     * 初始作者: shenmengqi
     * 创建日期: 2016年3月18日-上午9:21:37
     * 开始版本: 2.0.0
     * =================================================
     * 修改记录:
     * 修改作者 日期 修改内容
     * ================================================
     *
     * @return
     *         Map<String,String> 返回的map对象
     */
    @RequestMapping("/m002")
    @ResponseBody
    public Map<String, String> getJSON() {

        Map<String, String> data = new HashMap<String, String>();
        data.put("id", "001");
        data.put("name", "张三");
        return data;
    }
}
    /**
     * 方法描述: 访问restful接口并将参数作为结果返回
     * 初始作者: shenmengqi
     * 创建日期: 2016年3月18日-上午9:22:40
     * 开始版本: 2.0.0
     * =================================================
     * 修改记录:
     * 修改作者 日期 修改内容
     * ================================================
     *
     * @param clientType
     *            对应{clientType}
     * @param loginId
     *            对应{loginId}
     * @param userType
     *            对应{userType}
     * @return
     *         Map<String,String> 参数组装出的map对象
     */
    @RequestMapping("/{clientType}/{loginId}/{userType}/m003")
    @ResponseBody
    public Map<String, String> testRestful(@PathVariable String clientType, @PathVariable String loginId,
            @PathVariable String userType) {

        Map<String, String> data = new HashMap<String, String>();
        data.put("clientType", clientType);
        data.put("loginid", loginId);
        data.put("userType", userType);
        return data;
    }
        /**
     * 方法描述: 测试将model转为json传到前台</br>
     * 初始作者: shenmengqi
     * 创建日期: 2016年3月28日-下午10:12:47
     * 开始版本: 2.0.0
     * =================================================
     * 修改记录:
     * 修改作者 日期 修改内容
     * ================================================
     *
     * @param models
     *            传入model
     * @return
     *         Object json对象
     */
    @RequestMapping("/m005")
    @ResponseBody
    public Object testParamList(@RequestBody List<VoModel> models) {

        return JSON.toJSON(models);
    }

这里边的接口的返回值类型任意,另外方法上需要加上@ResponseBody注解,由于在spring-mvc.xml中配置了Converter,其实最终返回给前台的结果都是json对象,contentType就是application/json;charset=utf-8,但是如果要从前台传入VO就必须将对象用JSON.stringify()进行转换,类前面要加@Controller注解。上面接口的访问路径依次为:
1.http://ip:port/工程名/interfaces/test/m001
参数:无
请求类型:任意
结果:hello,这只是一个字符串!
2.http://ip:port/工程名/interfaces/test/m002
参数:无
请求类型:任意
结果:{“name”:”张三”,”id”:”001”}
3.http://ip:port/工程名/interfaces/test/1/2/3/m003
参数:无
请求类型:任意
结果:{“clientType”:”1”,”loginid”:”2”,”userType”:”3”}
4.http://ip:port/工程名/interfaces/test/m005
参数:参数的结构要与@RequestBody的结构一致,key必须与javabean的属性对应,

[{
"id":"001",
"name":"name"
}]

请求类型:POST
结果:

[
    {
        "name": "name",
        "id": "001",
        "voModel2": null,
        "email": null
    }
]

如果上述几个接口都可以调用成功,且没有乱码出现,那么Spring与SpringMVC就已经整合成功了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值