国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

JBuilder2005實戰(zhàn)JSP之登錄頁面

2024-09-05 00:20:23
字體:
供稿:網(wǎng)友
  通過file->new...->web->雙擊jsp圖標,彈出創(chuàng)建jsp向?qū)У膶υ捒颍缦聢D所示:


圖 3 通過向?qū)?chuàng)建login.jsp

  ·web module:如果一個工程下有多個web模塊,你可以通過這兒指定jsp所要加入到的web模塊,因為我們的工程中只有一個webmodule,所以是向?qū)⒛J設(shè)置為webmodule。

  ·name :鍵入jsp文件名,你可以鍵入.jsp后綴,也可以不寫后綴,直接鍵入login就可以了。

  generate sample bean選項勾選后jbuilder將生成一個示例的bean并在jsp中引入這個bean。對于初學(xué)者來說,可以通過該選項查看jsp如何引用一個bean,而generate error page選項將自動為jsp創(chuàng)建一個配套的錯誤處理jsp文件,這里,我們不勾選它們。

  直接點擊finish創(chuàng)建login.jsp,login.jsp文件出現(xiàn)在內(nèi)容窗格的編譯器中,如下圖所示:


圖 4 向?qū)?chuàng)建的jsp文件

  jsp編譯窗口的左右兩邊都有一個可以通過 按鈕控制的豎欄,左邊欄為放置jsp標簽和html標簽的面板,可以像可視化ui設(shè)計器中一樣用拖拽方式往jsp文件中放置各種標簽,如上圖中,我們從面板中選擇表單的html標簽放置到login.jsp文件中。

  而右邊豎欄中是jsp文件中當前光標所在標簽的屬性編譯器,如下圖所示:


圖 5 設(shè)置jsp標簽屬性編輯器

  屬性編輯器是動態(tài)的,光標移到不同的標簽上,屬性編輯器就顯示這個標簽所有可設(shè)置的屬性。如上圖中對應(yīng)的是html 表單標簽的屬性編輯器,我們將其action屬性設(shè)置為switch.jsp,指定用post方式發(fā)送請求數(shù)據(jù)。

  我們在login.jsp中提供一個用戶名下拉框、一個密碼輸入框以及一個登錄提交按鈕,其代碼如下:

  代碼清單 4 login.jsp

1. <%@page contenttype="text/html; charset=gbk" %>
2. <html>
3. <head>
4. <title>login</title>
5. </head>
6. <body bgcolor="#ffffff">
7. <表單 name="表單1" method="post" action="switch.jsp">
8. 用戶名: <select name="userid">
9. <option value="" selected>--登錄用戶--</option>
10. <option value="100000">姜子牙</option>
11. <option value="100001">鮑叔牙</option>
12. <option value="100002">豎牙</option>
13. </select>
14. 密 碼:<input name="password" type="password">
15. <input type="submit" name="submit" value="登錄">
16. </表單>

17. </body>
18. </html>

  表單標簽代表網(wǎng)頁中的一個表單,表單可以包含多個組件,這些組件的數(shù)據(jù)在網(wǎng)頁表單提交后,以http協(xié)議發(fā)送給action屬性所指定的jsp文件處理。表單的數(shù)據(jù)一般以post發(fā)送,post發(fā)送方式對數(shù)據(jù)量的大小沒有限制,且保密性更強。

  login.jsp的效果頁面如下圖所示:


圖 6 login.jsp錄入頁面

  實戰(zhàn)經(jīng)驗:

  jsp文件代碼包含靜態(tài)和動態(tài)兩部分,即一部分是html代碼,而另一部分為jsp標簽和scriptlet代碼。jsp一般是動態(tài)邏輯的網(wǎng)頁,jbuilder對jsp標簽及scriptlet這些動態(tài)代碼部分支持得非常好,你可以使用codeinsight和taginsight等工具快速而正確地完成編碼,同時還可以對jsp進行編譯調(diào)試。在jsp靜態(tài)html代碼編寫及可視化設(shè)計方面,jbuilder卻顯得力不從心,dreamweaver在靜態(tài)代碼和可視化設(shè)計方面明顯優(yōu)于jbuilder。

  事情的復(fù)雜促進了分工,分工的精細促進了專業(yè)的發(fā)展,在編寫jsp時,并不是一旦擁有jbuilder就別無所求了。韓信善兵、蕭何善謀,如果能夠?qū)reamweaver和jbuilder結(jié)合起來,用dreamweaver開發(fā)jsp的可視化部分,用jbuilder開發(fā)jsp的動態(tài)代碼部分,兩者互補有無,相得益彰,jsp開發(fā)工作將變得更加行云流水。

  將用戶列表改為動態(tài)

  目前創(chuàng)建的login.jsp有一個缺陷,假設(shè)在數(shù)據(jù)庫后臺t_user表中添加其他的用戶時,因為用戶名下拉框是靜態(tài)的代碼,新創(chuàng)建的用戶并不會出現(xiàn)在頁面中,因此有必要將用戶名列表改為動態(tài)的代碼,用數(shù)據(jù)庫表t_user的記錄動態(tài)產(chǎn)生下拉框的數(shù)據(jù)。

  我們通過userlist.ava類來完成這個工作,在工程中創(chuàng)建userlist.java,其代碼如下:

  代碼清單 5 userlist.java

