我有两个jsp文件 index.jsp 和 login.jsp 和 profile.jsp 。 这里index.jsp有两个文本字段名和密码。
当我提供正确的名称和密码登录显示成功并转到 success.jsp 但是当我提供错误的密码或名称时,我希望错误消息将显示在同一索引页面中“无效”姓名或通过“。我的代码无效 login.jsp 用于用户名和密码验证。请帮我解决此问题。
我搜索过RequestDispatcher,但它在servlet类中使用。但我想在我的jsp文件中执行。我的代码
的index.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Example</title>
</head>
<body>
<form method="post" action="login.jsp">
<center>
<table border="1" width="30%" cellpadding="3">
<thead>
<tr>
<th colspan="2" align ="left">Login Here</th><h5><%=request.getAttribute("errorMessage") %></h5>
</tr>
</thead>
<tbody>
<tr>
<td>User Name</td>
<td><input type="text" name="uname" value="" /></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="pass" value="" /></td>
</tr>
<tr>
<td><input type="submit" value="Login" /></td>
<td><input type="reset" value="Reset" /></td>
</tr>
<tr>
<td colspan="2">Yet Not Registered!! <a href="reg.jsp">Register Here</a></td>
</tr>
</tbody>
</table>
</center>
</form>
</body>
的login.jsp
<%@ page import ="java.sql.*" %>
<%
String userid = request.getParameter("uname");
String pwd = request.getParameter("pass");
Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/test", "postgres", "root");
Statement st = con.createStatement();
ResultSet rs;
rs = st.executeQuery("select * from member where uname='" + userid + "' and pass='" + pwd + "'");
if (rs.next()) {
session.setAttribute("userid", userid);
//out.println("welcome " + userid);
//out.println("<a href='logout.jsp'>Log out</a>");
response.sendRedirect("success.jsp");
} else {
//out.println("Invalid password <a href='index.jsp'>try again</a>");
request.setAttribute("errorMessage", "Invalid user or password");
response.sendRedirect("index.jsp");
}
%>
答案 0 :(得分:0)
在您的其他声明中,请勿使用response.sendRedirect()
因为所有已保存的属性都会丢失,因为它是新请求,请改用requestDispatcher.forward()
:
req.setAttribute("errorMessage", "Invalid user or password");
req.getRequestDispatcher("/index.jsp").forward(req, res);
答案 1 :(得分:0)
答案在你的代码本身。为了成功你已经使用了session.setAttribute以便它正常工作,并且对于登录失败“你使用了request.setAttribute这就是为什么它无法正常工作。转到会话而不是请求或用户requestDispatcher转发你的请求。你有你使用的豪宅RequestDispatcher但它不起作用,除非你编写完整的语句,比如调用requestDispatcher的forward方法,否则它将无效。
答案 2 :(得分:0)
你可以在索引页面中以表格
进行 <div style="color:red">${errorMessage}</div>