婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > JBuilder2005實(shí)戰(zhàn)JSP之切換控制 圖文步驟

JBuilder2005實(shí)戰(zhàn)JSP之切換控制 圖文步驟

熱門(mén)標(biāo)簽:智能電話(huà)機(jī)器人銷(xiāo)售話(huà)術(shù) 汝南縣地圖標(biāo)注app 地圖標(biāo)注專(zhuān)業(yè)和非專(zhuān)業(yè) 四川正規(guī)外呼系統(tǒng)軟件 山東ai外呼電銷(xiāo)機(jī)器人好用嗎 湖北地圖標(biāo)注公司 福建電銷(xiāo)貓機(jī)器人收費(fèi) 甘肅銷(xiāo)售電銷(xiāo)機(jī)器人公司 外呼直播語(yǔ)音系統(tǒng)
表單中用戶(hù)名和密碼兩組件的數(shù)據(jù)將通過(guò)HTTP請(qǐng)求傳給服務(wù)器的switch.jsp,服務(wù)器將這些信息封裝在request對(duì)象中傳給switch.jsp,所以switch.jsp可通過(guò)request.getParameter(String paraName)來(lái)獲取這兩個(gè)值。
復(fù)制代碼 代碼如下:

String userId = request.getParameter("userId");
String password = request.getParameter("password");

  試想如果login.jsp的表單有10個(gè)以上的數(shù)據(jù)組件,則在switch.jsp中必須通過(guò)相應(yīng)數(shù)目的request.getParameter()方法獲取其值。此外,如果這些數(shù)據(jù)不是字段串類(lèi)型,而是整數(shù)或浮點(diǎn)數(shù),由于request.getParameter()方法返回的值都是String,還必須進(jìn)行類(lèi)型的轉(zhuǎn)換,這種工作不但單調(diào)乏味,還容易出錯(cuò)。

  JSP允許你通過(guò)Bean以映射的方式接收網(wǎng)頁(yè)表單的數(shù)據(jù),Bean以這個(gè)規(guī)則映射表單的數(shù)據(jù):Bean屬性名=表單數(shù)據(jù)組件名,也即所有和Bean屬性名相同的表單數(shù)據(jù)域被自動(dòng)填充到Bean中,并且完成數(shù)據(jù)類(lèi)型的轉(zhuǎn)換。如login.jsp的表單中有兩個(gè)數(shù)據(jù)組件,一個(gè)名為userId,另一個(gè)是password,定義一個(gè)擁有相同名的userId和password屬性的User.java Bean,這個(gè)Bean將可以自動(dòng)接收表單中的兩個(gè)數(shù)據(jù)組件值。

  編寫(xiě)User.java

  我們先來(lái)編寫(xiě)這個(gè)User.java的Bean,在工程中創(chuàng)建User.java,其代碼如下所示:

  代碼清單 7 User.java
復(fù)制代碼 代碼如下:

package bookstore;

public class User
{
private String userId;//用戶(hù)Id
private String password;//密碼
private String userName;//用戶(hù)名
public String getPassword() {
return password;
}
public String getUserId() {
return userId;
}
public String getUserName() {
return userName;
}
public void setPassword(String password) {
this.password = password;
}
public void setUserId(String userId) {
this.userId = userId;
}
public void setUserName(String userName) {
this.userName = userName;
}
}

  除userId和password兩屬性名,還有一個(gè)用戶(hù)名屬性u(píng)serName,這個(gè)屬性的值不是從login.jsp的表單接收的,當(dāng)用戶(hù)名密碼驗(yàn)證正確后,從數(shù)據(jù)表T_USER表中獲取用戶(hù)名保存在這個(gè)屬性中,以便其他地方引用,保存并編譯這個(gè)類(lèi)。

  提示:

  你可以通過(guò)JBuilder的Bean Express工具快速創(chuàng)建User.java的代碼,在一般情況下,你應(yīng)該通過(guò)Bean Express來(lái)創(chuàng)建Bean的屬性,這樣不但自動(dòng)產(chǎn)生get/set的屬性訪(fǎng)問(wèn)方法,還保證了Bean命名規(guī)范。


  編寫(xiě)頁(yè)面程序

  在創(chuàng)建User.java 的Bean后,我們著手創(chuàng)建switch.jsp,在switch.jsp中引用這個(gè)Bean。

  通過(guò)File->New..->W(wǎng)eb->雙擊JSP圖標(biāo)啟動(dòng)創(chuàng)建JSP向?qū)А?

