spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void。下面将对具体的一一进行说明:
ModelAndView
@RequestMapping("/show1")
public ModelAndView show1(HttpServletRequest request,
HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView("/demo2/show");
mav.addObject("account", "account -1");
return mav;
}
通过ModelAndView构造方法可以指定返回的页面名称,也可以通过setViewName()方法跳转到指定的页面 ,
使用addObject()设置需要返回的值,addObject()有几个不同参数的方法,可以默认和指定返回对象的名字。
调用addObject()方法将值设置到一个名为ModelMap的类属性,ModelMap是LinkedHashMap的子类,
具体请看类。
Model 是一个接口, 其实现类为ExtendedModelMap,继承了ModelMap类。
Map
@RequestMapping("/demo2/show")
public Map<String, String> getMap() {
Map<String, String> map = new HashMap<String, String>();
map.put("key1", "value-1");
map.put("key2", "value-2");
return map;
}
在jsp页面中可直通过${key1}获得到值, map.put()相当于request.setAttribute方法。
写例子时发现,key值包括 - . 时会有问题.
View 可以返回pdf excel等,暂时没详细了解。
String 指定返回的视图页面名称,结合设置的返回地址路径加上页面名称后缀即可访问到。
注意:如果方法声明了注解@ResponseBody ,则会直接将返回值输出到页面。
例如:
@RequestMapping(value = "/something", method = RequestMethod.GET)
@ResponseBody
public String helloWorld() {
return "Hello World";
}
上面的结果会将文本"Hello World "直接写到http响应流。
@RequestMapping("/welcome")
public String welcomeHandler() {
return "center";
}
对应的逻辑视图名为“center”,URL= prefix前缀+视图名称 +suffix后缀组成。
void 如果返回值为空,则响应的视图页面对应为访问地址
@RequestMapping("/welcome")
public void welcomeHandler() {}
此例对应的逻辑视图名为"welcome"。
小结:
1.使用 String 作为请求处理方法的返回值类型是比较通用的方法,这样返回的逻辑视图名不会和请求 URL 绑定,具有很大的灵活性,而模型数据又可以通过 ModelMap 控制。
2.使用void,map,Model 时,返回对应的逻辑视图名称真实url为:prefix前缀+视图名称 +suffix后缀组成。
3.使用String,ModelAndView返回视图名称可以不受请求的url绑定,ModelAndView可以设置返回的视图名称。
分享到:
相关推荐
关于拦截器,在Spring MVC中,拦截器是一种动态拦截处理请求的方法,可以用来进行请求预处理和后处理。拦截器的实现通常需要实现HandlerInterceptor接口,并通过实现其三个方法:preHandle、postHandle和...
在IT行业中,Spring、Spring MVC和MyBatis是三大非常重要的Java Web开发框架,它们各自在应用程序的不同层次上发挥着关键作用。这个"Spring+Spring MVC+MyBatis之零配置之路源代码"项目旨在展示如何在不使用XML配置...
本文将详细解析Spring MVC Controller支持的多种返回值类型,以及它们各自的用法。 1. ModelAndView `ModelAndView`是Spring MVC提供的一种组合模型数据和视图的类。它允许开发者同时指定视图名称和模型数据。例如...
15. Spring MVC 支持的返回值类型:ModelAndView 返回值类型可以添加 Model 数据,并指定视图,String 返回值类型可以携带数据并跳转视图,void 返回类型主要在异步请求时使用,它只返回数据,而不会跳转视图。...
在Spring MVC中,URL参数传递是Web应用程序中常见的数据交互方式之一。本文将深入讲解如何在Spring MVC框架中有效地处理URL参数。 首先,`@Controller`注解用于标记一个类作为Spring MVC的控制器。当应用启动时,...
- 返回值可选类型多样,可以是ModelAndView、String、void、自定义对象等,Spring MVC会根据返回值类型自动进行视图渲染或数据处理。 7. **@Cacheable**和**@CacheFlush**:这两个注解用于缓存管理。`@Cacheable`...
1. **模块化**:Spring 3.0引入了模块化设计,将框架拆分为多个可选模块,便于按需引入,降低了应用的体积和启动时间。 2. **注解支持增强**:Spring 3.0大大增强了对Java注解的支持,如`@Autowired`用于自动装配...
在Spring MVC框架中,Controller是核心组件之一,它负责接收客户端(如APP)的请求,并进行处理后返回响应。本文将深入探讨Spring MVC Controller的工作原理、如何创建与配置,以及如何处理来自APP客户端的请求。 1...
6. `@RequestParam(value="paramName", required=false)`:`required=false`表示参数可选,如果请求中没有此参数,Spring MVC不会抛出异常。 7. `@ModelAttribute`:主要用于将请求参数绑定到Java对象,通常与表单...
jwx是开源的java公众号开发MVC框架,基于spring配置文件和微信消息或事件注解,通过微信上下文处理一个或多个微信公众号服务请求。目的主要有两个,其一生封装微信请求xml消息为java实体对象,将返回对象转换为xml...
`WebMvcConfigurer`接口定义了多个可选的方法,这些方法可以被实现类覆盖来定制Spring MVC的行为。接下来,我们将详细介绍这些方法的功能及用法。 #### 三、方法解析 1. **`configurePathMatch`**: - **功能**:...
- JWT(JSON Web Tokens):可选的身份验证机制,用于生成安全的令牌。 8. **测试**: - Spring Boot测试支持:@SpringBootTest、@WebMvcTest等注解用于不同层次的测试。 - MockMVC:模拟MVC层,进行单元测试。 ...
它的最新版本DWR0.6添加许多特性如:支持Dom Trees的自动配置,支持Spring(JavaScript远程调用spring bean),更好浏览器支持,还支持一个可选的commons-logging日记操作. 其大概开发过程如下: 1.编写业务代码,该...
Hibernate还提供了缓存机制,包括一级缓存(SessionFactory级别的缓存,每个Session操作的对象会缓存在此)和二级缓存(可选,用于跨Session共享数据,可以使用第三方缓存实现如EhCache)。 【Hibernate优化策略】 ...
Struts2提供了丰富的标签库,支持AJAX,且与各种第三方框架(如Spring和Hibernate)有良好的兼容性。它通过拦截器机制处理请求,使得业务逻辑和Web层分离,易于维护和扩展。 #### Struts2中实现动态Action 动态...
`<#include filename>`引入指定的FTL文件,可选参数`options`用于设置编码和解析方式。例如: ```html <h1>Some text<#include "common/copyright.ftl" parse=false encoding="UTF-8"></h1> ``` 4. **其他常用...
这个注解支持一个可选的属性`value`,该属性类型为`String`,用来指定绑定到Model对象上的属性名称。如果未指定,则默认使用方法名作为属性名。 #### 二、`@ModelAttribute`的执行时机 一个关键点需要注意的是,当...
- **零配置**:默认设置符合最佳实践,提供可选的配置选项。 - **无依赖**:除了Servlet外,不依赖其他类库,降低依赖风险。 - **多层次拦截器**:Action、Controller和Global级别,增强控制流。 - **多样化...
3. **设置请求头**(可选):通过`setRequestHeader()`方法,可以设置请求头信息,如Content-Type。 4. **发送请求**:使用`send()`方法发送请求,GET请求通常不需传递参数,POST请求则需将数据作为参数传入。 5. **...