您的位置:首页 > 编程语言 > Java开发

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

2016-04-03 09:17 786 查看
现在开始正式搭建,首先构建如下的包结构



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. 4000
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就已经整合成功了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring spring mvc mybatis