最近开始学习Spring3 MVC Restful,视图采用了jsp和freemarker,分别放在/WEB-INF/JSP和/WEB-INF/FTL文件夹下。使用spring MVC时之返回视图的字符串名称,怎么让它知道这个名称是对应jsp文件夹下还是ftl文件夹下的呢?
在Controller中进行转发时如何处理?
我用的是Spring3中的注解@Controller,然后在调用的方法中只返回字符串(如“success”),那么Spring3是如何确定是转到"/WEB-INF/JSP/success.jsp",还是“/WEB-INF/FTL/success.ftl”呢?
如果可以确定,那又是如何配置呢?
<context:component-scan base-package="com.spring" />
<bean id="freemarkerViewResolver"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="order" value="1" />
<property name="prefix" value="/freemarker/" />
<property name="suffix" value=".ftl" />
<property name="contentType" value="text/html;charset=utf-8" />
<property name="viewClass">
<value>org.springframework.web.servlet.view.freemarker.FreeMarkerView</value>
</property>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="order" value="2" />
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp"></property>
</bean>
<bean
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF" />
<property name="defaultEncoding" value="UTF-8" />
</bean>
@RequestMapping(value="/student")
protected ModelAndView freemaker() {
Student stu1=new Student();
stu1.setName("gaoxiang1");
stu1.setSex("male1");
Student stu2=new Student();
stu2.setName("gaoxiang2");
stu2.setSex("male2");
List a=new ArrayList();
a.add(stu1);
a.add(stu2);
return new ModelAndView("user/student","studentList",a);
}
使用视图链 首先会去找 user/student.ftl 如果找不到就会去找 user/student.jsp
1.首先在web.xml,配置多个Dispatcher,不同视图当然转发不一样!
web.xml
Java代码
1. <servlet-name>fm</servlet-name>
2. <servlet-class>
3. org.springframework.web.servlet.DispatcherServlet
4. </servlet-class>
5. <load-on-startup>1</load-on-startup>
6. </servlet>
7. <servlet-mapping>
8. <servlet-name>jstl</servlet-name>
9. <url-pattern>/*.do</url-pattern>
10. </servlet-mapping>
11. <servlet-mapping>
12. <servlet-name>fm</servlet-name>
13. <url-pattern>/*.fm</url-pattern>
14. </servlet-mapping>
15. <servlet>
<servlet-name>fm</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jstl</servlet-name>
<url-pattern>/*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>fm</servlet-name>
<url-pattern>/*.fm</url-pattern>
</servlet-mapping>
<servlet>
2.然后再配置*-servlet文件
jstl-servlet.xml
Java代码
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
3. <beans>
4. <bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
5. <property name="mappings">
6. <props>
7. <prop key="/hello.do">showCon</prop>
8. </props>
9. </property>
10. </bean>
11. <bean name="showCon" class="test.mvc.web.ShowController"/>
12. <bean id="viewResolver"
13. class="org.springframework.web.servlet.view.InternalResourceViewResolver">
14. <property name="prefix"><value>/WEB-INF/template/jsp/</value></property>
15. <property name="suffix"><value>.jsp</value></property>
16. <property name="viewClass">
17. <value>org.springframework.web.servlet.view.JstlView</value>
18. </property>
19. </bean>
20. </beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello.do">showCon</prop>
</props>
</property>
</bean>
<bean name="showCon" class="test.mvc.web.ShowController"/>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix"><value>/WEB-INF/template/jsp/</value></property>
<property name="suffix"><value>.jsp</value></property>
<property name="viewClass">
<value>org.springframework.web.servlet.view.JstlView</value>
</property>
</bean>
</beans>
fm-servlet.xml
Java代码
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
3. <beans>
4. <bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
5. <property name="mappings">
6. <props>
7. <prop key="/hello.fm">showCon</prop>
8. </props>
9. </property>
10. </bean>
11. <bean name="showCon" class="test.mvc.web.ShowController"/>
12. <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
13. <property name="suffix"><value>.fm</value></property>
14. <property name="viewClass">
15. <value>org.springframework.web.servlet.view.freemarker.FreeMarkerView</value>
16. </property>
17. <property name="contentType"><value>text/html; charset=gb2312</value></property>
18. </bean>
19. </beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello.fm">showCon</prop>
</props>
</property>
</bean>
<bean name="showCon" class="test.mvc.web.ShowController"/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="suffix"><value>.fm</value></property>
<property name="viewClass">
<value>org.springframework.web.servlet.view.freemarker.FreeMarkerView</value>
</property>
<property name="contentType"><value>text/html; charset=gb2312</value></property>
</bean>
</beans>
两个视图都调用test.mvc.web.ShowController,所以即使全部换了视图层,也不影响到控制层的东西,这就是spring MVC强大之一!
分享到:
相关推荐
Spring MVC 配置详解 Spring MVC 是一个基于 DispatcherServlet 的 MVC 框架,它是当前主流的 Web 框架之一。要想灵活运用 Spring MVC 来应对大多数的 Web 开发,就必须要掌握它的配置及原理。 一、Spring MVC ...
Spring3 MVC是Spring框架的重要组成部分,它是一个用于构建Web应用程序的轻量级、模型-视图-控制器(MVC)框架。本篇文章将深入探讨Spring3 MVC的核心概念、工作原理以及如何在实际项目中应用。 一、Spring3 MVC...
在Spring3MVC中,文件上传通常使用`CommonsMultipartResolver`解析器来处理多部分请求。你需要在`servlet-context.xml`中配置它,并在Controller中定义处理文件上传的接口。`MultipartFile`是Spring提供的接口,用于...
此外,Spring MVC还提供了一些高级特性,如ModelAndView对象,它允许控制器同时返回视图名和模型数据。另外,还有RedirectView和ForwardView等特殊视图,它们可以直接处理重定向和转发操作,简化了开发过程。 总的...
除此之外,教程可能还会涵盖Spring MVC的RESTful API设计,如何创建JSON响应,以及使用Spring Boot快速构建Spring MVC应用。Spring Boot简化了配置,提供了预配置的依赖,使得开发者能更快地启动项目。 错误处理和...
对于视图解析,Spring MVC通常与模板引擎结合使用,如JSP、FreeMarker或Thymeleaf。这可能需要`jsp-api.jar`(如果你使用JSP)和其他模板引擎对应的库。 此外,Spring3MVC还常常与Spring的其他模块集成,比如`...
在本文中,我们将深入探讨Spring3 MVC的基础配置、注解使用以及核心概念。 一、Spring3 MVC基本配置 1. **web.xml配置** 在web应用的部署描述符`web.xml`中,我们需要配置一个名为`DispatcherServlet`的Servlet。...
总之,“Spring MVC - A Tutorial”这份指南会详细讲解Spring MVC的各个核心组件和使用技巧,包括控制器的创建、模型数据的管理、视图的渲染、以及各种高级特性。通过学习,开发者可以熟练地运用Spring MVC来构建...
在本实例中,我们将会探讨Spring3 MVC的核心特性、配置、控制器、视图解析以及如何通过实际的代码示例来理解和应用这些概念。 1. **核心特性** - **依赖注入(DI)**:Spring3 MVC支持依赖注入,允许开发者解耦...
- **使用 Spring 配置**:DispatcherServlet 使用 Spring 配置来发现处理请求映射、视图解析、异常处理等所需的委托组件。 ##### 2.3 上下文层次结构 - **WebApplicationContext**:DispatcherServlet 需要一个 `...
5. **配置(Configuration)**:在Spring3中,配置文件通常采用XML,但也可以使用基于注解的配置。`@EnableWebMvc`注解开启Spring MVC的功能,`@ComponentScan`注解扫描包含控制器和服务的包。 6. **...
SPRING MVC 是一个基于 DispatcherServlet 的 MVC 框架,每一个请求最先访问的都是 DispatcherServlet,DispatcherServlet 负责转发每一个 Request 请求给相应的 Handler,Handler 处理以后再返回相应的视图(View)和...
5. **第5部分:Spring 3 MVC的国际化与本地化教程** - 讨论如何使用Spring MVC提供的国际化支持来构建多语言应用程序。 6. **第6部分:Spring 3 MVC主题皮肤使用示例教程** - 展示如何使用Spring MVC提供的主题支持...
Spring 3.0 MVC配置教程 Spring MVC是Spring框架的一部分,专门...同时,随着Spring框架的不断发展,Spring Boot简化了这些配置,使得Spring MVC的使用更加便捷。然而,理解基本配置对于深入学习Spring框架至关重要。
Spring3 MVC 和 Hibernate 是两个非常重要的 Java 开发框架,它们分别用于构建 Web 应用的模型-视图-控制器(MVC)架构和对象关系映射(ORM)。本示例代码将展示如何将这两个框架整合在一起,以实现高效、灵活的后端...
十八、Spring MVC多视图控制器:解释了如何配置和使用Spring MVC的多视图控制器来处理不同的视图需求。 十九、<mvc:annotation-driven/>到底做了什么工作:描述了<mvc:annotation-driven />标签的作用,它自动注册...
同时,Spring Web MVC支持灵活的URL映射策略,能够非常方便地与其他视图技术(如Velocity、FreeMarker等)集成。此外,它还提供了一系列内置的功能,如数据类型转换器、数据格式化器、数据验证器等,极大地简化了...
一个典型的Spring MVC应用需要配置DispatcherServlet、视图解析器、拦截器等。XML配置或Java配置都可以,现在更推荐使用Java配置,因为更直观且易于维护。 10. **单元测试与集成测试** Spring MVC提供测试支持,...
此外,该项目还展示了如何配置 Spring MVC,例如在 web.xml 中配置 DispatcherServlet,以及在 Spring 配置文件中定义 HandlerMapping 和 HandlerAdapter 等。这有助于理解 Spring MVC 的工作流程。 "spring-mvc-...