1. package bookstore;
2. import java.sql.*;
3.
4. public class userlist
5. {
6.  //獲取html下拉框的用戶列表代碼
7.  public static string getuserlisthtml() {
8.   connection conn = null;
9.   stringbuffer sbuf = new stringbuffer();
10.  try {
11.   conn = dbconnection.getconnection();
12.   preparedstatement pstat = conn.preparestatement(
13.     "select user_id,user_name from t_user");
14.   resultset rs = pstat.executequery();
15.   while (rs.next()) {
16.    sbuf.append("<option value='" + rs.getstring("user_id") + "'>" +
17.    rs.getstring("user_name") + "</option>/n");
18.   }
19.   return sbuf.tostring();
20.  } catch (sqlexception ex) {
21.   ex.printstacktrace();
22.   return "";
23.  } finally {
24.   try {
25.    if (conn != null) {
26.     conn.close();
27.     conn = null;
28.    }
29.   } catch (sqlexception ex1) {
30.  }
31. }
32. }
33. }

  userlist.java只提供了一個靜態(tài)的getuserlisthtml()方法,這個方法從后臺數(shù)據(jù)庫的t_user表中獲取用戶記錄,并生成html的select組件的選項代碼,如第16~17行所示。

  在創(chuàng)建這個類后,我們引用該類調(diào)整login.jsp的代碼,首先在page指令標簽中通過import屬性引用userlist類,然后將select選項中的內(nèi)容調(diào)整為getuserlisthtml()方法返回的值,如下圖所示:


圖 7 通過codeinsight編寫代碼

  通過表達式標簽替換原靜態(tài)的html代碼,值得提起的是,在jsp中也可以象在編寫一般的java類中一樣使用codeinsight輸入代碼。調(diào)整后的login.jsp的代碼如下所示,用粗體表示:

  代碼清單 6 調(diào)整后的login.jsp代碼

1. <%@page contenttype="text/html; charset=gbk" import="bookstore.userlist"%>
2. <html>
3. <head>
4. <title>login</title>
5. </head>
6. <body bgcolor="#ffffff">
7.  <表單 name="表單1" method="post" action="switch.jsp">用戶名:
8.   <select name="userid">
9.    <option value="" selected>--登錄用戶--</option>
10.    <%=userlist.getuserlisthtml()%>
11.   </select>
12.   密 碼:<input name="password" type="password">
13.   <input type="submit" name="submit" value="登錄">
14. </表單>
15. </body>
16. </html>

  保存login.jsp后,在內(nèi)容窗格login.jsp文件標簽中點擊右鍵,選擇web run using defaults,jbuilder 將啟動tomcat 5.0應(yīng)用服務(wù)器,運行于8080端口上,編譯并運行l(wèi)ogin.jsp文件,如下圖所示:


圖 8 在jbuilder中運行l(wèi)ogin.jsp

  jbuilder自動切換到web view視圖頁中,顯示頁面的運行效果。但jbuilder的瀏覽器對網(wǎng)頁的支持效果很弱,也不支持javascript腳本。所以在運行l(wèi)ogin.jsp后,最好通過ie來查看網(wǎng)頁的效果,你只需要打開ie,并將jbuilder中的訪問login.jsp的地址拷貝到ie的地址欄中就可以了,如下圖所示:


圖 9 用ie訪問jbuilder中運行的login.jsp

  此時用戶名的下拉框中的用戶已經(jīng)是動態(tài)的用戶列表中,當t_user表中添加、刪除用戶時下拉框的用戶也會相應(yīng)地改變。

  在運行jsp前最好先單獨編譯一個這個jsp文件:在內(nèi)容窗格的jsp文件標簽上點擊右鍵,在彈出的菜單中選擇make "xxx.jsp",即可完成對jsp文件的編譯,及時發(fā)現(xiàn)錯誤。jsp文件和java文件在編輯時,最大的區(qū)別是java程序文件一有錯誤就會在編輯器和結(jié)構(gòu)窗格中列出,但jsp文件的有些錯誤需要通過編譯才能發(fā)現(xiàn)。

  提示:

  由于編譯jsp文件需要先將其轉(zhuǎn)換為servlet文件,然后再編譯這個中間servlet文件,發(fā)生錯誤后轉(zhuǎn)定向到j(luò)sp文件中,所以編譯一個jsp文件是比較耗時的,往往比編譯一個java文件要花好幾倍的時間。在默認的情況下,編譯一個工程時,會編譯整個工程中所有的jsp,需要消耗大量的時間。所以最好取消在編譯工程連帶編譯jsp文件的設(shè)置:通過project->project properties...->build-> 在build設(shè)置頁中取消check jsps for errors at build-time選項。在確實需要的時候再勾選這個選項,并在編譯后及時取消這個選項。通過這樣的設(shè)置將可以為你的開發(fā)贏得不少寶貴的時間。
  • 本文來源于網(wǎng)頁設(shè)計愛好者web開發(fā)社區(qū)http://www.html.org.cn收集整理,歡迎訪問。
  • 發(fā)表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發(fā)表
    主站蜘蛛池模板: 凌云县| 保靖县| 涞水县| 金湖县| 聂拉木县| 宜宾县| 雅江县| 抚宁县| 宁强县| 桂林市| 东海县| 阿拉善左旗| 仁寿县| 来安县| 大石桥市| 平泉县| 夏邑县| 泌阳县| 贺兰县| 佳木斯市| 紫云| 南郑县| 宜兰县| 常州市| 柘城县| 钟山县| 平舆县| 灵璧县| 濮阳县| 绩溪县| 武乡县| 格尔木市| 东乡| 甘孜县| 新乐市| 耒阳市| 岢岚县| 平和县| 和龙市| 普宁市| 黔西县|