刚刚尝试用Spring MVC框架来替换Struts2框架,遇到了不少问题,网上的资料相当乱,记录备案一下。
东西有点多,可能会比较乱,整理个目录:
一、引用到的jar包
二、Spring中设置properties资源文件
三、使用注解的准备
四、Spring MVC配置中出现的找不到配置文件的问题
五、velocity和spring mvc的整合
六、velocity和javamail的整合
七、Spring MVC注解及fastjson与@ResponseBody的整合
-----------------------正文------------------------------
一、首先是引用的包,直接给Maven吧
<properties>
<spring.version>3.2.2.RELEASE</spring.version>
</properties>
<dependencies>
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.0</version>
</dependency>
<!-- database -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.24</version>
</dependency>
<!-- test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.28</version>
</dependency>
<!-- log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<!--javamail-->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<!--velocity-->
<dependency>
<groupId>velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.5</version>
</dependency>
</dependencies>
很抱歉一下copy了很长。。。
不过大致就是Spring Core,Spring Context,Spring Context Support,Spring MVC这几个
外加Velocity。javamail因为也用到了所以提一句。
---------------------------------------
二、Spring中设置properties资源文件
<bean id="propertyConfigs" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:datasource.properties</value>
<value>classpath:mailconfig.properties</value>
<value>classpath:site.properties</value>
</list>
</property>
</bean>
随后就可以在配置中使用${}来引用properties里面的值了
博主在这里还遇到一个问题,同时有两个以上的Spring配置文件时似乎会出现问题。首先是appCxt.xml里面配置了但在SpringMVC-servlet.xml里面没配置,SpringMVC-servlet.xml报错,无法解析。把其中的一部分移到SpringMVC-servlet.xml后appCxt也出现了报错。
无奈把所有配置信息写一个文件里了。好在大量使用了注解,因此实际没有特别长。
----------------------------------------------------------
三、使用注解的准备
<context:annotation-config/>
<context:component-scan base-package="cn.yix.blog"/>
后面的是表示要扫描的package
----------------------------------------------------------
四、Spring MVC配置中出现的找不到配置文件的问题
原因:配置web.xml时会给Spring的DispatcherServlet配置一个Servlet
<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:appCxt.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
值的注意的是其中的init-param属性,如果不配置的话默认是到WEB-INF目录下寻找${servlet-name}-servlet.xml的配置文件,如果没找到就直接报FileNotFoundException。
解决方案一是创建一个这样的文件,二是像博主这样自定义文件位置。
-----------------------------------------------------------
五、velocity和spring mvc的整合
本篇资料五花八门,但是大多是spring2.5的资料了
配置文件不用多说,首先是velocity的配置信息
<bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="resourceLoaderPath" value="WEB-INF/velocity"/>
<property name="velocityProperties">
<props>
<prop key="input.encoding">utf-8</prop>
<prop key="output.encoding">utf-8</prop>
</props>
</property>
</bean>
然后引入ViewResolver
<bean id="velocityViewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
<property name="suffix" value=".vm"/>
<property name="contentType" value="text/html;charset=utf-8"/>
</bean>
要补充的是Spring3 MVC中的Controller大多都是普通类了,我也不喜欢在一个映射方法中添加一堆莫名其妙的参数
实际上Spring支持直接的字符串解析:
@Controller
@RequestMapping("/")
public class IndexController {
@RequestMapping("/index.htm")
public String showIndex(){
return "index";
}
}
这里index会直接映射到WEB-INF/velocity/index.vm文件。
注意return字符串中不需要添加.vm字符串
###################补充2013-06-02#######################
也可以直接将配置信息写入properties文件
在VelocityConfigurer类的bean中添加
<property name="configLocation" value="classpath:velocity.properties"/>
#########################################################
-----------------------------------------------------------
六、velocity和javamail的整合
javamail可以使用velocity作为模板来发送模板邮件
具体在这里已经很清楚了:
http://gundumw100.iteye.com/blog/515346
博主在这里要补充的是里面引用的是org.springframework.ui.velocity.VelocityEngineFactoryBean来创建一个VelocityEngine对象。
但是velocity和spring mvc的整合则使用了org.springframework.web.servlet.view.velocity.VelocityConfigurer
我们没必要为了javamail还单独配置一个VelocityEngine方法。
通过阅读源码发现org.springframework.web.servlet.view.velocity.VelocityConfigurer实际有一个getVelocityEngine()方法。
因此我们可以直接把Confirgurer注入到javamail发送类
private VelocityEngine velocityEngine;
@Resource(name = "velocityConfigurer")
private void setVelocityConfigurer(VelocityConfigurer velocityConfigurer){
velocityEngine = velocityConfigurer.getVelocityEngine();
}
这个和前面的方法是等效的
--------------------------------------------------------------
其余相关的还有读写session之类,网上资料很全了,可以自行寻找,这里就不赘述了。
----------------------------------------------------------------
#################补充2013-06-02#############################
七、Spring MVC注解及fastjson与@ResponseBody的整合
Spring MVC使用注解需要在配置文件中添加一行:
<mvc:annotation-driven/>
如果要使用fastjson作为@ResponseBody输出的话还需要额外配置message-converters
<mvc:annotation-driven>
<mvc:message-converters register-defaults="false">
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes" value="application/json"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
需要注意的是mvc:message-conterters的register-defaults一定要设置为false
否则系统会自动调用默认的JSON解析器解析,如果缺少JSON包的话就会报406错误
分享到:
相关推荐
通过策略接口,Spring MVC 具有高度可配置性,支持多种视图技术,如 JSP、Velocity、Tiles、iText 和 POI。 Spring MVC 的主要组成部分包括控制器、模型对象、分派器和处理程序对象,这些组件的职责明确,易于定制...
4. **Part 4: Spring 3 MVC Tiles Plugin Tutorial with Example in Eclipse** - 将展示如何使用Tiles插件来管理页面布局,以及如何在Eclipse环境中配置和运行示例。 5. **Part 5: Spring 3 MVC ...
Spring与Hibernate整合则通过SessionFactory的bean配置,将数据访问层(DAO)的创建和管理交由Spring处理。 虽然原描述中没有直接提及Spring,但在实际项目中,这三个框架常被一起使用,Spring作为整体架构的胶水,...
2. **Java配置(Java-based Configuration)**:Spring 3.0引入了Java配置类,通过`@Configuration`和`@Bean`注解,开发者可以在Java代码中定义bean及其依赖,替代XML配置,使配置更加直观和可测试。 3. **AOP增强*...
Spring MVC的基本配置 静态资源映射 拦截器配置 @ControllerAdivce @ExceptionHandler @InitBinder @ModelAttribute 其他配置 ViewController 路径匹配参数配置 ...
通过阅读"spring5mvc第一天【大纲笔记】"和"SpringMVC框架第一天【随堂笔记】",你可以深入了解Spring MVC的基本概念、配置和实践技巧,从而更好地应用于实际项目开发。持续学习和实践是提升Spring MVC技能的关键。
综上所述,"mldn ssh整合项目我的智囊团笔记"是一个关于如何利用SSH框架进行Java Web开发的实战教程,涵盖了三大框架的核心概念和整合技术,对于想要深入理解和实践Java企业级开发的开发者来说,是一份宝贵的资料。
在Spring MVC中,可以使用Velocity作为视图技术。同时,Velocity还常用于生成静态站点、自动化测试报告等。 **使用技巧** 1. **模板设计**:保持模板简洁,避免过多的逻辑处理,让VTL专注于数据展示,复杂的业务...
虽然Spring框架在这份笔记中缺席,但值得一提的是,Spring在企业级应用中更为全面,它整合了Struts2和Hibernate,并提供了更多的功能,如依赖注入(DI)、面向切面编程(AOP)、Spring MVC、Spring Data JPA等。...
Spring MVC通过策略接口和可插拔架构,提供了高度的可配置性,支持多种视图技术如JSP、Velocity、Tiles等。 **Spring的优点**: 1. **降低耦合**:通过IoC,组件之间的依赖关系被外部化,降低了耦合度。 2. **服务...
在本笔记中,我们将深入探讨如何使用 Spring MVC 实现“Hello, World!”程序以及如何在其中进行值传递。 1. **Spring MVC 架构** Spring MVC 采用分层架构,包括 DispatcherServlet、Controller、Model、View 和 ...
以上只是Spring MVC众多特性和功能的一部分,实际开发中,开发者还需要了解如何整合其他Spring模块,如Spring Data、Spring Security等,以及如何优化性能、提升代码质量。通过"springmvc.zip"中的笔记学习,可以...
7. **MVC与模板引擎**:SpringBoot支持Thymeleaf、Freemarker、Velocity等多种模板引擎,方便进行视图渲染,配合Spring MVC实现前后端分离。 8. **国际化的支持**:SpringBoot通过`ResourceBundleMessageSource`和`...
笔记中可能会详细讲解如何配置JDBC驱动、创建数据库连接、执行SQL语句(包括查询、插入、更新和删除)、处理结果集以及事务管理。JDBC在进行数据操作时的角色和重要性,以及如何通过优化JDBC代码来提高应用程序的...
从给定的文件信息来看,这里涉及到的是WebWork框架的学习笔记与配置,以及如何将WebWork与Spring、Hibernate集成在一起的示例。下面,我们将详细地解析这些知识点: ### WebWork框架简介 WebWork是一个开源的Java ...
SpringSide3的主要优点在于其自动化项目生成,能够快速启动新项目,并且支持多种技术栈,包括持久化层的Hibernate和Spring Jdbc,Web MVC的Struts2,视图层的JSP和JQuery,以及企业服务如Web Service(JAX-WS通过CXF...
SpringBoot 是一个基于 Java 的框架,它简化了创建和配置基于 Spring 的应用程序的过程。这篇学习笔记将引导我们深入了解 SpringBoot 的基本用法,包括项目的创建、返回视图、数据库交互、前端与后端数据传递、日志...
5. ** strut2与Spring集成**:如何整合Struts2和Spring框架,实现依赖注入和事务管理。 6. ** strut2与Hibernate集成**:结合ORM框架Hibernate,进行数据库操作。 总的来说,这个入门教程和学习笔记将引导初学者从...
此外,笔记可能还会介绍Struts2的插件系统,例如Struts2-convention-plugin,它可以自动根据类名和方法名来映射URL,简化配置。还有Struts2-dojo-plugin和Struts2-jquery-plugin,这些提供了丰富的JavaScript库,...
3. **Bean管理**:Spring容器管理Bean的生命周期和状态。 4. **集成性**:Spring能很好地与其他框架如Struts2、Hibernate等集成,提供了强大的数据访问支持。 **Hibernate** Hibernate是一个对象关系映射(Object-...