備註:定向路徑參考request模塊代碼,
1.實現功能
模擬一個登陸頁面,實現登錄成功跳轉(重定向),
登錄失敗返回頁面並提示錯誤信息的功能
2.核心代碼
1.表單form 的action到/Login映射
<form action="<%=request.getContextPath()%>/Login" method="post">
Login
(1)重定向
resp.sendRedirect("loginSuccess.jsp?username="+username);
(2)返回原頁面
req.setAttribute("message","賬號或者密碼錯誤請重新登錄");
req.getRequestDispatcher("index.jsp").forward(req,resp);
3. 實現代碼框架
- index.jsp初始的默認jsp登錄頁面
- loginSuccess.jsp登錄成功後的頁面
- Login.java 登錄是否成功的邏輯代碼和重定向實現
4.實現代碼
- 登錄界面index.jsp
<!-- 解決中文亂碼問題 -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<h1>登錄界面</h1>
<!-- war裏面就是打包的項目所有文件,所以先找打war包的地址然後再訪問映射 -->
<form action="<%=request.getContextPath()%>/Login" method="post">
賬號<input type="text" name="username"><br>
密碼<input type="password" name="password"><br>
<input type="submit" value="提交">
</form>
<h2>
<%
//爲什麼使用request.getAttribute()?應爲Login.java 設置的是Attribute
if (request.getAttribute("message")!=null){
out.print(request.getAttribute("message"));
}
%>
</h2>
</html>
- Login.java
package com.bmft;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class Login extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("成功收到請求");
String username = req.getParameter("username");
String password = req.getParameter("password");
//等於和equals的區別
if (username.equals("root") && password.equals("123456")){
resp.sendRedirect(req.getContextPath()+"/loginSuccess.jsp?username="+username);
System.out.println("登錄成功:"+username);
}
else {
req.setAttribute("message","賬號或者密碼錯誤,請重新輸入");
//這個代碼什麼鬼(作用是返回到index.jsp頁面.)
req.getRequestDispatcher("/index.jsp").forward(req,resp);
System.out.println("失敗:"+username);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
2.登錄成功的loginSuccess.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>loginSuccess</title>
</head>
<body>
<h1>Login Success!登錄成功!</h1>
<h2>
<%
out.print("用戶:"+request.getParameter("username"));
%>
</h2>
</body>
</html>
5.頁面展示
1.登錄頁面index.jsp
2.登錄失敗後
3.登錄成功後的loginSuccess.jsp