欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringMvc响应数据及结果视图实现代码

程序员文章站 2022-05-11 21:29:29
响应数据和结果视图返回值分类controller 方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。//指定逻辑视图名,经过视图解析器解析为 jsp 物理路径:/web-inf/pa...

响应数据和结果视图

返回值分类

controller 方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。
//指定逻辑视图名,经过视图解析器解析为 jsp 物理路径:/web-inf/pages/success.jsp
@requestmapping("/testreturnstring")
public string testreturnstring() {
system.out.println("accountcontroller 的 testreturnstring 方法执行了。。。。");
return "success"; }

运行结果:

SpringMvc响应数据及结果视图实现代码

@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 是 springmvc 为我们提供的一个对象,该对象也可以用作控制器方法的返回值。

该对象中有两个方法:

SpringMvc响应数据及结果视图实现代码
SpringMvc响应数据及结果视图实现代码

实例代码:

//返回值为modelandview
  @requestmapping("/test01")
  public modelandview test01(){
    user user = new user();
//    user.setuname("张三");
    user.setage(12);

    modelandview mv=new modelandview();
    mv.addobject("user",user);
    mv.setviewname("ok");
    return mv;

  }


ok.jsp代码:
<%@ page contenttype="text/html;charset=utf-8" language="java" iselignored="false" %>
<html>
<head>
  <title>title</title>
</head>
<body>
  <h1>入门成功</h1>
  ${user.uname}
  ${user.age}
</body>
</html>

forward转发

 //forward转发方式
  @requestmapping("/test02")
  public string test02(){
    system.out.println("forward");
    return "forward:/web-inf/pages/ok.jsp";
  }

需要注意的是,如果用了 formward:则路径必须写成实际视图 url,不能写逻辑视图。它相当于“request.getrequestdispatcher("url").forward(request,response)”。使用请求转发,既可以转发到 jsp,也可以转发到其他的控制器方法。

redirect 重定向

 @requestmapping("/test03")
  public string test03(){
    system.out.println("redirect");
    return "redirect:/index.jsp";
  }

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

responsebody 响应json 数据

作用:

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

需求:

使用@responsebody 注解实现将 controller 方法返回对象转换为 json 响应给客户端。
前置知识点:

springmvc 默认用 mappingjacksonhttpmessageconverter 对 json 数据进行转换,需要加入jackson 的包。

SpringMvc响应数据及结果视图实现代码

 @requestmapping("/test04")
  public @responsebody user test04(@requestbody user user){
    system.out.println("运行");
    user.setage(13);
    user.setusername("张三");
    user.setpassword("12346845");
    return user;

  }

jsp中的代码:
  <script src="${pagecontext.request.contextpath}/js/jquery.min.js"></script>

  <script type="text/javascript">
    $(function () {
      $("#open").click(function () {
        $.ajax({
          url:"${pagecontext.request.contextpath}/user/test04",
          contenttype:"application/json;charset=utf-8",
          data:'{"username":"hehe","password":"123456","age":12}',
          type:"post",
          datatype:"json",
          success:function (data) {

            alert(data);
            alert(data.username);
            alert(data.password);
            alert(data.age);

          }
        });
      });
    })

结果:

SpringMvc响应数据及结果视图实现代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。