代码行冲突问题

代码行冲突问题

http://img1.sycdn.imooc.com//climg/5f7bcc7a099b187814890725.jpg

图中圈起来的代码不注释掉的话在console中就无法显示两个数组,并且折线图就无法显示,这是为什么?重生冲突的原因是什么?还有就是在/rt这个页面却可以显示

package com.imooc.total;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSON;

/**
 * Servlet implementation class RequestTotalServlet
 */
@WebServlet("/rt")
public class RequestTotalServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public RequestTotalServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

 /**
  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  ServletContext context = request.getServletContext();
  List< String > timeList = (List)context.getAttribute( "timeList" );
  List<Integer> valueList = (List)context.getAttribute( "valueList" );
  response.setContentType( "text/html;charset=utf-8" );
//  response.getWriter().println( timeList.toString() );
//  response.getWriter().println( "<br/>" );
//  response.getWriter().println( valueList.toString() );
  
  Map result = new HashMap();
  result.put( "timeList", timeList );
  result.put( "valueList", valueList );
  String json = JSON.toJSONString( result );
  response.getWriter().println( json );
  

 }

 /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  doGet(request, response);
 }

}


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

如果/rt这个页面可以显示数据,那说明前后端通信没有问题,但是关键的一点是,前端页面如何处理后端传来的数据。你要显示在console里,应该是用了ajax吧?具体怎么处理的?是直接把后端的数据console.log一次性全部在控制台输出么?

后端传了多次数据

response.getWriter().println( timeList.toString() );
response.getWriter().println( "<br/>" );
response.getWriter().println( valueList.toString() );

这个是普通字符串,不是json格式,console不能直接解析为数组。

Map result = new HashMap();
result.put( "timeList", timeList );
result.put( "valueList", valueList );
String json = JSON.toJSONString( result );
response.getWriter().println( json );

这个是标准json格式,如果单独传这个段数据,console可以直接解析为数组。

两次加起来,组合后也同样不是json格式,只能认为是普通字符串,console不能解析。

  • 被抱的树 提问者 #1
    谢谢你! total.html都是跟视频里老师做的一样的。 就是普通字符串组跟json格式为什么会冲突?他们不是各自输出吗?为什么会影响到json格式的输出
    2020-10-06 17:36:53
  • 慕丝1539783 回复 提问者 被抱的树 #2
    并不是各自输出,response.getWriter().println();这个语句不管执行多少次,最后都是一次性返回给客户端。客户端一次请求,服务器也只会有一次响应。所以客户端收到的数据,是完整response,这个response里包括了字符串和json,不能按照json格式解析。
    2020-10-06 17:56:25
  • 被抱的树 提问者 回复 慕丝1539783 #3
    谢谢大哥的答疑
    2020-10-06 19:04:29
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师