【问题标题】:Simple Java Web Application: Table Not Loading On Startup简单的 Java Web 应用程序:启动时未加载表
【发布时间】:2016-10-08 12:06:04
【问题描述】:

我正在使用 Eclipse 和 Apache 开发一个简单的应用程序,其中我使用 Java、JSP 和 HTML 显示了一个使用 MySQL 创建的与产品有关的表(带有列 id、name 和 price)。我还有一个带有按钮的文本框,它允许过滤表格,仅显示价格高于文本框中插入的价格的产品。

包括过滤器在内的一切似乎都运行良好。但是,当我第一次运行该应用程序时,完整的表格并没有像应有的那样显示。它仅在我使用过滤器时显示。我不确定,但过滤器元素的脚本和表格之间似乎存在一些冲突,因为如果我在 JSP 文件中为过滤器元素注释脚本,表格会在启动时像它应该的那样加载。

这是加载表格和搜索元素的 JSP 类的代码(带有一些 Bootstrap 样式):

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1" import="java.sql.Connection,java.sql.ResultSet,java.sql.DriverManager,project1.components.DBConnector, project1.components.Filter"%>
<!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=ISO-8859-1">
<title>Product</title>
<style type="text/css">
    <%@include file="bootstrap/css/bootstrap.css" %>
    <%@include file="bootstrap/css/bootstrap-theme.css" %>
</style>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="bootstrap/js/jquery.js"></script>
<script src="bootstrap/js/bootstrap.js"></script>
</head>
<body>
<% 
DBConnector dbc = new DBConnector();
Connection conn = dbc.connect();
String query = "select * from product";
%>
</body>

<form method="post">

<div class="col-xs-2 col-xs-offset-5">
<input type="text" class="form-control" name="value" value=<%=request.getParameter("firstinput")%>>
<br><br>
<input type="submit" class="form-control" name="submit" value="Filter">
<% 
    if(!request.getParameter("value").isEmpty()){
        String val = request.getParameter("value");
        Filter ft = new Filter();
        query = ft.filterByValue(val);
    }
%>
</div>
<br></br>
<table class = 'table table-hover'>
<tr>
<td>Id</td>
<td>Name</td>
<td>Product</td>
</tr>
<%
try
{               
    ResultSet rs = dbc.obtainTable(query);

    while(rs.next())
{

%><tr>
   <td><%=rs.getInt("ID") %></td>
   <td><%=rs.getString("NAME") %></td>
   <td><%=rs.getFloat("PRICE") %></td>
   </tr>     <%

}
%>
    </table>
    <%
    rs.close();
    conn.close();
    }
catch(Exception e)
{
    e.printStackTrace();
    }




%>

</form>

</html>

连接到数据库并使用给定查询获取数据的 Java 类将加载到上一个 JSP 文件中定义的表上:

package project1.components;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;

public class DBConnector {

    String url = "jdbc:mysql://localhost:3306/products?autoReconnect=true&useSSL=false";
    String user = "root";
    String pass = "root";

    public Connection connect() throws ClassNotFoundException, SQLException{
        Class.forName("com.mysql.jdbc.Driver");
        return (Connection) DriverManager.getConnection(url,user,pass); 
    }

    public ResultSet obtainTable(String query) throws ClassNotFoundException, SQLException{
        Connection cn = this.connect();
        Statement stmt= (Statement) cn.createStatement();
        return stmt.executeQuery(query);
    }
}

最后,过滤器本身是用 Java 定义的:

package project1.components;

import java.sql.ResultSet;
import java.sql.SQLException;

public class Filter {

    public String filterByValue(String val) throws ClassNotFoundException, SQLException{
        int num = Integer.parseInt(val);
        String query = null;
        if(num >= 0){
            query = "select * from product where price >" + val;
        }
        else{
            query = "select * from product";
        }
        return query;
    }
}

任何帮助将不胜感激。

【问题讨论】:

    标签: java html mysql jsp


    【解决方案1】:

    能否请您替换以下内容:

    if(!request.getParameter("value").isEmpty()){

    作者:

    if(request.getParameter("value")!=null &amp;&amp; !request.getParameter("value").trim().isEmpty()){

    看看结果?

    【讨论】:

    • 嗨@B.Pal 欢迎您!请您接受答案,以便您的问题的读者知道哪个答案是正确的,否则他们没有线索。
    猜你喜欢
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    相关资源
    最近更新 更多