java - 使用 servlet 和 jsp 显示表格的问题
问题描述
我有下面的servlet代码:
变量 form_date、to_date 和 link_name 是从另一个 jsp 传递的。form_date 和 to_date 是从日期范围搜索中获得的。链接名称是从下拉选择中获得的。
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=windows-1252");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<body>");
out.println("<h1>IP Core Downtime</h1>");
out.println("<TABLE cellpadding=\"15\" border=\"1\" style=\"background-color: #ffffcc;\">");
out.println("<tr>\n"
+ " <td>VENDOR NAME</td>\n"
+ " <td>LINK NAME</td>\n"
+ " <td>BASKET</td>\n"
+ " <td>TICKET NUMBER</td>\n"
+ " <td>IMPACTED SERVICE</td>\n"
+ " <td>CIRCUIT ID</td>\n"
+ " <td>ISSUE REPORTED</td>\n"
+ " <td>BEGIN TIME</td>\n"
+ " <td>END TIME</td>\n"
+ " <td>RCA</td>\n"
+ " </tr>");
try {
String link_name = request.getParameter("link_name");
String form_date = request.getParameter("form_date");
String to_date = request.getParameter("to_date");
Date beginDateParsed = new SimpleDateFormat("yyyy-mm-dd").parse(form_date);
String beginDate = beginDateParsed.toString();
Date endDateParsed = new SimpleDateFormat("yyyy-mm-dd").parse(to_date);
String endDate = endDateParsed.toString();
String driver = "oracle.jdbc.driver.OracleDriver";
String connectionUrl = "jdbc:oracle:thin:@//localhost:1521/";
String database = "orclpdb";
String userid = "";
String password = "";
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
Class.forName(driver);
connection = DriverManager.getConnection(connectionUrl + database, userid, password);
statement = connection.createStatement();
String sql = "select VENDOR_NAME,LINK_NAME,BASKET,TICKET_NUMBER,IMPACTED_SERVICE,CIRCUIT_ID,ISSUE_REPORTED,BEGIN_TIME,END_TIME,RCA from AATESTUSER.IP_CORE_AVAILABILITY_1 where BEGIN_TIME between To_Date(" + beginDate + ",'DD-MM-YY') and To_Date(" + endDate + ",'DD-MM-YY') and LINK_NAME='" + link_name + "'";
resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
out.println("<TR><TD>resultSet.getString(2)</TD>\n"
+ " <TD>resultSet.getString(3)</TD>\n"
+ " <TD>resultSet.getString(4)</TD>\n"
+ " <TD>resultSet.getString(5)</TD>\n"
+ " <TD>resultSet.getString(6)</TD>\n"
+ " <TD>resultSet.getString(7)</TD>\n"
+ " <TD>resultSet.getString(8)</TD>\n"
+ " <TD>resultSet.getString(9)</TD>\n"
+ " <TD>resultSet.getString(10)</TD>\n"
+ " </TR>");
}
connection.close();
} catch (Exception e) {
e.printStackTrace();
out.println("Driver caused Exception : " + e.getMessage() + "");
}
out.close();
}
servlet 需要根据 jsp 日期范围搜索和下拉选择条件生成表。问题是只生成表格标题。表的主体显示错误 ORA-00907:缺少右括号。纠正代码的调整会带来不同的预言错误。
解决方案
我认为您需要修改查询字符串以将它们包装起来dates
,single quotes(')
因为它们是字符串,并确保to_date
函数中指定的格式与传递的字符串变量(beginDate
和endDate
)的格式相匹配:
String sql = "select VENDOR_NAME,LINK_NAME,BASKET,TICKET_NUMBER,IMPACTED_SERVICE,CIRCUIT_ID,ISSUE_REPORTED,BEGIN_TIME,END_TIME,RCA from AATESTUSER.IP_CORE_AVAILABILITY_1 where BEGIN_TIME between To_Date('" + beginDate + "','DD-MM-YY') and To_Date('" + endDate + "','DD-MM-YY') and LINK_NAME='" + link_name + "'";
请注意,我用单引号包裹了beginDate
and 。endDate
干杯!!
推荐阅读
- javascript - React:如何在 ReactJS 中以 asc 和 desc 对数据进行排序
- python - 如何通过python发送带有标头的GET请求
- java - 具有多个子报表的 Jasper 报表
- php - 在自定义请求 Laravel 中获取模型实例
- javascript - 滚动到元素时猫头鹰轮播自动播放不起作用
- python - 从 python 字典中获取所有子键的列表
- excel - 将数据从多个工作簿复制和组织到另一个工作簿
- html - HTML 输入字段右填充
- typescript - next.js/typescript/webpack 的问题:“未处理的拒绝(ReferenceError):未定义 XYZ”
- ios - LAContext.biometryType 总是返回 LABiometryTypeTouchID