如何使用 SQL 查询在 jsp 中重定向?
How to redirect in jsp using SQL queries?
实际上,当用户在提交该帖子后写 his/her 问题时,我创建了一个论坛,它重定向到保存数据库 jsp 页面。该页面被命名为 post_question.jsp
.
然后 post_question.jsp
return 到我名为 return_thread.jsp
的新页面。实际上这个页面是因为我想在用户发布 his/her 问题时制作那个东西..它必须假设 return 这个页面进入 show question list page
.
For e.g:
当用户在 Whosebug 上写下他的问题时,单击 Post your question
按钮后它会自动 return 一个页面,用户可以在该页面上查看他的问题。一样..我正在做这个过程。
所以我正在做一个类似的过程,它获取id
he/she 在论坛上写的那个问题。但问题是我想重定向我的页面。在这里你可以看到我的程序:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page language="java" import="java.sql.*" %>
<%@ page language="java" import="java.util.Date" %>
<%@ page language="java" import="java.text.SimpleDateFormat" %>
<%
String question_post_date=request.getParameter("question");
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/forum", "root", "1234");
Statement st=con.createStatement();
ResultSet rs=st.executeQuery("select * from thread_question where question_dateTime='"+question_post_date+"'");
while(rs.next()){
String question_id=rs.getString("question_id");
response.sendRedirect("http://localhost:8072/forum_website/showThread.jsp?id="+question_id);
}
}
catch(Exception e){
e.printStackTrace();
}
%>
但现在我实际上在这里挣扎。在那里你可以看到..这是一种重定向页面的方法。我卡在这里了..你能帮帮我吗?
当然,如果有帮助,我们将不胜感激!
将 while
更改为 if
并添加 return;
。为什么?因为您只能执行一次重定向,所以使用 while
是一种资源浪费,并且可能还会破坏重定向。如果在重定向之后有任何代码会打印到您想要 return
的响应,那么在重定向尝试之后停止执行。
ResultSet rs=st.executeQuery("select * from thread_question where question_dateTime='"+question_post_date+"'");
if(rs.next())
{
String question_id=rs.getString("question_id");
response.sendRedirect("http://localhost:8072/forum_website/showThread.jsp?id="+question_id);
return;
}
当 SQL 查询只能 return 一行时,始终使用 if(rs.next())
而不是 while(rs.next())
,并始终确保 SQL 查询只能return 一行,而你期望它只有 return 一行。
此外,页面顶部的开始 %>
和结束 <%
之间的空行可能会阻止重定向发生(即它可能会设置 headers 并开始写回复)。尝试删除空行。您也可以考虑将您的导入移动到文件的底部,因为 Java 不关心您将它们放在哪里。但是,如果您将它们放在底部,那么 %>
和 <%
之间的空格将不会像在顶部那样在您的重定向尝试之前设置 headers。
或者,更好的是,将它变成一个 Servlet 而不是 JSP,这样您就不需要求助于任何类似的东西了。像这样访问数据库的代码无论如何都应该在 Servlet 中。
实际上,当用户在提交该帖子后写 his/her 问题时,我创建了一个论坛,它重定向到保存数据库 jsp 页面。该页面被命名为 post_question.jsp
.
然后 post_question.jsp
return 到我名为 return_thread.jsp
的新页面。实际上这个页面是因为我想在用户发布 his/her 问题时制作那个东西..它必须假设 return 这个页面进入 show question list page
.
For e.g:
当用户在 Whosebug 上写下他的问题时,单击 Post your question
按钮后它会自动 return 一个页面,用户可以在该页面上查看他的问题。一样..我正在做这个过程。
所以我正在做一个类似的过程,它获取id
he/she 在论坛上写的那个问题。但问题是我想重定向我的页面。在这里你可以看到我的程序:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page language="java" import="java.sql.*" %>
<%@ page language="java" import="java.util.Date" %>
<%@ page language="java" import="java.text.SimpleDateFormat" %>
<%
String question_post_date=request.getParameter("question");
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/forum", "root", "1234");
Statement st=con.createStatement();
ResultSet rs=st.executeQuery("select * from thread_question where question_dateTime='"+question_post_date+"'");
while(rs.next()){
String question_id=rs.getString("question_id");
response.sendRedirect("http://localhost:8072/forum_website/showThread.jsp?id="+question_id);
}
}
catch(Exception e){
e.printStackTrace();
}
%>
但现在我实际上在这里挣扎。在那里你可以看到..这是一种重定向页面的方法。我卡在这里了..你能帮帮我吗?
当然,如果有帮助,我们将不胜感激!
将 while
更改为 if
并添加 return;
。为什么?因为您只能执行一次重定向,所以使用 while
是一种资源浪费,并且可能还会破坏重定向。如果在重定向之后有任何代码会打印到您想要 return
的响应,那么在重定向尝试之后停止执行。
ResultSet rs=st.executeQuery("select * from thread_question where question_dateTime='"+question_post_date+"'");
if(rs.next())
{
String question_id=rs.getString("question_id");
response.sendRedirect("http://localhost:8072/forum_website/showThread.jsp?id="+question_id);
return;
}
当 SQL 查询只能 return 一行时,始终使用 if(rs.next())
而不是 while(rs.next())
,并始终确保 SQL 查询只能return 一行,而你期望它只有 return 一行。
此外,页面顶部的开始 %>
和结束 <%
之间的空行可能会阻止重定向发生(即它可能会设置 headers 并开始写回复)。尝试删除空行。您也可以考虑将您的导入移动到文件的底部,因为 Java 不关心您将它们放在哪里。但是,如果您将它们放在底部,那么 %>
和 <%
之间的空格将不会像在顶部那样在您的重定向尝试之前设置 headers。
或者,更好的是,将它变成一个 Servlet 而不是 JSP,这样您就不需要求助于任何类似的东西了。像这样访问数据库的代码无论如何都应该在 Servlet 中。