pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
//用于获取当登陆失败后 转发过来的登录名
<%
String name=request.getParameter("loginName");
%>
<form action="dologin.jsp" method="post">
<p>
用户名:<input type="text" name="LoginName" value="<%=name %>"/>
</p>
<p>
密码:<input type="password" name="LoginPwd"/>
</p>
<p>
<button type="submit">
登录
</button>
</p>
</form>
</body>
</html>
response 是交给客户端之后让客户端重新发起一个新的请求
转发是直接交给dologin 去处理
找到原因了 15行写的太挨着了
<body>
<%
request.setCharacterEncoding("UTF-8");
String name=request.getParameter("LoginName");
String pwd=request.getParameter("LoginPwd");
if(name.equals("张三") && pwd.equals("123456")){//登录成功
response.sendRedirect("index.jsp");
}else{//登录失败
// response.sendRedirect("login.jsp"); 重定向会发送新请求 原有数据会完全丢失
//用户名需要保留
//且当登录失败时需要提示给用户
RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
request.setAttribute("msg", "用户名或密码错误");
rd.forward(request,response);//会把原有的请求 重新转发到 login.jsp
}
%>
</body>
RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
rd.forward(request,response);//会把原有的请求 重新转发到 login.jsp
转发实质上有两个代码
一个是request 请求
另一个是 forward