1.指定swith.jsp名字


圖 10 指定switch.jsp的名字

  一直按Next到向?qū)У牡?步。

  2.引用User.java Bean


圖 11 指定JSP中引用Bean

  點(diǎn)擊Add Bean...按鈕,彈出Select a Class對(duì)話(huà)框,在對(duì)話(huà)框中選擇bookstore.User類(lèi),如下圖所示:


圖 12 選擇類(lèi)作為Bean

  按OK后,返回到向?qū)У?步的對(duì)話(huà)框,此時(shí)對(duì)話(huà)框的Bean列表中多了一行記錄,可以在ID欄中為Bean指定一個(gè)名字,在Scope中指定Bean的作用域,如下圖所示:


圖 13 引用一個(gè)Bean

  我們?yōu)閁ser的Bean取名為userBean,將其作用域設(shè)置為page域。page域即為頁(yè)面作用域,在當(dāng)前頁(yè)面范圍作用域內(nèi)可用,當(dāng)JSP返回響應(yīng),或請(qǐng)求轉(zhuǎn)到其他的JSP頁(yè)面中時(shí),都不可用了,其他3個(gè)作用域說(shuō)明如下:

  ·request作用域:當(dāng)一個(gè)請(qǐng)求產(chǎn)生直到返回響應(yīng)的范圍內(nèi)都是有效的,如a.jsp中聲明為request作用域的Bean,當(dāng)a.jsp通過(guò)<jsp:forward>轉(zhuǎn)移請(qǐng)求到b .jsp頁(yè)面中時(shí)還是可用的。

  ·session作用域:在用戶(hù)會(huì)話(huà)的周期內(nèi)都是可用的,會(huì)話(huà)周期為用戶(hù)登錄系統(tǒng)直到其退出系統(tǒng)為此。

  ·application作用域:這個(gè)作用域最長(zhǎng),表示W(wǎng)eb容器啟動(dòng)直到關(guān)閉都是有效的。

  按Next到下一步。

  3.設(shè)置運(yùn)行配置項(xiàng)

  在向?qū)У淖詈笠徊剑憧梢詾閯?chuàng)建的JSP產(chǎn)生一個(gè)運(yùn)行配置項(xiàng),雖然向?qū)?chuàng)建一個(gè)運(yùn)行配置項(xiàng)設(shè)置為默認(rèn)選項(xiàng),但筆者認(rèn)為這并不是一個(gè)合理的默認(rèn)值,建議取消create a runtime configuration設(shè)置項(xiàng),不要?jiǎng)?chuàng)建JSP的運(yùn)行配置項(xiàng),如下圖所示:


  按Finish按鈕創(chuàng)建switch.jsp文件,其代碼如下所示:

  代碼清單 8 向?qū)?chuàng)建的switch.jsp
復(fù)制代碼 代碼如下:

%@ page contentType="text/html; charset=GBK" %>
html>
head>
 title>
  switch
 /title>
/head>
jsp:useBean id="userBean" scope="page" class="bookstore.User" />
jsp:setProperty name="userBean" property="*" />
body bgcolor="#ffffff">
 h1>
  JBuilder Generated JSP
 /h1>
/body>
/html>

  第8行是引用Bean的JSP標(biāo)簽,第9行用表單的數(shù)據(jù)填充Bean的屬性值,即以名字匹配的方式將request的參數(shù)填充到Bean的屬性中,同時(shí)完成類(lèi)型轉(zhuǎn)換(只有基本數(shù)據(jù)類(lèi)型或構(gòu)造函數(shù)支持的才可以完成轉(zhuǎn)換)。在執(zhí)行完第9行后,userBean中的userId和password屬性將被設(shè)置為login.jsp頁(yè)面中所發(fā)送過(guò)來(lái)的用戶(hù)名和密碼的值。

  因?yàn)閟witch.jsp只是用于控制,并不需要顯示內(nèi)容到客戶(hù)端,所以我們?nèi)コ齭witch.jsp中的HTML代碼,將switch.jsp調(diào)整為:

  代碼清單 9 去除靜態(tài)HTML代碼后的switch.jsp
