JSP培訓(4)——執行個體:登入功能、jsp:forward標籤、jsp:include標籤、include指令、EL、c:i

來源:互聯網
上載者:User

 

目標:
l         進一步體會JSP應用;
l         掌握運算式語言的使用;
l         掌握標準標籤庫的使用;
l         掌握<jsp:forward>標籤的使用;
l         掌握<jsp:include>標籤的使用;
l         掌握<%@ include指令的使用。
內容:
l         通過登入功能進一步體會JSP技術,在開發過程中介紹運算式語言和JSTL的用法;
l         在此基礎上對代碼進行修改,體會相關標籤的用法。
1、 要完成的功能
完成登入功能,首先需要一個用於輸入登入資訊的介面(使用者名稱和口令),然後有處理檔案完成判斷,處理檔案用於判斷登入資訊是否合法。如果成功,使用登入成功的介面進行響應,如果登入失敗,應該專向登入失敗的介面。
假設:因為資料庫連接相關內容沒有介紹,不能進行真正的登入驗證,所以假設使用者名稱為zhangsan,口令為lisi的時候登入成功,其它情況登入失敗。
2、 首先編寫登入介面
    <%@ page contentType="text/html;charset=gb2312"%>
請登入<br>
<form name="form1" method="post" action="login_process.jsp">
   使用者ID:<input type="text" name="userid"><br>
   口令:<input type="password" name="userpass"><br>
       <input type="submit" value="登入"><input type="reset" value="重設">
</form>
注意:這裡沒有進行用戶端驗證,主要強調其它內容,在實際處理中,只要涉及輸入資訊就應該進行驗證。
 
使用者輸入資訊之後,需要對使用者輸入的資訊進行驗證,判斷使用者輸入資訊是否正確,這裡不用嵌入Java代碼的方式,使用JSTL中的標籤完成判斷,下面介紹如何判斷。
3、 如何判斷?
在JSTL的核心標記庫(core)有一個if標記用於完成判斷。使用方法如下:
1)需要把兩個壓縮包jstl.jar和standard.jar放到WEB-INF/lib下面;
2)聲明核心標記庫
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core”%>
3)使用if標記
基本文法格式:<c:if test=”” [var=”” scope=””]> 滿足條件的時候要執行的代碼</c:if>
test屬性是必須的,是if的判斷條件,var屬性和scope屬性是可選的,如果希望把判斷的結果儲存起來,可以使用var屬性和scope屬性,var屬性指出儲存的變數的名字,scope指出變數的作用範圍。test的內容應該是結果為true或者false的運算式語言的值。要使用運算式語言,下面介紹運算式語言的基本用法。
4、 運算式語言(EL)的使用
基本格式:開始標記“${” 結束標記“}”
中間的內容可以是某個對象,某個對象的屬性,若干對象的運算結果。
例(訪問請求參數中的值):
如果要操作使用者輸入的userid,可以使用 ${param.userid} 相當於下面的代碼:
<%
   String userid = request.getParameter(“userid”);
   out.println(userid);
%>
例(訪問某個對象的屬性):
如果要操作某個對象的屬性,假設在request中存在對象user(類型為User),user有屬性userid,要直接顯示這個userid,如何顯示,採用EL,可以寫成${user.userid},相當於下面的代碼:
<%
User user = request.getAttribute(“user”);
String userid = user.getUserid();
out.println(userid);
%>
注意:對屬性的訪問方式也可以使用中括弧,例如可以使用下面的代碼訪問userid:
${user[“userid”]}
兩種情況下只能使用中括弧的方式:
l         如果屬性中包含了特殊符號,例如“.”;
l         如果要訪問的屬性是一個變數。
例(在運算式語言中進行運算):
如果要進行運算:${3+5}
下面介紹在EL中可以使用那些運算。
5、 EL中可以進行哪些運算?
常用的運算如下:
1)數**算
+-*/ %
2)關係運算
> >= == <= < !=
3) 邏輯運算
&& || !
6、 如何編寫這個處理常式login_process.jsp
登入成功或者失敗的時候直接提示。
<%@ page contentType="text/html;charset=gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:if test="${param.userid==/"zhangsan/" && param.userpass==/"lisi/"}">
   登入成功!
</c:if>
<c:if test="${param.userid!=/"zhangsan/" || param.userpass!=/"lisi/"}">
   登入失敗!
</c:if>
    當登入失敗或者成功的時候,會顯示不同的提示。但是正常情況下在需要採用專門的頁面進行響應,下面介紹用法。
