【SpringMVC】响应数据和结果视图

controller的返回值分类

  • String类型
controller 方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。 
//指定逻辑视图名,经过视图解析器解析为 jsp 物理路径:/WEB-INF/pages/success.jsp
@RequestMapping("/testReturnString") 
public String testReturnString() {  
    System.out.println("AccountController 的 testReturnString 方法执行了。。。。");  
    return "success"; 
}
  • void类型
 Servlet 原始 API 可以作为控制器中方法的参数: 
@RequestMapping("/testReturnVoid") 
public void testReturnVoid(HttpServletRequest request,HttpServletResponse response) throws Exception {  } 
在controller 方法形参上可以定义 request和 response,使用 request 或 response 指定响应结果: 

1、使用 request 转向页面

request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);

2、也可以通过 response 页面重定向: response.sendRedirect("testRetrunString")

3、也可以通过 response 指定响应结果,例如响应 json 数据:

                response.setCharacterEncoding("utf-8");

                response.setContentType("application/json;charset=utf-8");

                response.getWriter().write("json 串");

  • ModelAndView类型

ModelAndView 是 SpringMVC 为我们提供的一个对象,该对象也可以用作控制器方法的返回值。

两个方法:

1.添加模型到该对象    

       public ModelAndView  addObject(String attributeName,Object attributeValue);

        页面上可以用el表达式获取值,获取方式${attributeName}  

2.设置逻辑视图名称,视图解析器会根据名称前往指定视图

         public void setViewName(String viewName);

SpringMVC提供的转发和重定向

  • 请求转发:

controller 方法在提供了 String 类型的返回值之后,默认就是请求转发。

我们也可以写成:       return "forward:/WEB-INF/pages/success.jsp";

它相当于“request.getRequestDispatcher("url").forward(request,response)”。

需要注意的是,如果用了 formward:则路径必须写成实际视图 url,不能写逻辑视图。使用请求 转发,既可以转发到 jsp,也可以转发到其他的控制器方法。

  • 重定向:

contrller 方法提供了一个 String 类型返回值之后,它需要在返回值里使用:redirect:

可以写成:          return "redirect:testReturnModelAndView";

它相当于“response.sendRedirect(url)”。需要注意的是,如果是重定向到 jsp 页面,则 jsp 页面不 能写在 WEB-INF 目录中,否则无法找到。

@ResponseBody 响应 json 数据

作用:  该注解用于将 Controller 的方法返回的对象,通过 HttpMessageConverter 接口转换为指定格式的 数据如:json,xml 等,通过 Response 响应给客户端

需要jar:jackson-annotations      jackson-databind         jackson-core     版本2.7.0以上

 <dependency>            
    <groupId>com.fasterxml.jackson.core</groupId>            
    <artifactId>jackson-databind</artifactId>            
    <version>2.9.0</version>        
</dependency>        
<dependency>            
    <groupId>com.fasterxml.jackson.core</groupId>            
    <artifactId>jackson-core</artifactId>            
    <version>2.9.0</version>        
</dependency>        
<dependency>            
    <groupId>com.fasterxml.jackson.core</groupId>            
    <artifactId>jackson-annotations</artifactId>            
    <version>2.9.0</version>        
</dependency>

例子:jsp

<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.min.js"></script>
 
<script type="text/javascript">  
$(function(){   
    $("#testJson").click(function(){    
        $.ajax({     
            type:"post", 
            url:"${pageContext.request.contextPath}/testResponseJson",         
            contentType:"application/json;charset=utf-8",
            data:'{"id":1,"name":"test","money":999.0}',     
            dataType:"json",     
            success:function(data){      
                alert(data); 
            }    
        });   
    });  
}) 
</script> 
<!-- 测试异步请求 --> 
<input type="button" value=" 测试 ajax请求 json和响应 json"    id="testJson"/> 

controller

@Controller("jsonController") 
public class JsonController {    
/** 
  * 测试响应 json 数据   
  */  
@RequestMapping("/testResponseJson")  
public @ResponseBody Account testResponseJson(@RequestBody Account account) {
    System.out.println("异步请求:"+account);   
    return account;  
    } 
} 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringMVC是一个用于构建Web应用程序的Java框架。在SpringMVC中,处理请求和响应是通过使用控制器方法来实现的。控制器方法使用@RequestMapping注解来映射请求的URL,并通过方法参数来获取请求参数和响应对象。 在处理请求,可以使用@RequestParam注解来获取请求参数的值。例如,可以在方法参数上使用@RequestParam注解来获取请求中的特定参数值。另外,也可以使用@PathVariable注解来获取URL中的路径参数。 在处理响应,可以使用@ResponseBody注解将方法返回值直接写入HTTP响应体中,而不是进行视图跳转。这样可以直接返回字符串、JSON格式的数据或其他类型的数据。 另外,在SpringMVC中,还有一些核心组件,如处理器映射器、处理器适配器和视图解析器。处理器映射器负责将请求映射到相应的控制器方法,处理器适配器负责将请求参数绑定到方法参数,并调用相应的控制器方法视图解析器负责将方法返回值解析为视图。 总结起来,SpringMVC通过控制器方法、注解和核心组件来处理请求和响应,使得开发者可以方便地构建Web应用程序。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [springMVC的请求和响应](https://blog.csdn.net/weixin_38088097/article/details/105840310)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [SpringMVC的请求和响应](https://blog.csdn.net/weixin_51146329/article/details/123166475)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值