SpringMVC——Controller常用返回值的处理

本文详细解析了SpringMVC处理方法的多种返回方式,包括ModelAndView、String、void、Model、ModelMap、Map和View,并通过具体实例展示了如何在实际应用中运用这些返回方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  SpringMVC处理方法支持如下的返回方式:ModelAndView,String, void,Model, ModelMap, Map,View,下面将对主要的返回方法进行说明: 

ModelAndView :

    通过ModelAndView构造方法可以指定返回的页面名称,也可以通过setViewName()方法跳转到指定的页面 , 
使用addObject()设置需要返回的值,addObject()有几个不同参数的方法,可以默认和指定返回对象的名字。该方法将处理后的数据和要返回的页面绑定在一起,大致相当于Request.setAttribute的作用,前台通过JSTL+EL表达式进行获取显示。


例如:将一个list集合返回到studentAssessDetial2页面


@RequestMapping(value = "/test")
public ModelAndView ceshi(HttpServletRequest request,
	HttpServletResponse response) {
	// 实例map

	ModelAndView mav = new ModelAndView();
	mav.setViewName("studentAssessDetial2");

	String templateId = "QgBa6Dhhb7CPyYbs3mw9Go";
	// 根据模板Id查询对应的考核项目
        List<AssessContent> assessContentlist = assessContentBean.queryContentByTemplateId(templateId)
		
	mav.addObject("aList", assessContentlist);
	return mav;

 }</span>


前台获取并显示:


<c:forEach items="${aList}" var="a" varStatus="status">
<tr>
<td><div id="${status.index+1}" name="assessSelectedDiv">
<c:out value="${status.index+1}" />、${a.assessContent}<br>
<c:forEach items="${a.weights}" var="b">
<input type="radio" name="${a.id}" value="${b.id}"class="answer">${b.weightContent}
<br/>
</c:forEach>
</div></td>
</tr>
</c:forEach>




Spring:

  指定返回的视图页面名称,结合设置的返回地址路径加上页面名称后缀即可访问到。


@RequestMapping(value = "/testString")
public String ceshiString(HttpServletRequest request,
HttpServletResponse response) {
// 实例map
String templateId = "QgBa6Dhhb7CPyYbs3mw9Go";
// 根据模板Id查询对应的考核项目
List<AssessContent> assessContentlist = assessContentBean.queryContentByTemplateId(templateId);

request.setAttribute("assessContentlist", assessContentlist);
</span>return "/studentAssessDetial";
}


该实例会返回到studentAssessDetial页面,同样的通过JSTL+EL表达式可以再页面上显示出来数据

*前缀后缀在spring的配置文件中设置:


<span style="font-family:KaiTi_GB2312;"><mvc:annotation-driven />
     <bean id="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"
	p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
<mvc:annotation-driven /></span>


void :

  如果返回值为空,则响应的视图页面对应为访问地址 


<span style="font-family:KaiTi_GB2312;">@RequestMapping(value = "/queryStudentAssess2")
public void findTeaCourseInfoByStuCode(HttpServletRequest request,
		HttpServletResponse response) {
 // 实例map
 Map<Serializable, Serializable> map = new HashMap<Serializable, Serializable>();
 // 实例Jackson对象
 JacksonJsonUntil jacksonJsonUntil = new JacksonJsonUntil();
 try {
   map.put("studentCode", "12040261009");
   @SuppressWarnings("unchecked")
   List<StudentTeachClass> StudentAssessList = schoolTeachingBean.findTeaCourseInfoByStuCodeInterface(map);
   // 转换json
   jacksonJsonUntil.beanToJson(response, StudentAssessList);
 } catch (Exception e) {
  e.printStackTrace();
 }
}
</span>


Map:

  与void类似


<span style="font-family:KaiTi_GB2312;"> @RequestMapping(value = "/testMap")
 public Map ceshimap(HttpServletRequest request,
			HttpServletResponse response) {
  // 实例map
  String templateId = "QgBa6Dhhb7CPyYbs3mw9Go";
  // 根据模板Id查询对应的考核项目
  List<AssessContent> assessContentlist = assessContentBean.queryContentByTemplateId(templateId);
  Map<String,List<AssessContent>> map=new HashMap<String, List<AssessContent>>();
  map.put("aList", assessContentlist);
				
  return map;

 }</span>



小结: 

  1.使用 String 作为请求处理方法的返回值类型是比较通用的方法,这样返回的逻辑视图名不会和请求 URL 绑定,具有很大的灵活性,而模型数据又可以通过 ModelMap 控制。 
  2.使用void,map,Model 时,返回对应的逻辑视图名称真实url为:prefix前缀+视图名称 +suffix后缀组成。 
  3.使用String,ModelAndView返回视图名称可以不受请求的url绑定,ModelAndView可以设置返回的视图名称。



评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值