Spring MVC但没有视图解析器?

时间:2012-02-10 15:39:51

标签: spring

是否可以在不使用视图解析器的情况下使用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”对象返回一个String,可以这么说

  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. 将任何类型的对象(如String,json或xml数据)的响应返回给客户端。

  3. 我对Spring 3.0很新。我很久以前就在Spring 2.0上做了一些工作,但注释似乎是现在的方法,不知道如何通过注释来做。

    由于

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

4 个答案:

答案 0 :(得分:21)

您通常会使用@ResponseBody

请参阅16.3.3.5 Mapping the response body with the @ResponseBody annotation

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

答案 1 :(得分:4)

使用@RestController代替@Controller

答案 2 :(得分:3)

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

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

答案 3 :(得分:0)

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

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

您可能喜欢这个项目!