復(fù)制代碼 代碼如下:

%@ page contentType="text/html; charset=GBK" %>
jsp:useBean id="userBean" scope="page" class="bookstore.User" />
jsp:setProperty name="userBean" property="*" />

  在switch.jsp中提供一段Scriptlet,將userId和password發(fā)送到數(shù)據(jù)庫(kù)和T_USER表中的用戶(hù)比較看是否是合法的用戶(hù),根據(jù)驗(yàn)證的結(jié)果轉(zhuǎn)向不同的頁(yè)面。switch.jsp的最終代碼如下所示:

  代碼清單 10 最終的switch.jsp
復(fù)制代碼 代碼如下:

%@page contentType="text/html; charset=GBK"%>
%@page import="bookstore.*"%>
%@page import="java.sql.*"%>
jsp:useBean id="userBean" scope="session" class="bookstore.User"/>
jsp:setProperty name="userBean" property="*"/>
%
Connection conn = null;
try {
 conn = DBConnection.getConnection();
 PreparedStatement pStat = conn.prepareStatement(
  "select USER_NAME from T_USER where USER_ID=? and password = ?");
 pStat.setString(1, userBean.getUserId());
 pStat.setString(2, userBean.getPassword());
 ResultSet rs = pStat.executeQuery();
 if (rs.next()) { //密碼正確
  userBean.setUserName(rs.getString(1));//設(shè)置用戶(hù)名
  session.setAttribute("ses_userBean", userBean);//將userBean放入Session對(duì)象中
%>jsp:forward page=" welcome.jsp ">/jsp:forward>
%} else { //密碼錯(cuò)誤%>
jsp:forward page="fail.jsp">/jsp:forward>
%
  }} finally {
   if(conn != null) conn.close();
  }
%>

  ·在第2~3行中引入Scriptlet代碼中需要的類(lèi)。

  ·第7~14行代碼向數(shù)據(jù)庫(kù)發(fā)送查詢(xún)SQL語(yǔ)句并返回結(jié)果。

  ·第15行通過(guò)檢查結(jié)果集的記錄數(shù)間接判斷用戶(hù)密碼是否正確。

  ·第16~18行是用戶(hù)密碼正確的響應(yīng)代碼,首先用結(jié)果集的USER_NAME屬性填充userBean的userName屬性值,然后將userBean對(duì)象放入Session中,最后轉(zhuǎn)向welcome.jsp頁(yè)面。

  ·當(dāng)用戶(hù)輸入密碼不正確時(shí),結(jié)果集中將沒(méi)有記錄,此時(shí)rs.next()返回false,程序轉(zhuǎn)向第20行,第20行的代碼將頁(yè)面轉(zhuǎn)向到密碼輸入錯(cuò)誤的處理頁(yè)面fail.jsp。

  ·第22~24行的代碼用于關(guān)閉數(shù)據(jù)庫(kù)的連接。

  也許大家已經(jīng)發(fā)現(xiàn)雖然第9~21行會(huì)拋出SQLException異常,但我們并沒(méi)有相應(yīng)的異常捕獲塊,在標(biāo)準(zhǔn)的Java程序中將導(dǎo)致一個(gè)編譯期的錯(cuò)誤,但在JSP中卻可以順序通過(guò)編譯,這是因?yàn)镴SP頁(yè)面本身會(huì)捕獲頁(yè)面中拋出的所有異常。

  假設(shè)第11行的SQL查詢(xún)語(yǔ)句發(fā)生有錯(cuò)誤,如將用戶(hù)表名誤寫(xiě)為User(正確為T(mén)_USER),當(dāng)switch.jsp被調(diào)用后,第14行將拋出SQLException異常,此時(shí)switch.jsp將顯示出異常堆棧跡的跟蹤信息頁(yè)面,如下圖如示:

