这是一个SpringMVC设计的教学案例,只为提供为不了解SpringMVC技术的人员提供学习参考。
- SpringMVC
- Spring Core
- Hibernate
- 阿里数据源
- MySQL5.6
我的理解是:SpringMVC是替代Struts框架的Spring的一个模块。它比Struts框架更加简单,同时,也与Spring结合的非常简单。目前,大部分企业新的项目都是以SpringMVC为控制层设计的。
我的理解是:SpringMVC中核心控制器,其实,它就是一个标准的Servlet类
这是SpringMVC中核心的配置文件,它的命名与web.xml中的DispatcherServlet类配置有关,一般的命名方式[servlet-name]-servlet.xml。
详见:other目录下的图片
- 安装Maven
- Maven编译
- 在MySQL数据库创建SkDB数据库,再执行other/db/init.sql文件,创建相关表.
- 将druid.jar,mysql数据库驱动两个包,放入tomcat中lib目录中。
- 配置Tomcat的数据源,即context.xml文件,示例配置信息,可见other/db/数据源配置信息.txt
- 重启tomcat
- 快速部署
- 测试
地址:http://localhost:8080/SpringMVCCase/
- zzxb
V 1.0.1
这个错误出现的原因是在一对多情况下的查询,例如:一个Users对应多个Lxrs,那么当根据userid/uname获得其所有联系人时,会出现该错误。
那么解决方案是如下:
1.引入jackson-datatype-hibernate4第三方类库,Maven如下:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-hibernate4</artifactId>
<version>2.7.4</version>
</dependency>
2.创建一个自定义类,例如:MyConfigClass类
public class MyConfigClass extends ObjectMapper {
public MyConfigClass() {
registerModule(new Hibernate4Module());
}
}
3.在SpringMVC核心配置文件中(mvc-dispatcher-servlet.xml),配置如下信息:
<mvc:annotation-driven>
<mvc:message-converters>
<!-- Use the HibernateAware mapper instead of the default -->
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="me.zzxb.tools.MyConfigClass" />
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
1.引入相关依赖.Maven
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
2.在applicationContext.xml文件中,配置事物处理。
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED" />
<tx:method name="find*" propagation="REQUIRED" read-only="true" />
<tx:method name="get*" propagation="REQUIRED" read-only="true" />
<tx:method name="page*" propagation="REQUIRED" read-only="true" />
<tx:method name="createHQLQuery" propagation="REQUIRED" />
<tx:method name="createSQLQuery" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<aop:config>
<!--* me.zzxb.service.*.*(..)的意思是:me.zzxb.service包下的所有类的所有方法-->
<aop:pointcut id="txPointcut" expression="execution(* me.zzxb.service.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
</aop:config>
<tx:annotation-driven transaction-manager="transactionManager"/>
3.在mvc-dispatcher-servlet.xml文件中引入applicationContext.xml
<import resource="classpath:applicationContext.xml"/>
返回JSON类型需要引入jackson相关包的引入,Maven
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jacksonForJSON.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jacksonForJSON.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jacksonForJSON.version}</version>
</dependency>
- 2016-8-28:
- 创建演示项目,并对一些配置文件进行了注解。
以下是在编写案例中收集的资源,对深入理解与运用有帮助
建议使用IntelliJ Idea开发工具。