【问题标题】:Spring MVC but without a view resolver?Spring MVC 但没有视图解析器?
【发布时间】:2012-02-10 15:39:50
【问题描述】:

是否可以在不使用视图解析器的情况下使用 Spring 3.1 MVC?

我问的原因是因为我只是想构建和创建一个 Web 服务,而不是一个网站,所以我根本不需要呈现任何 JSP 或 html 页面。我想使用 Spring 3.1 构建一个 RESTful Web 服务。

这可能吗?

这是我的 servlett 的样子,摘自教程:

这是我的 mvc-config.xml 这是我的 Web.xml
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <servlet>
        <servlet-name>FreedomSpring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>FreedomSpring</servlet-name>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>


    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>

        </param-value>
    </context-param>

    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/log4j.xml</param-value>
    </context-param>

    <welcome-file-list>
        <welcome-file>
      index.jsp
    </welcome-file>
    </welcome-file-list>

    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>

</web-app>

这是我的控制器 java 类,它只是想从特定的 http REST 请求返回一个字符串,而不是可以这么说的“ModelAndView”对象

  package com.jr.freedom.controllers;

    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;

    @Controller
    public class Hello {

        @RequestMapping(value = "/hello", method = RequestMethod.GET)
        public String helloWorldInJson() {

            return "hello";
        }
    }

另外,我如何捕获客户端可能发送给我的请求参数?这可能使用弹簧注释吗?我知道我可以在以前的 Spring 2.x 中使用 HttpServletRequest 和 HttpServletResponse 来获取从客户端发送的任何参数,并将对象以及 JSON 对象返回给用户。

我只是在寻找一个简单的例子:

  1. 从客户端获取参数和可能的 HTTP 标头请求我的控制器类并将它们映射到某个 Java 对象“例如,客户端向我发送注册到我的后端服务的新用户对象的详细信息(用户名、密码等等),我希望能够将其映射到我的 Java 类 Called User"

  2. 将任何类型的对象(如字符串、json 或 xml 数据)的响应返回给客户端。

我对 Spring 3.0 很陌生。我很久以前在 Spring 2.0 上做了一些工作,但注释似乎是现在要走的路,不知道如何通过注释来做到这一点。

谢谢

另外,要执行 helloWorldInJson() 的上述控制器方法,我只需调用 http://localhost/FreedomSpring/hello 吗?

【问题讨论】:

  • 最后一个问题,如果“FreedomSpring”是你的战争名称,是的。

标签: spring


【解决方案1】:

您通常为此使用@ResponseBody

16.3.3.5 Mapping the response body with the @ResponseBody annotation

这完全绕过了视图解析器。

【讨论】:

  • 谢谢。好的,RequestBody 呢?如何检索他们可能设置的请求参数和/或 http 的请求正文内容?
  • @jonney:你使用@RequestMapping 来做到这一点。请参阅文档的其余部分。
  • 干杯斯卡夫会看看队友
【解决方案2】:

使用@RestController 而不是@Controller

【讨论】:

【解决方案3】:

这个page 显示了您想要实现的目标。

您将使用 @PathVariable 注释将编码在 url 中的参数作为方法参数注入。如果参数在 post 或 get 中,那么您将使用 @RequestParam 代替。 该文档还解释了如何使用视图解析器将您的模型(由您的控制器设置)编组为任何格式。

【讨论】:

    【解决方案4】:

    是的,你可以做到。我刚刚创建了 spring mvc 展示项目。你可以在这里找到源代码。

    https://github.com/mohansaravanan/spring/tree/master/springmvc-3.2.2

    你可能会喜欢这个项目!

    【讨论】:

      猜你喜欢
      • 2014-01-10
      • 1970-01-01
      • 2012-04-15
      • 2011-01-18
      • 2022-11-16
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      • 2013-01-26
      相关资源
      最近更新 更多