7、 在伺服器端,如何?頁面之間的跳轉?
在JSP中提供了一個標籤<jsp:forward>,該標籤可以完成跳轉。
文法格式:<jsp:forward page=”目標檔案”/> page屬性指出要跳轉到哪個檔案。
作用:當檔案執行到這個標籤的時候,會轉向執行目標檔案,這個標籤之後的內容不再執行。
例:有兩個檔案a.jsp和b.jsp,a.jsp檔案內容如下
aaaa
<jsp:forward page=”b.jsp”/>
AAAAA
b.jsp檔案的內容是
BBBBBB
如果現在訪問a.jsp,會得到結果:
BBBBBBB
注意:在<jsp:forward>標籤之前的內容雖然執行了,但是沒有顯示,之後的內容沒有執行。地址欄中顯示是第一個檔案的名字,顯示的內容是第二個檔案的。
8、 修改登入處理檔案
<%@ page contentType="text/html;charset=gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:if test="${param.userid==/"zhangsan/" && param.userpass==/"lisi/"}">
   <jsp:forward page="success.jsp"/>
</c:if>
<c:if test="${param.userid!=/"zhangsan/" || param.userpass!=/"lisi/"}">
   <jsp:forward page="failure.jsp"/>
</c:if>
另外需要編寫success.jsp和failure.jsp
9、 success.jsp的內容
<%@ page contentType="text/html;charset=gb2312"%>
登入成功的介面!
10、              failure.jsp的內容
<%@ page contentType="text/html;charset=gb2312"%>
登入失敗的介面!
需要注意標籤的結束符。標籤都有開始標誌和結束標誌,例如<c:if test=”true”> 內容</c:if> 也可以寫成:
<c:if test=”true”/>
第二種方式中標籤體為空白。
Html代碼格式要求不嚴格,可以沒有結束符,例如:<input type=”text” name=”userid”>
11、              <jsp:include>標籤
把上面的login_process.jsp檔案中的<jsp:forward修改為<jsp:include查看效果。
文法格式:與<jsp:forward>相似.
作用:包含。在程式運行到這個標籤的時候,轉向執行目標檔案,目標檔案執行完之後繼續執列標籤之後的內容。與方法調用非常像。
與<jsp:forward>的區別:對於標籤之前的內容,jsp:forward之前的內容執行,但不顯示,jsp:include執行也顯示。對於標籤之後的內容,jsp:forward不執行了,jsp:include執行並且要顯示。
12、              include指令
文法格式與page指令相同:<%@ include file=”目標檔案”%>
作用:包含目標檔案。
具體為:運行之前,把目標檔案的內容拷貝到include指令所在的位置,形成一個檔案,然後運行。
與<jsp:include>的區別:<jsp:include>所在的檔案和要轉向的檔案分別執行,<%@ include指令是在轉換的時候,把目標檔案的內容拷貝到當前檔案,啟動並執行時候只有一個檔案。
用途:把各個頁面的共用部分單獨做成檔案,例如網站的logo,和著作權連絡方式等資訊。在需要的時候使用<%@ include>指令進行包含。
例:需要在每個網頁中顯示著作權資訊。
這時候需要把著作權資訊單獨寫在一個檔案中,下面是著作權資訊檔contact.jsp的內容:
<%@ page contentType="text/html;charset=gb2312"%>
光大電腦培訓學校著作權
電話:888888
在login.jsp中包含該著作權資訊之後的代碼如下:
<%@ page contentType="text/html;charset=gb2312"%>
請登入<br>
<form name="form1" method="post" action="login_process.jsp">
   使用者ID:<input type="text" name="userid"><br>
   口令:<input type="password" name="userpass"><br>
       <input type="submit" value="登入"><input type="reset" value="重設">
</form>
<%@ include file="contact.jsp"%>
 
如果出現錯誤:
org.apache.jasper.JasperException: /login.jsp(8,0) Invalid byte 1 of 1-byte UTF-8 sequence.需要設定編碼方式,在分頁檔的上面添加語句:<%@ page contentType="text/html;charset=gb2312"%>
參考教材:《Java Web程式設計基礎教程》

JSP培訓目錄:

JSP培訓(1)——概述
JSP培訓(2)——運行原理、文檔結構、簡單輸入輸出
JSP培訓(3)——用戶端驗證、常用輸出方式、JSTL基本用法
JSP培訓(4)——執行個體:登入功能、jsp:forward標籤、jsp:include標籤、include指令、EL、c:if
JSP培訓(5)——使用JavaBean完成商務邏輯
JSP培訓(6)——使用Servlet作為控制器實現MVC模式
JSP培訓(7)——使用JDBC完成動態驗證、採用MVC完成資料查詢
JSP培訓(8)——添加功能和分頁顯示
JSP培訓(9)——使用MVC模式完成刪除和修改功能
JSP培訓(10)——使用JavaBean封裝對資料庫的訪問、串連池的配置和使用
JSP培訓(11)——Java Web中的安全控制
JSP培訓(12)——Java Web應用國際化
JSP培訓(13)——異常處理
JSP培訓(14)——購物車執行個體(上)
JSP培訓(15)——購物車執行個體(下)及小結
返回JSP培訓目錄李緒成 CSDN Blog:http://blog.csdn.net/javaeeteacher想加我為好友請點擊:http://student.csdn.net/invite.php?u=124362&c=7be8ba2b6f3b6cc5
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.