SpringMVC的返回值类型

时间:2020-12-26 19:43:28

           最近去面试有两次问道了SpringMVC的返回值,第一次没答上来了,第二次也没答上来了,因为项目中用的SpringMVC的返回值类型是ModelAndView,回答的时候只说了String和ModelAndView。回来查了一下知道SpringMVC的返回值类型,SpringMVC的返回值类型有ModelAndView,String,void,Map,Model,下面是实现代码。

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <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*:springController.xml -->
                             classpath*:springControllerZhujie.xml
                      </param-value>
              </init-param>
  </servlet>
  
  <servlet-mapping>
                <servlet-name>springMVC</servlet-name>
                <url-pattern>/</url-pattern>
  </servlet-mapping>

 <context-param>
                 <param-name>contextConfigLocation</param-name>
                 <param-value>classpath*:springDAO.xml</param-value>
  </context-param> 
  <listener>
                 <listener-class>
                       org.springframework.web.context.ContextLoaderListener
                 </listener-class>
  </listener>

</web-app>


SpringMVC配置文件springControllerZhujie.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     
    xmlns="http://www.springframework.org/schema/beans"    
    xmlns:mvc="http://www.springframework.org/schema/mvc"    
    xmlns:context="http://www.springframework.org/schema/context"    
    xmlns:aop="http://www.springframework.org/schema/aop"    
    xmlns:tx="http://www.springframework.org/schema/tx"    
    xsi:schemaLocation="http://www.springframework.org/schema/beans   
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
        http://www.springframework.org/schema/mvc  
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
        http://www.springframework.org/schema/context  
        http://www.springframework.org/schema/context/spring-context-3.0.xsd   
        http://www.springframework.org/schema/aop    
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd   
        http://www.springframework.org/schema/tx   
        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> 
        <!-- 将 com.wangbiao.springMVC包下带有注解的java类放入SpringIOC容器中,生成实例-->
        <context:component-scan base-package="com/wangbiao/springMVC"></context:component-scan>
        <!-- 对应分别提供了AbstractHandlerMethodMapping , AbstractHandlerMethodAdapter 主要作用相当于HandleMapping,HandleAdapter-->
        <mvc:annotation-driven/>
        
         <!--视图解析器-->  
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
            <!-- webroot到一指定文件夹文件路径 -->  
            <property name="prefix" value="/"/>  
            <!-- 视图名称后缀  -->  
            <property name="suffix" value=".jsp"/>  
        </bean>  
	</beans>

package com.wangbiao.springMVC;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.context.ApplicationContext;
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.servlet.ModelAndView;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
@Controller
@RequestMapping("/return")
public class HelloWorld extends  MultiActionController{

	/*
	 * 返回值为ModelAndView类型的
	 */
	public ModelAndView sayHelloWorld(HttpServletRequest request, HttpServletResponse response) {
		String param = request.getParameter("param");
		System.out.println("springMVC测试:helloWorld;"+param);
		ModelAndView mv = new ModelAndView();
		User user = (User) this.getApplicationContext().getBean("user");
		mv.addObject("content", "springMVC HelloWorld:"+param);
		mv.setViewName("springMVC/helloWorld");
		ServletContext ctx = this.getServletContext();	
		return mv;
	}
	/*
	 * 返回值为String类型的,视图名就是返回值
	 */
	@RequestMapping(value="/returnString",method=RequestMethod.GET)
	public String returnString(Model model) {
		model.addAttribute("test", "return string!!!");
		System.out.println("springMVC测试:helloWorld;");
		return "return/returnString";
	}
	
	/*
	 * 返回值是void类型的,由于没有返回值
	 * 它默认的展示视图名和url中的一段是一样的即returnVoid.jsp
	 */
	@RequestMapping("/returnVoid")
	public void returnVoid(Model model){
		model.addAttribute("test", "return void!!!");
	}
	
	/*
	 * 返回值是void类型的,由于没有指定视图名
	 * 它默认的展示视图名和url中的一段是一样的即returnVoid.jsp
	 */
	@RequestMapping("/returnModel")
	public Model returnModel(Model model){
		model.addAttribute("test", "return Model!!!");
		return model;
	}
	
	/*
	 * 返回值是void类型的,由于没有指定视图名
	 * 它默认的展示视图名和url中的一段是一样的即returnVoid.jsp
	 */
	@RequestMapping("/returnMap")
	public Map returnMap(Model model){
		Map map = new HashMap<String,String>();
		map.put("test", "return map!!!");
		return map;
	}
	

}

returnString.jsp

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'returnString.jsp' starting page</title>
    
  </head>
  
  <body>
    123456 ${test }<br>
  </body>
</html>


运行链接
http://3g.fang.com:8000//SpringMVC/return/returnString

显示

SpringMVC的返回值类型

运行链接http://3g.fang.com:8000//SpringMVC/return/returnVoid,显示: