当我调用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/