java - 从 JSP Scriptlet 迁移到 Servlet

标签 java mysql database jsp servlets

所以我正在尝试使用数据库和图表做一些基本的事情。我的 JSP 代码已经可以工作了,但我想将其转移到 servlet/其他资源,因为我听说在 jsp 中完成所有操作是一个非常糟糕的主意。我对 servlet 进行了一些研究,但我对它们如何工作/与 jsps 和其他文件链接感到非常困惑。

我知道我希望将 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>

最佳答案

使用多层来构建Web应用程序肯定有很大的好处。以下回复将非常有用:

关于java - 从 JSP Scriptlet 迁移到 Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10744680/

相关文章:

php - 如何在 PHP 、 Mysql 中选择最后插入的行

php - Doctrine :仅在关系不存在的地方查询?

python - 替换大于 Pandas 数据框中数字的值

wpf - 我应该使用 XML 文件还是数据库?

java - 使用 Arduino 和 Java 库的 Base64 没有相同的结果

java - 在构建原生 quarkus 图像时,我应该如何(重新)构建我的代码以启用运行时类初始化?

java - 具有等号对象的列表的排列 - Java

php - 左连接计数

java - 如何将类路径变量回显到文件

带有加密文件系统的 MySQL 数据库用于存储图像