寫在前面
本文主要的內(nèi)容是完成網(wǎng)頁登錄頁面設計,以及判斷用戶名密碼是否正確,如果正確,進入下一頁面,并輸出sessionID,若錯誤,則在登錄頁面給出用戶名或密碼錯誤提示,并在登錄頁面顯示訪問次數(shù)。
登錄頁面
任務一:完成登錄頁面設計
登錄頁面(userLogin.jsp)
- 用戶名輸入框
- 密碼輸入框
- 提交內(nèi)容到登錄處理頁面(loginSuccess.jsp)
使用html中的<form>標簽
<form method="post" action="loginSuccess.jsp">
...
</form>
此標簽可以將在標簽范圍內(nèi)input的內(nèi)容通過post方式轉發(fā)到action地址中,action="url(地址)"
<input type="text" name="userName">
此標簽表示創(chuàng)建一個輸入框,這個輸入框的內(nèi)容輸入的是文本,即text,該輸入框的名字被命名為userName。
<input type="password" name="password">
相似地,創(chuàng)建一個輸入框,此輸入框輸入密碼,即不可見,輸入后會以圓點代替,該輸入框的名字被命名為password
捕獲來自當前請求中的mess內(nèi)存儲的信息,將其賦值給當前的頁面變量mess,(這兩個mess并不相同)
將mess信息用<p>標簽輸出出來
代碼:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登錄頁面</title>
</head>
<body>
<%
String mess = null;
if(request.getAttribute("mess")!=null){
mess = (String)request.getAttribute("mess");
}
%>
<form method="post" action="loginSuccess.jsp">
<label>userName:</label>
<input type="text" name="userName" ><br>
<label>password:</label>
<input type="password" name="password" ><br>
<input type="submit" value="登錄" >
<p sytle="color: red"><%= mess != null ? mess : "" %></p>
</form>
</body>
</html>
登錄處理頁面(loginSuccess.jsp)
在該頁面中,我們需要判斷用戶輸入的用戶名與密碼是否與正確,這里我們設置,正確的用戶名為:“系統(tǒng)管理員”,正確密碼為:“123”。
<%@ page language="java" contentType="text/html; charset=UTF=8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>loginSuccess</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");//解決提交方式post時,中文亂碼問題
String userName = null;
String userPwd = null;
if(request.getParameter("userName")!=null){
userName=request.getParameter("userName");
userPwd = request.getParameter("password");
}
if(userName.equals("系統(tǒng)管理員")&&userPwd.equals("123")){
//當用戶名和密碼正確時
request.setAttribute("mess", "登陸成功");
//進入index.jsp頁面
response.sendRedirect("index.jsp");
}else{
//當用戶名或密碼不正確時
request.setAttribute("mess", "用戶名或密碼錯誤");
request.getRequestDispatcher("userLogin.jsp").forward(request, response);
}
%>
<h3>userName:<%= userName %></h3>
<h3>password:<%= request.getParameter("password") %></h3>
</body>
</html>
在該代碼中:
用<%? %>括起來的代碼為Java代碼,在這里,我們完成一些動態(tài)的操作:
if(request.getParameter("userName")!=null)判斷輸入的用戶名是否為空,若不為空,則獲取內(nèi)容。
if(userName.equals("系統(tǒng)管理員")&&userPwd.equals("123"))判斷輸入的用戶名和密碼是否正確,若正確,則:
?request.setAttribute("mess", "登陸成功");將“登錄成功”字符串賦給mess,存儲在當前請求中。則其它頁面可以通過request.getAttribute("mess",mess)將請求中得mess捕獲,放在自己頁面的變量mess中。
response.sendRedirect("index.jsp");通過轉發(fā)跳轉至index.jsp
至于index中有什么,我們后續(xù)再說
若錯誤,則:
request.setAttribute("mess", "用戶名或密碼錯誤");
request.getRequestDispatcher("userLogin.jsp").forward(request, response);
同樣的,將“用戶名或密碼錯誤”字符串賦給請求的mess中,下一條代碼是通過重定向找到相應的位置,在此代碼中,將重定向返回userLogin.jsp地址,并返回當前請求以及回應。(當前請求中包含了剛剛儲存的mess)
效果
至此,我們完成了登錄以及處理登錄的情況。打開tomcat服務器,如下圖所示:
?頁面被訪問了:11次? ?這段先不管他,我們后面再完成此任務,先輸入錯誤的代碼:
?在當前頁面輸出“用戶名或密碼錯誤”。這個字符串是在登錄處理頁面經(jīng)過判斷后得出的字符串,通過getAttribute()方法在當前頁面捕獲,然后輸出出來。
任務二:
完成index.jsp頁面,輸出當前會話(session)ID,并捕獲當前用戶的用戶名輸出出來
先上代碼:
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Index</title>
</head>
<body>
<%
String userName = (String)session.getAttribute("userName");
String userPwd = (String)session.getAttribute("userPwd");
session.setMaxInactiveInterval(3*60);//設置session失效時間
%>
<h1>index</h1>
<h1>welcome user: <%= userName != null ? userName : ""%></h1>
<p>sessionId: <%= session.getId() %></p>
</body>
</html>
?在之前登錄頁面以及登錄處理頁面時,我們使用request來捕獲信息,現(xiàn)在我們使用session來捕獲信息。
會話(session):一段時間內(nèi),單個客戶端與Web服務器的一連串相關交互過程。
在一個會話中,客戶端可能會多次請求訪問一個頁面,也有可能請求訪問各種不同的服務器資源,服務器會為該用戶創(chuàng)建唯一的會話,會話將已知延續(xù)到用戶訪問結束(瀏覽器關閉可以結束會話)。
會話的結束可以是關閉瀏覽器,也可以是設置一段時間,若在這段時間內(nèi)未產(chǎn)生過請求,則服務器會自動關閉該會話。
在index.jsp中,我們設置了session.setMaxInactiveInterval(3*60);即3min未發(fā)送過請求,則關閉會話。
通過會話捕獲信息:
String userName = (String)session.getAttribute("userName");
String userPwd = (String)session.getAttribute("userPwd");
相應地,如果想要用會話捕捉信息,則必須先給出信息,因此,我們返回登錄處理頁面,若當我們登錄成功時,我們將用戶名與密碼通過session給出。
在登錄成功判斷中加上如下語句:
session.setAttribute("userName", userName);
session.setAttribute("userPwd",userPwd);
將用戶名輸出出來,
并
使用session.getId()方法獲取sessionID,將ID輸出出來
效果:
?注銷按鈕先不用管。
在此頁面中,我們將用戶名輸出出來,并將sessionID輸出出來。文章來源:http://www.zghlxwxcb.cn/news/detail-416917.html
這篇博客先發(fā)兩個任務的解法,下一篇再發(fā)另外的任務。文章來源地址http://www.zghlxwxcb.cn/news/detail-416917.html
到了這里,關于Java學習day3——Javaweb登錄頁面設計(1)(含JSP代碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!