package com.boventech.learning.controller;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.boventech.learning.entity.User;
/**
* MVCReturn
* @author peng.xia
*
*/
@Controller
@RequestMapping("/MVCReturn")
public class SpringMVCReturnController {
@RequestMapping(value="/index1",method=RequestMethod.GET)
public ModelAndView index(){
ModelAndView modelAndView = new ModelAndView("/user/index");
modelAndView.addObject("name", "xxx");
return modelAndView;
}
//对于ModelAndView构造函数可以指定返回页面的名称,也可以通过setViewName方法来设置所需要跳转的页面;
@RequestMapping(value="/index2",method=RequestMethod.GET)
public ModelAndView index2(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("name", "xxx");
modelAndView.setViewName("/user/index");
return modelAndView;
}
//返回的是一个包含模型和视图的ModelAndView对象;
/**
* Model一个模型对象,
* 主要包含spring封装好的model和modelMap,以及java.util.Map,
* 当没有视图返回的时候视图名称将由requestToViewNameTranslator决定;
* @return
*/
@RequestMapping(value="/index3",method=RequestMethod.GET)
public Map<String, String> index3(){
Map<String, String> map = new HashMap<String, String>();
map.put("1", "1");
//map.put相当于request.setAttribute方法
return map;
}
//响应的view应该也是该请求的view。等同于void返回。
//返回String
//通过model进行使用
@RequestMapping(value="/index4",method = RequestMethod.GET)
public String index(Model model) {
String retVal = "user/index";
User user = new User();
user.setName("XXX");
model.addAttribute("user", user);
return retVal;
}
//通过配合@ResponseBody来将内容或者对象作为HTTP响应正文返回(适合做即时校验);
@RequestMapping(value = "/valid", method = RequestMethod.GET)
@ResponseBody
public String valid(@RequestParam(value = "userId", required = false) Integer userId,
@RequestParam(value = "name") String name) {
return String.valueOf(true);
}
//返回字符串表示一个视图名称,这个时候如果需要在渲染视图的过程中需要模型的话,就可以给处理器添加一个模型参数,然后在方法体往模型添加值就可以了,
@RequestMapping(method=RequestMethod.GET)
public void index5(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("xxx", "xxx");
}
//返回的结果页面还是:/type
//这个时候我们一般是将返回结果写在了HttpServletResponse 中了,如果没写的话,
//spring就会利用RequestToViewNameTranslator 来返回一个对应的视图名称。如果这个时候需要模型的话,处理方法和返回字符串的情况是相同的。
}
分享到:
相关推荐
在Spring框架中,管理Bean的方式主要有三种:XML配置、注解配置和Java配置。下面将详细介绍这三种方式以及Spring的自动注入机制。 1. **基于XML的Bean定义**: 在XML配置中,我们通常在`applicationContext.xml`...
本文将详细探讨Spring MVC中常见的三种请求映射方式:基于注解的映射、基于XML配置的映射以及基于Java配置的映射。我们将深入理解每种方式的工作原理,并通过实例来展示其用法。 ### 1. 基于注解的映射 **注解驱动...
### Spring AOP 几种配置方式详解 #### 一、Spring AOP 概述 Spring AOP(面向切面编程)是一种强大的编程模式,用于在应用程序中管理横切关注点,如日志记录、安全控制等。Spring 提供了多种方式来支持 AOP 的...
Spring Boot 中实现通用 Auth 认证的几种方式 在 Spring Boot 中实现通用 Auth 认证有多种方式,本文将介绍其中的几种常见的方式。 1. 使用 AOP 实现 Auth 认证 AOP(Aspect-Oriented Programming)是 Spring ...
7. **返回JSON和XML**:CXF支持JSON和XML两种常见的数据交换格式。对于JSON,可以使用`@Produces("application/json")`和`@Consumes("application/json")`注解来指定。XML则使用相应的XML注解。CXF内置了JSON和XML的...
在实际应用中,可以通过以下几种方式定义和使用切面: 1. 注解驱动的切面:使用`@Aspect`注解定义一个类作为切面,然后在类内部使用`@Before`, `@After`, `@AfterReturning`, `@AfterThrowing` 和 `@Around` 注解...
### Spring 实例化Bean的三种方式详解 在Java企业级应用开发中,Spring框架因其强大的功能和灵活性,成为了处理依赖注入、事务管理等任务的首选工具。其中,Bean的实例化是Spring框架的核心功能之一,它支持多种...
以下将详细介绍Spring在代码中获取bean的几种主要方法: 1. **`ApplicationContext` 接口** `ApplicationContext` 是Spring中最常用的接口之一,它提供了获取Bean的多种方法。例如,`getBean(String beanName)` ...
Spring 获取 WebApplicationContext、ApplicationContext 几种方法详解 在 Spring 框架中,获取 WebApplicationContext 和 ApplicationContext 对象是非常重要的,因为它们提供了访问 Spring 容器中的 Bean 对象的...
在Spring中,我们可以通过以下几种注解来实现AOP: 1. `@Aspect`:这个注解用于标记一个类为切面。切面类通常包含通知和切点定义。 2. `@Before`:此注解用于定义前置通知,即在目标方法执行前执行的代码。例如,...
接下来,我们讨论Spring中Bean的几种作用域: 1. **单例(Singleton)**:这是默认的作用域,Spring容器只会创建一个Bean实例,所有对Bean的请求都会返回同一个实例。 2. **原型(Prototype)**:在每次请求时,...
在Spring中,注解方式实现AOP主要包括以下几个关键注解: 1. `@Aspect`:这个注解用于定义一个切面类,该类包含了若干个通知(advice)。 2. `@Before`:在目标方法执行前执行的通知,相当于传统的“前置通知”。 3...
本文将探讨几种常见的框架组合方式,以帮助开发者高效且安全地完成这一任务。 1. **Servlet + JSP** 最基础的方式是直接使用Servlet和JSP(JavaServer Pages)来处理用户请求和展示页面。Servlet负责后端逻辑,如...
Spring AOP支持五种类型的通知:前置通知(Before)、后置通知(After)、返回后通知(After Returning)、异常后通知(After Throwing)和环绕通知(Around)。 3. **切点(Pointcut)**:切点是程序执行过程中的...
它提供了一种面向对象的方式来操作数据库,使得开发人员能够用Java对象来表示数据库中的表和记录。 Spring Data JPA则是在JPA之上构建的一层抽象,它扩展了JPA的功能,提供了更多的便利。例如,Spring Data JPA支持...
但不论使用哪种方式,理解Spring在Web项目中的集成原理和组件工作方式都是非常重要的。 总之,Spring为Web开发提供了强大而灵活的框架,通过合理集成和配置,可以构建出高效、可维护的Web应用。
Spring框架是一种轻量级的Java开发框架,其核心功能包括依赖注入(Dependency Injection, DI)、面向切面编程(Aspect Oriented Programming, AOP)、数据访问/集成、事务管理等。Spring框架的出现极大地简化了企业...
查询出列表,也就是返回list, 在我们这个例子中也就是 List<User> , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的 ...
### Struts2、Spring、Hibernate使用XML的整合方式 #### 概述 本文档将详细介绍如何使用XML配置文件实现Struts2、Spring以及Hibernate(通常称为SSH)这三种技术的整合,以支持一个简单的商品管理系统。这个系统...
Spring MVC框架的工作流程主要包括以下几个步骤: 1. **用户发起请求**:用户通过浏览器或其他客户端向服务器发送HTTP请求。 2. **前端控制器接收请求**:DispatcherServlet作为Spring MVC的前端控制器,负责接收...