原来不用spring boot,我的写法如下:
public void dealResult( HttpServletRequest request, HttpServletResponse response)
throws Exception {
long sartTime=System.currentTimeMillis();
while(true){
Student student= getStudentResult();
if(student!=null) {
response.setContentType("text/html;charset=UTF-8");
Writer writer = response.getWriter();
String ret =student.getName()+“is ok";
writer.write(ret);
writer.close();
if(student.isAllOver)
break;
if(=System.currentTimeMillis()-startTime>60000)
{
response.setContentType("text/html;charset=UTF-8");
Writer writer = response.getWriter();
String ret = “Deal over time";
writer.write(ret);
writer.close();
break;
}
}
}因为是一个链接请求后,会有多个返回,如果改成spring boot的方式,该如何改呢?单独返回一个,我知道是如下的写法:@PostMapping
@RequestMapping(value = {"/"}, produces = {"application/json; charset=UTF-8"})
public ResponseEntity<Object> dealResult(HttpServletRequest request) {
return new ResponseEntity<>("Deal over time", HttpStatus.OK);
}
public void dealResult( HttpServletRequest request, HttpServletResponse response)
throws Exception {
long sartTime=System.currentTimeMillis();
while(true){
Student student= getStudentResult();
if(student!=null) {
response.setContentType("text/html;charset=UTF-8");
Writer writer = response.getWriter();
String ret =student.getName()+“is ok";
writer.write(ret);
writer.close();
if(student.isAllOver)
break;
if(=System.currentTimeMillis()-startTime>60000)
{
response.setContentType("text/html;charset=UTF-8");
Writer writer = response.getWriter();
String ret = “Deal over time";
writer.write(ret);
writer.close();
break;
}
}
}因为是一个链接请求后,会有多个返回,如果改成spring boot的方式,该如何改呢?单独返回一个,我知道是如下的写法:@PostMapping
@RequestMapping(value = {"/"}, produces = {"application/json; charset=UTF-8"})
public ResponseEntity<Object> dealResult(HttpServletRequest request) {
return new ResponseEntity<>("Deal over time", HttpStatus.OK);
}
你这也太死板了...
你可以先把要返回的字符串循环拼起来,再一次返回不就行了...
1,HTTP 响应只允许有一次,即便是你是基于 Servlet 的也不会发生两次
2,Spring Boot 其实一个启动容器,你可以确切的说是用 Spring MVC 怎么用。如果你想按照Spring MVC 的方式写你上面的代码依然很简单,只要在方法里面注入 response 就可以了,代码如下。不过建议你认真看看Spring Boot 相关的资料,感觉你这是很多概念都没有理解清楚。
```java
@RequestMapping(value = "/test", method = RequestMethod.GET)
public void dealResult(HttpServletResponse response)
throws Exception {
long startTime = System.currentTimeMillis();
while (true) {
Student student = new Student();
if (student != null) {
response.setContentType("text/html;charset=UTF-8");
Writer writer = response.getWriter();
String ret = student.getName() + "is ok ";
writer.write(ret);
writer.close();
if (student.isAllOver) {
break;
}
if (System.currentTimeMillis() - startTime > 1000) {
response.setContentType("text/html;charset=UTF-8");
Writer writer2 = response.getWriter();
writer2.write("Deal over time ");
writer2.close();
break;
}
}
}
}
```小编为订阅号「码匠笔记」号主,先后就职于 ThoughtWorks、阿里巴巴等互联网公司的经验分享,包含但不限于 JAVA、并发编程、性能优化、架构设计、小程序、开源软件等。有兴趣可以关注一波,一起学习、讨论。
HTTP 响应只允许有一次?为啥你代码里的response可以循环返回呢
HTTP 响应只允许有一次?为啥你代码里的response可以循环返回呢
我只是一模一样的把你的修改成了Spring Boot的 这样你自己就知道怎么修改了