gpt4 book ai didi

Java Servlet/Jsp/CanvasJs 从 Servlet 获取数据到 Jsp

转载 作者:行者123 更新时间:2023-12-01 23:22:04 25 4
gpt4 key购买 nike

您好,我是 Web 开发和 Java 新手,感谢您提前提供帮助。

我正在尝试将预定义的数据从 servlet 获取到 jsp 中的 canvasjs 图表中。

我使用 Eclipse Oxygen 和 TomCat 8.5

简而言之,我的代码如下所示:

ChartValues.java 只有变量实例化,所以我认为不值得展示

jsp文件:

<%@page import="saagnik.ChartValues"%>
<%@page import="java.util.ArrayList"%>
<%@page session="true" %>

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript"src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>

<script type="text/javascript">

window.onload = function() {

var datapoints=[];

var chart = new CanvasJS.Chart("chartContainer1",{
title:{
text: "Anzahl der Requests"
},
data: [{
type: "splineArea",
name: "Anzahl",
dataPoints: datapoints
}]
});

String test=(String)session.getAttribute("test1");

datapoints.push({x: new Date(2015, 03, 10), y: 10});

chart.render();
</script>
</header>
<body>
<div id="chartContainer1"></div>
</body>
</html>

当我评论 session 行时,程序工作正常,但当包含它时,图表将无法构建。

Servlet 文件:

    package saagnik; 
import java.io.IOException;
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 javax.servlet.http.HttpSession;

@WebServlet("/ChartServlet")
public class ChartServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

int test =10;
HttpSession session=request.getSession(true);
session.setAttribute("test1", test);

response.sendRedirect("CharttestCanvas3.jsp");

}
}

还尝试了 doGet 中的请求,例如:

ChartValues[] articles =
new ChartValues[] {new ChartValues(39500,1.5,0.5,"16/01/09/2019"), new ChartValues(49500,1.5,0.5,"17/01/09/2019")};
request.setAttribute("articles", articles);

RequestDispatcher dispatcher = request.getRequestDispatcher("CharttestCanvas3.jsp");
dispatcher.forward(request, response);

并在 Jsp 中使用

ArrayList<ChartValues> chartvalue1 =  (ArrayList<ChartValues>)request.getAttribute("chartdata");

但我得到了相同的结果。

最佳答案

我的错误是认为脚本和 scriptlet 是相似的,并且我可以在运行 jsp 文件时看到完成的图表。运行 JSP 时该值为 null。我需要在脚本中使用 Javascript 并从 servlet 运行图形才能使其正常工作。

将 Servlet 传输从 session 更改为请求。

servlet:

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

Integer value=15;
request.setAttribute("value", value);
request.getRequestDispatcher("CharttestCanvas3.jsp").forward(request, response);
}

对于 JSP,我组合了脚本和 scriptlet 以使其正常工作。

JSP:

    <%Integer value = (Integer)request.getAttribute("value");%>

<script type="text/javascript">
window.onload = function() {
.
.
.
var aa=+'<%=value%>';
datapoints.push({x: new Date(2015, 03, 10), y: aa});
chart.render();
.
.
.
</script>

脚本中是来自请求的值。通过 scriptlet=value 该值进入我的脚本,加号将 var 确定为 int。

关于Java Servlet/Jsp/CanvasJs 从 Servlet 获取数据到 Jsp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58325691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com