圖 14 可怕的錯(cuò)誤處理頁(yè)面

  上圖所示的錯(cuò)誤處理頁(yè)面可謂青面獠牙,面目猙獰,非常不友好,對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)這種報(bào)錯(cuò)頁(yè)面也許是適合的,因?yàn)樗峁┝嗽S多錯(cuò)誤跟蹤信息,但最終用戶(hù)是不可能接受這種粗野的出錯(cuò)頁(yè)面的。JSP允許你通過(guò)<%@ page errorPage%>為頁(yè)面指定一個(gè)專(zhuān)門(mén)處理錯(cuò)誤的JSP頁(yè)面,以便用一種友好、直觀(guān)的形式展現(xiàn)錯(cuò)誤。在下一節(jié)里,我們將創(chuàng)建一個(gè)用于處理錯(cuò)誤的JSP頁(yè)面,在創(chuàng)建之后,我們?cè)賮?lái)為switch.jsp指定錯(cuò)誤處理JSP頁(yè)面。

標(biāo)簽:梅州 南充 黔東 白銀 昌都 臨沂 肇慶 吳忠

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《JBuilder2005實(shí)戰(zhàn)JSP之切換控制 圖文步驟》,本文關(guān)鍵詞  JBuilder2005,實(shí)戰(zhàn),JSP,之,切換,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《JBuilder2005實(shí)戰(zhàn)JSP之切換控制 圖文步驟》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于JBuilder2005實(shí)戰(zhàn)JSP之切換控制 圖文步驟的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美日韩中文精品| 另类的小说在线视频另类成人小视频在线| 国产一区二区三区四| 国产精品久久久久久久久久免费看| 欧美日韩精品一区二区三区四区| 国产精品99久| 久久国产乱子精品免费女| 一区二区三区在线播| 国产片一区二区| 精品国产污污免费网站入口| 欧美一区二区三区免费在线看 | 蜜桃视频免费观看一区| 亚洲人成伊人成综合网小说| 欧美国产欧美综合| 久久精品亚洲乱码伦伦中文| 欧美成人一区二区三区片免费| 欧美性色综合网| 在线观看亚洲精品| 欧美在线观看视频一区二区三区| av一区二区三区黑人| 国产成人综合在线播放| 高清在线成人网| 波多野结衣一区二区三区| 成人av影视在线观看| 99久久久无码国产精品| 91免费观看视频| 一本色道久久综合狠狠躁的推荐 | 1024亚洲合集| 国产精品久久久久久久久免费樱桃| 欧美国产一区在线| 亚洲色图在线播放| 石原莉奈一区二区三区在线观看| 亚洲永久免费视频| 舔着乳尖日韩一区| 狠狠v欧美v日韩v亚洲ⅴ| 国产一区二区三区美女| 国产成人aaa| 成人av资源在线观看| 色老综合老女人久久久| 欧美高清视频不卡网| 久久青草欧美一区二区三区| 国产目拍亚洲精品99久久精品 | 亚洲午夜在线观看视频在线| 亚洲福利视频三区| 精彩视频一区二区三区| gogogo免费视频观看亚洲一| 欧美自拍偷拍一区| 日韩三级电影网址| 国产精品免费视频一区| 亚洲国产精品久久人人爱蜜臀 | 久久精品国产免费| 成人免费视频一区二区| 欧美亚洲国产一区在线观看网站 | 欧美性生活大片视频| 91精品国产品国语在线不卡| 久久精品日产第一区二区三区高清版 | 国产sm精品调教视频网站| 色欲综合视频天天天| 欧美成人猛片aaaaaaa| 国产精品丝袜久久久久久app| 亚洲国产精品久久一线不卡| 国产高清不卡一区二区| 欧美久久一区二区| 国产精品久久久久久久蜜臀| 日本系列欧美系列| 色老汉av一区二区三区| 久久久91精品国产一区二区精品 | 成人动漫一区二区在线| 欧美一区三区四区| 亚洲女与黑人做爰| 国产一区啦啦啦在线观看| 在线观看亚洲精品| 国产精品素人视频| 免费不卡在线视频| 欧美在线视频日韩| 成人免费在线播放视频| 国产在线一区二区| 日韩欧美一卡二卡| 日韩福利电影在线| 欧美日韩精品一区二区天天拍小说| 国产精品成人免费在线| 国模冰冰炮一区二区| 在线成人小视频| 亚洲国产欧美在线人成| 色综合天天综合| 亚洲欧洲av在线| 风间由美一区二区三区在线观看| 欧美成人激情免费网| 日本一区中文字幕| 欧美三电影在线| 亚洲免费资源在线播放| 91免费国产在线| 亚洲精品欧美综合四区| 99精品国产热久久91蜜凸| 国产精品美日韩| 国产91精品精华液一区二区三区| 日韩美一区二区三区| 日本视频中文字幕一区二区三区| 欧美日韩综合在线免费观看| 亚洲女人****多毛耸耸8| 91小视频免费观看| 一区二区在线观看视频| 欧美亚洲国产一区二区三区| 亚洲网友自拍偷拍| 欧美日韩国产高清一区二区三区 | 亚洲欧洲制服丝袜| 色播五月激情综合网| 最新热久久免费视频| 99vv1com这只有精品| 亚洲精品国产a| 欧美日韩mp4| 精品一区二区av| 国产肉丝袜一区二区| 99国产欧美另类久久久精品| 一卡二卡欧美日韩| 日韩一区二区电影网| 国产精品一区二区视频| 18欧美亚洲精品| 欧美日韩成人一区| 韩国成人福利片在线播放| 国产精品久久久久影院老司| 欧美三级乱人伦电影| 美美哒免费高清在线观看视频一区二区| 欧美成人综合网站| 波多野结衣在线一区| 亚洲国产精品一区二区www| 日韩精品一区二区三区在线观看| 国产精品亚洲综合一区在线观看| 国产精品理伦片| 欧美午夜精品理论片a级按摩| 日韩av电影天堂| 欧美激情一区二区三区在线| 91福利社在线观看| 国产一区在线观看视频| 一区二区三区国产豹纹内裤在线| 欧美一级高清片在线观看| 国产a级毛片一区| 无码av免费一区二区三区试看| 久久亚洲私人国产精品va媚药| 色悠久久久久综合欧美99| 久久99久久99精品免视看婷婷 | 国产精品久久夜| 91精品国产91综合久久蜜臀| 成人网页在线观看| 免费在线欧美视频| 亚洲激情一二三区| 国产欧美日韩视频一区二区| 5858s免费视频成人| jvid福利写真一区二区三区| 久久国产福利国产秒拍| 亚洲成av人片在www色猫咪| 国产精品视频免费| 欧美不卡一区二区三区| 在线观看一区二区视频| 成人app在线| 国产精品99久久久久久久vr| 日韩电影免费在线看| 亚洲在线观看免费| 国产精品国产三级国产有无不卡| 日韩欧美美女一区二区三区| 欧美亚洲综合网| 99亚偷拍自图区亚洲| 国产成人小视频| 国产美女久久久久| 黄一区二区三区| 日本va欧美va精品发布| 亚洲成国产人片在线观看| 亚洲精品免费视频| 亚洲精品免费在线观看| 中文字幕欧美一| 国产精品欧美精品| 国产精品久久综合| 中文字幕制服丝袜成人av| 欧美国产一区在线| 日本一区二区三区免费乱视频| 欧美精品一区二区不卡| 日韩美女主播在线视频一区二区三区 | 亚洲精品国产第一综合99久久| 国产精品乱人伦中文| 中文字幕第一区二区| 欧美激情中文字幕一区二区| 国产精品久久毛片a| 中文字幕第一区二区| 中文字幕一区二区三区在线播放 | 免费在线看一区| 美腿丝袜在线亚洲一区 | 国产日韩欧美精品电影三级在线| 精品欧美一区二区三区精品久久| 欧美电影免费观看高清完整版| 日韩欧美国产高清| 久久免费视频一区| 国产欧美日韩麻豆91| 自拍偷拍欧美激情| 亚洲成人免费视频| 精品一区二区三区免费观看| 国产成人免费在线观看| av在线播放成人| 欧美精品成人一区二区三区四区| 欧美电影精品一区二区| 国产精品免费视频一区|