标签: spring-mvc

如何在Spring MVC REST控制器中访问HTTP头信息?

我是Web编程的新手,特别是在Java中,所以我只是学习了标题和正文.

我正在使用Spring MVC编写RESTful服务.我能够@RequestMapping在我的控制器中创建简单的服务.我需要帮助了解如何从我的REST服务控制器中的方法请求中获取HTTP头信息.我想解析标题并从中获取一些属性.

你能解释我如何获取这些信息吗?

rest spring http spring-mvc request-headers

147
推荐指数
3
解决办法
17万
查看次数

Spring MVC:如何在@ResponseBody中返回图像?

byte[]从DB 获取图像数据(as ).如何返回此图片@ResponseBody

编辑

我没有@ResponseBody使用HttpServletResponseas方法参数我做了:

@RequestMapping("/photo1")
public void photo(HttpServletResponse response) throws IOException {
    response.setContentType("image/jpeg");
    InputStream in = servletContext.getResourceAsStream("/images/no_image.jpg");
    IOUtils.copy(in, response.getOutputStream());
}
Run Code Online (Sandbox Code Playgroud)

使用@ResponseBody注册org.springframework.http.converter.ByteArrayHttpMessageConverter转换器作为@Sid说对我不起作用:(.

@ResponseBody
@RequestMapping("/photo2")
public byte[] testphoto() throws IOException {
    InputStream in = servletContext.getResourceAsStream("/images/no_image.jpg");
    return IOUtils.toByteArray(in);
}
Run Code Online (Sandbox Code Playgroud)

spring-mvc

138
推荐指数
9
解决办法
17万
查看次数

Spring MVC @PathVariable被截断了

我有一个控制器,提供对信息的RESTful访问:

@RequestMapping(method = RequestMethod.GET, value = Routes.BLAH_GET + "/{blahName}")
public ModelAndView getBlah(@PathVariable String blahName, HttpServletRequest request,
                            HttpServletResponse response) {
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,如果我使用带有特殊字符的路径变量命中服务器,它将被截断.例如: http:// localhost:8080/blah-server/blah/get/blah2010.08.19-02:25:47

参数blahName将是blah2010.08

但是,对request.getRequestURI()的调用包含传入的所有信息.

知道如何防止Spring截断@PathVariable吗?

java rest spring get spring-mvc

135
推荐指数
7
解决办法
7万
查看次数

Spring中的@RequestBody和@ResponseBody注释

有人可以解释Spring 3中的注释@RequestBody@ResponseBody注释吗?它们适用于什么?任何例子都会很棒.

java spring annotations spring-mvc

134
推荐指数
3
解决办法
28万
查看次数

自动装配两个bean实现相同的接口 - 如何将默认bean设置为autowire?

背景:

我有一个Spring 2.5/Java/Tomcat应用程序.有以下bean,在许多地方的整个应用程序中使用

public class HibernateDeviceDao implements DeviceDao
Run Code Online (Sandbox Code Playgroud)

和以下新的bean:

public class JdbcDeviceDao implements DeviceDao
Run Code Online (Sandbox Code Playgroud)

第一个bean配置为(包括所有bean)

<context:component-scan base-package="com.initech.service.dao.hibernate" />
Run Code Online (Sandbox Code Playgroud)

第二个(新)bean是单独配置的

<bean id="jdbcDeviceDao" class="com.initech.service.dao.jdbc.JdbcDeviceDao">
    <property name="dataSource" ref="jdbcDataSource">
</bean>
Run Code Online (Sandbox Code Playgroud)

当然,这会导致启动服务器时出现异常:

嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义类型为[com.sevenp.mobile.samplemgmt.service.dao.DeviceDao]的唯一bean:期望的单个匹配bean但找到2:[deviceDao,jdbcDeviceDao]

从一个试图像这样自动装豆的类

@Autowired
private DeviceDao hibernateDevicDao;
Run Code Online (Sandbox Code Playgroud)

因为有两个bean实现相同的接口.

问题:

是否可以配置bean以便这样做

1.我不必对已经HibernateDeviceDao自动装配的现有类进行更改

2.仍然可以像这样使用第二个(新)bean:

@Autowired
@Qualifier("jdbcDeviceDao")
Run Code Online (Sandbox Code Playgroud)

即我需要一种方法将HibernateDeviceDaobean 配置为要自动装配的默认bean,同时允许在使用注释JdbcDeviceDao显式指定时使用@Qualifier.

我已经尝试过的:

我试过设置属性

autowire-candidate="false"
Run Code Online (Sandbox Code Playgroud)

在JdbcDeviceDao的bean配置中:

<bean id="jdbcDeviceDao" class="com.initech.service.dao.jdbc.JdbcDeviceDao" autowire-candidate="false">
    <property name="dataSource" ref="jdbcDataSource"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

因为Spring文档说明了这一点

指示在查找匹配候选项以满足另一个bean的自动装配要求时是否应考虑此Bean.请注意,这不会影响名称的显式引用,即使指定的bean未标记为autowire候选,也会解析引用.*

我解释为我仍然可以JdbcDeviceDao使用@Qualifier注释自动装配并具有HibernateDeviceDao默认bean.显然,我的解释是不正确的,因为这会在启动服务器时导致以下错误消息:

类型[class com.sevenp.mobile.samplemgmt.service.dao.jdbc.JdbcDeviceDao]的不满意依赖:预计至少有一个匹配的bean

来自我尝试使用限定符自动装配bean的类:

@Autowired
@Qualifier("jdbcDeviceDao")
Run Code Online (Sandbox Code Playgroud)

解: …

java spring spring-mvc autowired

132
推荐指数
3
解决办法
13万
查看次数

@GetMapping和@RequestMapping(method = RequestMethod.GET)注释之间的区别

@GetMapping和之间有什么区别@RequestMapping(method = RequestMethod.GET)
我在一些Spring Reactive示例中看到过, @GetMapping而不是使用它@RequestMapping

java spring spring-mvc spring-4

130
推荐指数
4
解决办法
9万
查看次数

Spring MVC类型转换:PropertyEditor还是Converter?

我正在寻找在Spring MVC中绑定和转换数据的最简单和最简单的方法.如果可能,不进行任何xml配置.

到目前为止,我一直在使用PropertyEditors:

public class CategoryEditor extends PropertyEditorSupport {

    // Converts a String to a Category (when submitting form)
    @Override
    public void setAsText(String text) {
        Category c = new Category(text);
        this.setValue(c);
    }

    // Converts a Category to a String (when displaying form)
    @Override
    public String getAsText() {
        Category c = (Category) this.getValue();
        return c.getName();
    }

}
Run Code Online (Sandbox Code Playgroud)

...
public class MyController {

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.registerCustomEditor(Category.class, new CategoryEditor());
    }

    ...

}
Run Code Online (Sandbox Code Playgroud)

它很简单:两个转换都在同一个类中定义,绑定很简单.如果我想在我的所有控制器上进行通用绑定,我仍然可以在我的xml配置中添加3行 …

java data-binding spring spring-mvc type-conversion

129
推荐指数
3
解决办法
5万
查看次数

Spring 3 RequestMapping: Get path value

Is there a way to get the complete path value after the requestMapping @PathVariable values have been parsed?

这就是: /{id}/{restOfTheUrl}应该可以解析/1/dir1/dir2/file.htmlid=1restOfTheUrl=/dir1/dir2/file.html

任何想法,将不胜感激.

spring spring-mvc request-mapping

125
推荐指数
6
解决办法
16万
查看次数

如果Spring MVC控制器方法没有返回值,返回什么?

我正在使用jQuery $.getJSON()来对我简单的Spring MVC后端进行异步调用.大多数Spring控制器方法如下所示:

@RequestMapping(value = "/someURL", method = RequestMethod.POST)
public @ResponseBody SomePOJO getSomeData(@ModelAttribute Widget widget,
    @RequestParam("type") String type) {
    return someDAO.getSomeData(widget, type);
}   
Run Code Online (Sandbox Code Playgroud)

我设置了一些东西,以便每个控制器都返回@ResponseBodyJSON,这是客户端所期望的.

但是当请求不应该向客户端返回任何内容时会发生什么?我能有......吗:

@RequestMapping(value = "/updateSomeData" method = RequestMethod.POST)
public @ResponseBody void updateDataThatDoesntRequireClientToBeNotified(...) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

如果没有,这里使用的语法是什么?提前致谢!

java jquery spring-mvc

124
推荐指数
3
解决办法
11万
查看次数

Spring MVC - 如何在Rest Controller中将简单的String作为JSON返回

我的问题基本上是对这个问题的后续行动.

@RestController
public class TestController
{
    @RequestMapping("/getString")
    public String getString()
    {
        return "Hello World";
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面,Spring会在响应体中添加"Hello World".如何将String作为JSON响应返回?我知道我可以添加引号,但这更像是一个黑客.

请提供任何示例来帮助解释这个概念.

注意:我不希望这直接写入HTTP响应体,我想以JSON格式返回String(我使用我的Controller与RestyGWT,它要求响应是有效的JSON格式).

java rest spring json spring-mvc

123
推荐指数
8
解决办法
31万
查看次数