与问题一样,使用的是Spring 2.5;@ResponseBody
在Spring 3.0中引入
@see最新 Spring 中的 ResponseBody JavaDocs
回到问题。
在我的 Spring 控制器中,我如何返回一个字符串...
根据Spring Blog Post的简单答案,您需要将OutputStream
其作为参数添加到控制器方法中。
您基于 XML 的配置应如下所示
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="your.controllers"/>
</beans>
你的控制器应该是这样的
package your.controllers;
@Controller
public class YourController {
@RequestMapping(value = "/yourController")
protected void handleRequest(OutputStream outputStream) throws IOException {
outputStream.write(
"YOUR DESIRED STRING VALUE".getBytes()
);
}
}
最后,如果您想在没有任何注释的情况下进行操作,那么;
您的基于 XML 的配置应如下所示
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean name="/yourController" class="your.controllers.YourController"/>
</beans>
你的控制器应该是这样的
package your.controllers;
public class YourController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
response.getOutputStream().write(("YOUR DESIRED STRING VALUE").getBytes());
return null;
}
}