要点:我有一个JSP表单(MyForm.JSP
),它接受用户输入并将其传递给我的第一个servlet("/myfirstservlet"
)。
此Servlet将用户输入值的SQL插入处理到我的Fruits
表中,然后将用户重定向到我的结果servlet("/results"
)。
然后,我的结果servlet检查一个"ADD"
参数,如果结果为“ true”(即等于"success"
),它将最终将用户重定向到我的Results JSP(Results.JSP
),存储在路径WEB-INF/MyFolder/Results.jsp
中。
我的JSP表单(MyForm.JSP
)也存储在以下路径中:WEB-INF/MyFolder/MyForm.jsp
一切在控制台上运行都没有错误,但是为什么我的Results JSP(现在具有URL:"results?ADD=success"
???
我的JSP表单(MyForm.JSP
):
<form action="myfirstservlet" do="POST">
<input type="text" name="fruit"><br>
<input type="text" name="color"><br>
<input type="submit" value="Submit">
</form>
我的第一个servlet("/myfirstservlet"
):
protected void doPost(...){
String fruit = request.getParameter("fruit");
String color = request.getParameter("color");
String sql = "INSERT INTO fruits (fruit, color) VALUES" + "(\"" + fruit + "\", \"" + color + "\");";
utilitySQL.sqlInsert(sql); // My utility class that handles sql inserts
response.sendRedirect("results?ADD=success");
}
我的结果servlet("/results"
):
protected void doPost(...){
response.setContentType("text/html");
if (request.getParameter("ADD").equals("SUCCESS"))
request.getRequestDispatcher("WEB-INF/MyFolder/Results.jsp").forward(request, response);
}
我的结果JSP(Results.JSP
):
<body>
<h1>Results JSP</h1>
<%ArrayList<String> list = (ArrayList<String>)
utilitySQL.sqlSelectAll("Select * FROM fruits;");
for(int i=0; i<list.size(); i++)
{%>
<div><%=list.get(i)%></div>
<%
}%>
</body>
1。)我是否正确实施了重定向后获取?
2。)为什么结果JSP上没有任何显示?
编辑:
如果我从结果Servlet("ADD=success"
)中删除了"/results"
参数条件,那么我的Results JSP将显示MySQL数据库中的值,但是如果我将"ADD=success"
参数添加到我的结果中JSP不显示任何内容。为什么会这样?
答案 0 :(得分:1)
由于此行,您什么都没看到:
if (request.getParameter("ADD").equals("SUCCESS"))
.equals()
区分大小写。您正在检查“成功”,但正在传递“成功”作为值。
这意味着该行将永远不会运行:
request.getRequestDispatcher("WEB-INF/MyFolder/Results.jsp").forward(request, response);
因此为空白页。
您可以以大写形式发送值,也可以将.equals()
更改为.contains()
答案 1 :(得分:1)
首先将"/myfirstservlet"
中的response.sendRedirect("results?ADD=success");
替换为response.sendRedirect("/results?ADD=success");
"/results"
servlet方法中的第二个应该是doGet
。您使用了doPost
。在此Servlet中,不要使用if (request.getParameter("ADD").equals("SUCCESS"))
if (request.getParameter("ADD").equalsIgnoreCase("SUCCESS"))
。
我认为您的result.jsp
中的
<% ArrayList<String> list = (ArrayList<String>) utilitySQL.sqlSelectAll("Select * FROM fruits;");
有问题。因为您正在获取对象列表。
<% ArrayList<Your class name> list = (ArrayList<String>) utilitySQL.sqlSelectAll("Select * FROM fruits;");
在本节中
for(int i=0; i<list.size(); i++)
{%>
<div><%=list.get(i)%></div>
<%
}%>
您正在尝试打印完整的对象。