gpt4 book ai didi

java - 调用 servlet 时不转发

转载 作者:行者123 更新时间:2023-12-02 07:33:43 25 4
gpt4 key购买 nike

当我调用 servlet 时,它不会转到所需的 jsp 页面。下面是两个代码

日志中有一个错误说明了这一点,但这并不是不转发到目的地的真正原因

     java.sql.SQLException: Bad format for number 'bb' in column 4.

使用此代码调用 servlet,非常确定 url 映射

    <a href="/Store/DisplayOrders"> Display Orders</a>



package admin;

import data.ConnectionPool;
import data.DBUtil;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
*
* @author One
*/
public class DisplayOrdersServlet extends HttpServlet {

@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();

ConnectionPool pool = ConnectionPool.getInstance();
Connection connection = pool.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;

ArrayList al = null;
ArrayList ordersList = null;
ordersList = new ArrayList();

String query = "select * from orders order by order_id";

try {
ps = connection.prepareStatement(query);
rs = ps.executeQuery(query);


while (rs.next()) {

al = new ArrayList();

al.add(rs.getString("order_id"));
al.add(rs.getString("product_quantity"));
al.add(rs.getString("product_name"));
al.add(rs.getDouble("user_name"));
al.add(rs.getDouble("user_address"));
out.println("al :: " + al);
ordersList.add(al);
}

request.setAttribute("ordersList", ordersList);

String url = "/admin/orders.jsp";

RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher(url);
dispatcher.forward(request, response);
}

catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.closeResultSet(rs);
DBUtil.closePreparedStatement(ps);
pool.freeConnection(connection);

}
}

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);

}
}

jsp页面

            <%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page language="java" import="java.util.*;"%>
<!DOCTYPE html>
<HTML>
<HEAD>
<TITLE>Orders CRUD</TITLE>

</HEAD>

<BODY>
<br>
<table>

</table>
<br>
<table >
<tr><td></td></tr>

<tr><td ><a href="/Store/admin/#.jsp">#</a></td></tr>
<tr><td></td></tr>
<tr>
<td>order_id</td><td>product_quantity</td><td>product_name</td>
<td>user_name</td><td>user_address</td>
<td>Edit</td><td>Delete</td>
</tr>
<%
int count=0;
List viewList = new ArrayList();
Iterator viewItr;

if(request.getAttribute("ordersList")!=null && request.getAttribute("ordersList")!="")
{
List orderList = (ArrayList)request.getAttribute("ordersList");
Iterator itr = orderList.iterator();

while(itr.hasNext())
{



viewList = (ArrayList)itr.next();
int product_id = Integer.parseInt(viewList.get(0).toString());
viewItr = viewList.iterator();
%>
<tr>
<%
while(viewItr.hasNext())
{

%>
<td><%=viewItr.next()%></td>

<%

}
count++;
%>
<td><input type="button" name="edit" value="Edit" onclick="editRecord(<%=product_id%>);" ></td>
<td><input type="button" name="delete" value="Delete" onclick="deleteRecord(<%=product_id%>);"></td>
</tr>
<%
}
}
if(count==0)
{
%>
<tr><td > </td></tr>
<tr><td>No Record Avaliable</td></tr>
<%
}
%>
<tr><td></td></tr>
</table>
</BODY>
</HTML>

最佳答案

try {
...
al.add(rs.getDouble("user_name")); <-- Exception thrown
al.add(rs.getDouble("user_address"));
...
String url = "/admin/orders.jsp";
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher(url);
dispatcher.forward(request, response);
} catch (SQLException e) { <-- Exception catch
e.printStackTrace();

当遇到异常时,会跳过异常后面的代码,直到捕获到异常。重定向代码根本不执行。也就是说,以替身形式获取姓名或地址是不寻常的。

关于java - 调用 servlet 时不转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12553844/

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