好 我有一个带登录表单的jsp页面,我正在使用servlet,如果用户名和密码正确,servlet会将用户重定向到另一个页面,否则它会再次将他重定向到登录页面
当我使用正确的用户名和密码登录时,我完全重定向到了reservation.jsp但当我在表单中输入错误的用户名或密码时,当我点击提交按钮时页面变为空白
这是servlet
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.mysql.jdbc.PreparedStatement;
/**
* Servlet implementation class LogServlet
*/
@WebServlet("/LogServlet")
public class LogServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public LogServlet() {
super();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html");
String name=request.getParameter("name");
String password=request.getParameter("password");
PreparedStatement ps = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/log",
"root","");
ps = (PreparedStatement) conn.prepareStatement("select nom_client,username,password from client where username = ? and password = ?");
ps.setString(1, name);
ps.setString(2, password);
rs=ps.executeQuery();
try {
while(rs.next()){
if(password.equals(rs.getString("password")) && name.equals(rs.getString("username"))){
HttpSession session=request.getSession();
session.setAttribute("name",name);
PrintWriter out=response.getWriter();
request.getRequestDispatcher("reservation.jsp").include(request, response);
}
else{
response.sendRedirect("/login.jsp");
}}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.close();
}
catch(Exception e){e.printStackTrace();}
}
}
答案 0 :(得分:2)
使用request.getRequestDispatcher("login.jsp").include(request, response);
,它会将您重定向到登录页面。
request.getContextPath()
如果您在这种情况下到达登录页面,请将response.sendRedirect(request.getContextPath()+"/login.jsp");
和request
个对象传递到您的jsp页面。
response
答案 1 :(得分:1)
使用它。
request.getRequestDispatcher("/login.jsp").forward(request,response);
正如您使用
request.getRequestDispatcher("reservation.jsp").include(request, response);
成功登录后转发并且正常工作,为什么不以这种方式转发失败后呢?
使用哪个意思
request.getRequestDispatcher("/login.jsp").include(request, response);
答案 2 :(得分:0)
UUID = a category UUID
你在其他部分试过上面的代码吗? 我认为它应该有用
答案 3 :(得分:0)
问题是response.sendRedirect(...)
没有预先绑定资源(jsp)的上下文路径。
在这两种情况下都尝试使用request.getRequestDispatcher(...)
。
答案 4 :(得分:0)
问题可能在这里:
response.sendRedirect是( “/ login.jsp的”);
这意味着在重定向响应的位置标题中,您将拥有:
http://localhost:8080/login.jsp
如果您将其更改为:
response.sendRedirect是( “login.jsp的”);
相对于您的webabb上下文路径:
http://localhost:8080/app/login.jsp
尝试使用firebug或类似程序并追踪请求/响应,您应该快速找到。并且确保在层次结构中需要jsp文件。
希望这有帮助
答案 5 :(得分:0)
而不是给予 response.sendRedirect是( “\ login.jsp的”); 使用response.sendRedirect(“/ yourprojectname /”); 并在web.xml中的welcome文件中将login.jsp设置为欢迎文件。
答案 6 :(得分:-1)
添加此
response.sendRedirect("/yourprojectname/");
并将login.jsp设置为web.xml中的欢迎文件
答案 7 :(得分:-1)
数据库的响应是空的,所以我不得不将这个案例添加到课程中(通过if/else
条件)。