【问题标题】:How To Serve Spring-Rest Response To JSP View如何为 JSP 视图提供 Spring-Rest 响应
【发布时间】:2018-11-09 07:54:41
【问题描述】:

嗨,我不知道这个问题是否正确,但我怀疑这就是我发布这个问题的原因。

如果我使用@RestController,那么我可以将我的响应直接写入 HTTP 响应对象。但是,我想为 JSP 提供响应。如何为 JSP 提供这种响应?请帮帮我,我搜索并阅读了很多博客和网站,但我仍然没有得到任何澄清。 #inSTACKOVERFLOW How to use Spring 4 Rest Controller to serve for Jsp view? 我有这个,但是在这里 有人问过同样的问题,这里建议他们使用 @Controller 代替 @RestController 用于 JSP 视图。

@Controller: 这个Annotation在Spring2.5版本中引入。对于支持 WEB-Services,spring 人使用 @ResponseBody 和 @Controller ,如果你使用 @ResponseBody 则可以直接将响应写入 Http Response 中。后来

@RestController:这个注解是在Spring4.0版本中引入的,可以使用@RestController代替简单的@Controller+@ResponseBody。

所以,最后在@RestController 的帮助下,我们可以将响应直接写入HTTP 响应对象。这个响应,我想发送到 JSP 视图。

我知道,通过使用 ajax 我们可以做到。但如果我使用 ajax,我只能将每个响应都放入同一页面。

在这里,如果我想结合 Spring-Rest 使用 JSP for View, 我怎样才能将我的响应传递给 jsp 视图。

请帮帮我。

【问题讨论】:

  • ResponseBody 不适用于 jsp 页面。它用于 json 作为示例。这就是为什么 RestController 也不用于 jsp 页面的原因。使用 Controller 并将您需要的数据插入到模型中
  • 感谢您的回复,经过这次讨论,我知道了。是的,你是对的Http Response Object is not for jsp pages。要从 Controller 获得对 jsp 的响应,我们需要使用带有 @Controller 注释的模型对象。对于 JSON 响应或 XML 响应,我们可以使用 RestController(spring-rest)。

标签: jsp spring-rest


【解决方案1】:

你不应该使用 RestController 来返回一个 jsp 页面,将你的注解更改为 @Controller 并让你的函数返回一个 jsp 页面。

如果您需要提供 Rest 服务并返回 jsp,请参考this answer

【讨论】:

    【解决方案2】:

    按照 Quissal 所说的那样去做。

    使用 rest 控制器,您的返回类型通常是某种用于序列化的对象(例如转换为 json),而不是 jsp 页面

    要创建一个 Web 应用程序,您必须使用 @controller 和一个 jsp 映射。

    网上有很多例子,比如: http://www.mkyong.com/spring3/spring-3-mvc-hello-world-example-annotation/

    【讨论】:

    • 感谢您的回复,在您的回复之后,我了解到@Controller 用于开发 Web 应用程序。 RestController 用于开发用于通信不同平台应用程序的 Web 服务概念。
    【解决方案3】:

    使用@Controller注解,在ModelMap中设置数据并返回String(应该是jsp名称)

    控制器:-

    @Controller
    @RequestMapping("/product")
    public class ProductController {
    
       @RequestMapping(method == RequestMethod.GET)
       public String getProduct(ModelMap model) {
    
           //get details from db and set to modelmap, testing hardcoded product name
          model.addAttribute("productName", "toys");
          return "productDetails";  
       }
    

    Jsp页面访问模型数据为,

    productDetails.jsp

    <html>
    <head>
      <body>
         <h2>${productName}</h2>
      </body>
    </head>
    </html>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      相关资源
      最近更新 更多