Java 调用servlet时没有转发
当我调用servlet时,它不会转到所需的jsp页面。下面是这两个代码 日志中有这样一个错误,但这并不是不转发到目的地的真正原因Java 调用servlet时没有转发,java,jsp,jakarta-ee,servlets,Java,Jsp,Jakarta Ee,Servlets,当我调用servlet时,它不会转到所需的jsp页面。下面是这两个代码 日志中有这样一个错误,但这并不是不转发到目的地的真正原因 java.sql.SQLException: Bad format for number 'bb' in column 4. 使用此代码调用servlet,非常确定url映射 <a href="/Store/DisplayOrders"> Display Orders</a> package admin
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>
servlet不转发到JSP页面有一个很好的理由:转发前的一条语句抛出SQLException,因此跳过其余指令,并执行catch块。因为转发是在抛出异常的语句之后的指令的一部分,所以由于异常而被跳过,所以不进行转发 异常可能是由以下原因引起的:
rs.getDouble("user_name");
我怀疑你的用户的名字是3.452和67.43-
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();
当您获得异常时,将跳过异常后的代码,直到捕获该异常为止。根本不执行重定向代码。也就是说,作为替身获得姓名或地址是不寻常的。谢谢!我猜我是通过复制displayproduct servlet而达到目的的,我真的忽略了在最后一个小时里每次我都在检查:这真是复制代码的经典案例。伙计,你真是一个java怪物,我看到了你的个人资料和忍者小队你的个人资料很有趣哈哈,我希望我从大学开始就一直编码,我停下来,在另一个领域工作,现在我又回来了。不知道他们是否为brain os发明了java安装程序哈哈哈,谢谢。很高兴知道法语原文的英文翻译至少已经阅读过一次:-谢谢!我想我是通过复制DisplayProductServlet而达到这一目的的,并且每次我在最后一个小时里不断检查时都忽略了这一点:现在这真的是复制代码的经典案例。我如何才能了解更多有关此异常业务的信息?或者有什么建议?