Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从JSP脚本迁移到servlet_Java_Mysql_Database_Jsp_Servlets - Fatal编程技术网

Java 从JSP脚本迁移到servlet

Java 从JSP脚本迁移到servlet,java,mysql,database,jsp,servlets,Java,Mysql,Database,Jsp,Servlets,所以我试着用数据库和图表做一些基本的东西。我已经让我的JSP代码正常工作了,但是我想把它转移到servlet/其他资源中,因为我听说在JSP中做任何事情都是一个非常糟糕的主意。我对servlet做了一些研究,但我对它们如何与JSP和其他文件工作/链接感到非常困惑 我知道我希望将d3.js代码保留在.jsp中(可能),但我主要关心的是数据库连接代码 这是我的JSP: <%@ page language="java" import="java.sql.*, java.util.*"%&

所以我试着用数据库和图表做一些基本的东西。我已经让我的JSP代码正常工作了,但是我想把它转移到servlet/其他资源中,因为我听说在JSP中做任何事情都是一个非常糟糕的主意。我对servlet做了一些研究,但我对它们如何与JSP和其他文件工作/链接感到非常困惑

我知道我希望将d3.js代码保留在.jsp中(可能),但我主要关心的是数据库连接代码

这是我的JSP:

    <%@ page language="java" import="java.sql.*, java.util.*"%>

<html>
    <head>
        <title>D3 Test</title>
        <script type="text/javascript" src="d3/d3.v2.js"></script>
        <style type="text/css">
        </style>
    </head>
    <body>

    <%
    Class.forName("com.mysql.jdbc.Driver");



Connection con=null;
ResultSet rst=null;
Statement stmt=null;
try{
String url="jdbc:mysql://localhost:3306/testdb?user=root&password=password";

int i=1;
con=DriverManager.getConnection(url);
stmt=con.createStatement();
rst=stmt.executeQuery("select * from test ");

%>
        <script type="text/javascript">

            var dataset = [ 
    <% while (rst !=null && rst.next()) { %>
       <%=rst.getInt("ID")%>, 
    <% }%>
    ]; 

            var w = 500;
            var h = 340;
            var barPadding = 1;
            /*var xScale = d3.scale.linear()
                                 .domain([0, d3.max(dataset, function(d) { return d[0]; })])
                                 .range([padding, w - padding * 2]);

            var yScale = d3.scale.linear()
                                 .domain([0, d3.max(dataset, function(d) { return d[1]; })])
                                 .range([h - padding, padding]);*/
            var svg = d3.select("body")
                        .append("svg")
                        .attr("width", w)
                        .attr("height", h);
            svg.selectAll("rect")
                .data(dataset)
                .enter()
                .append("rect")
                .attr("id", "rect1")
                .attr("x", function(d, i) {
                        return i * (w / dataset.length);
                    })
                .attr("y", function(d) {
                    return h - d*4;
                })
                .attr("width", w/ dataset.length - barPadding)
                .attr("height", function(d) {
                    return d * 4;
                })
                .attr("fill", function(d) {
                    return "rgb(0, 0, " + (d * 10) + ")";
                });

            svg.selectAll("text")
                .data(dataset)
                .enter()
                .append("text")
                .text(function(d) { 
                    return d;
                })
                .attr("x", function(d, i) {
                    return i * (w / dataset.length)+ (75 / dataset.length);
                })
                .attr("y", function(d) { 
                    return h - (d * 4) + 15;
                })
                .attr("font-family", "sans-serif")
                .attr("font-size", "11px")
                .attr("fill", "white");
                <%   
    } finally {
        if (stmt != null) { stmt.close(); }
    }%>
        </script>

    </body>
</html>

D3试验
变量数据集=[
, 
]; 
var w=500;
var h=340;
var=1;
/*var xScale=d3.scale.linear()
.domain([0,d3.max(数据集,函数(d){返回d[0];})])
.范围([填充,w-填充*2]);
var yScale=d3.scale.linear()
.domain([0,d3.max(数据集,函数(d){返回d[1];})])
.范围([h-填充,填充])*/
var svg=d3.选择(“主体”)
.append(“svg”)
.attr(“宽度”,w)
.attr(“高度”,h);
svg.selectAll(“rect”)
.数据(数据集)
.输入()
.append(“rect”)
.attr(“id”、“rect1”)
.attr(“x”,函数(d,i){
返回i*(带数据集长度);
})
.attr(“y”,函数(d){
返回h-d*4;
})
.attr(“宽度”,w/dataset.length-条形填充)
.attr(“高度”,功能(d){
返回d*4;
})
.attr(“填充”,功能(d){
返回“rgb(0,0,+(d*10)+”);
});
svg.selectAll(“文本”)
.数据(数据集)
.输入()
.append(“文本”)
.text(功能(d){
返回d;
})
.attr(“x”,函数(d,i){
返回i*(w/dataset.length)+(75/dataset.length);
})
.attr(“y”,函数(d){
返回h-(d*4)+15;
})
.attr(“字体系列”、“无衬线”)
.attr(“字体大小”,“11px”)
.attr(“填充”、“白色”);

毫无疑问,使用多个层构建Web应用程序具有巨大的好处。以下回答将非常有用:


JSP如何与servlet通信?当然,通过发出HTTP
请求或AJAX调用

您的直觉是好的:JSP中的scriptlet代码是一个非常糟糕的主意

您不必以某种方式跳入框架泥潭。甚至在没有框架的情况下忍受这样做的痛苦也是有价值的。下次你会很感激的

找出执行查询需要传递给servlet的内容。通过将
发布到servlet URL来实现。servlet将获取请求参数名称/值对,将它们绑定到查询,将结果集映射到对象或集合中,并将其添加到页面、请求或会话范围中进行呈现。它还将说明下一个要显示的页面应该是什么


简单的豌豆。祝你好运。

我这里有一个简单的例子:

查看它的方式是将JSP文件简单地视为页面应该是什么样子的模板。无论在哪里,只要你有一些动态的东西,一些从页面视图到页面视图的变化,你就可以放置位置保持器。然后,在servlet中填充这些占位符。填充完这些值后,您将其转发给JSP,JSP将获取这些值并将它们放在页面中的适当位置


阅读JSTL和JSP表达式语言。

这是一个diablo 3项目吗,如果是的话,我很乐意帮忙=PSadly,no.d3.js是数据驱动文档,是一个用javascript创建SVG图像的库。但是当我在做这件事的时候,我必须输入d3,我会退缩,因为我想停止工作,去玩!哈哈,呸,瘸。回到话题,你想获得多大的权重?如今,大多数Web应用程序都使用框架来绕过许多恼人的servlet架构。servlet架构并不意味着太重。这只是为了让我学习。我可能会尝试做一个测试网站,或者在我弄明白了一切之后做些什么,但仅此而已。不是真的。两者都可能是真的。我希望你投赞成票,接受答案。感谢是伟大的,但投票和接受对我们双方都有好处。在我的脑海里,它们相互矛盾,因为我通常把好运与某个人在可能困难的事情上的前进联系在一起。我是开玩笑说的,因为我觉得很有趣。不幸的是,我不能提高投票率,因为我需要超过15个声誉,而我没有。不用担心,你接受了答案。这就是你应该做的。