可複製直接測試
Login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--method不填默認是get-->
<form action="check.jsp" method="post">
用 戶名:<input type="text" name="user"/><br/>
密碼 : <input type="password" name="pwd"/><br/>
<input type="submit" value="登錄">
</form>
</body>
</html>
check.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");//設置post的參數編碼
//取參數
String name = request.getParameter("user");
String pwd = request.getParameter("pwd");
if(name.equals("hj")&&pwd.equals("123")){
request.getRequestDispatcher("success.jsp").forward(request,response);//請求轉發,轉發後地址欄不變
//response.sendRedirect("success.jsp");//重定向參數丟失,導致success.jsp不能正確顯示name
}else{
out.print("error");
}
%>
</body>
</html>
success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String user = request.getParameter("user");//接收參數
out.print("Welcome"+user);//輸出,如果用重定向,那麼結果會顯示爲null
%>
</body>
</html>
大體流程:
1. 用戶在客戶端(login.jsp瀏覽器端)填好參數user和pwd 點擊提交,信息被髮送到check.jsp
2. check.jsp 接收兩個參數 ,進行驗證,如果確認是正確的用戶,進行請求轉發轉發到success.jsp
3. success.jsp 回顯Weclome注意: 此時地址欄顯示的是check.jsp
請求轉發和重定向的區別:
1.
請求轉發地址欄不變
重定向地址欄會改變
2.
請求時的數據,在請求轉發時會保留
重定向並不保留
get與post區別:
1. get在地址欄上會顯示所有的請求數據,(有長度限制,4-5kb;不能上傳大文件)
2. 文件上傳操作必須是post,post的數據不會顯示在地址欄相對安全