版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Web程序設(shè)計復(fù)習(xí)資料 JSP概述JSP(Java Server Page)由Sun Microsystems公司倡導(dǎo)、許多公司參與建立的一種動態(tài)網(wǎng)絡(luò)技術(shù)標準。由Java語言作為腳本語言。為整個服務(wù)器端Java單元提供了一個接口服務(wù)于HTTP應(yīng)用程序。Java語言最大的特點是與運行平臺無關(guān);面向?qū)ο?、高安全性和健壯性、分布式、多線程Web簡介:Web定義了Web客戶端和Web服務(wù)端如何通信HTTP簡介:Hyper Text Transfer Protocol,超文本傳輸協(xié)議。用于傳輸超文本標記語言(Hyper Text Markup Language HTML)編寫的網(wǎng)頁文件。具有支持B/S結(jié)
2、構(gòu),簡單快速,靈活,無連接,無狀態(tài)的特點。HTMLHTTP瀏覽器Web服務(wù)器數(shù)據(jù)庫B/S結(jié)構(gòu):(Browser/Server)B/S結(jié)構(gòu)是三層體系結(jié)構(gòu),B/S結(jié)構(gòu)要求客戶端只需要安裝一個瀏覽器(Browser),客戶端通過瀏覽器將請求發(fā)送給Web服務(wù)器,Web服務(wù)器負責(zé)與后端數(shù)據(jù)庫服務(wù)器進行數(shù)據(jù)通信。C/S結(jié)構(gòu):C/S是Client/Server的縮寫,C/S結(jié)構(gòu)是二層結(jié)構(gòu)平臺模式。C/S結(jié)構(gòu)要求客戶端要安裝指定的軟件,客戶端負責(zé)執(zhí)行前端的數(shù)據(jù)處理,服務(wù)端進行后端的服務(wù)處理。目前大多數(shù)的網(wǎng)絡(luò)游戲都是采用C/S結(jié)構(gòu)。C/S結(jié)構(gòu)如圖所示。B/S結(jié)構(gòu)與C/S結(jié)構(gòu)比較比較項B/SC/S服務(wù)器負荷量大小
3、維護費用小大升級方便性容易困難選擇性多少安全性高低JSP、ASP、PHP等語言都是基于B/S結(jié)構(gòu)開發(fā)系統(tǒng)軟件的技術(shù)。B/S為主流網(wǎng)站的構(gòu)成網(wǎng)站結(jié)構(gòu)一般分為3層:用戶界面交互層、應(yīng)用程序?qū)?、?shù)據(jù)庫層用戶界面交互層通常采用JSP或者HTML來創(chuàng)建界面,利用JavaScript和CSS來豐富界面效果。應(yīng)用程序?qū)又饕褂肑ava語言來處理各種不同的業(yè)務(wù)需求,在數(shù)據(jù)庫層可以通過一些存儲過程來處理數(shù)據(jù)的存儲和檢索。Servlet和JSP技術(shù)Servlet和JSP技術(shù)都是屬于Web層的技術(shù)。這兩項技術(shù)都可以解決動態(tài)網(wǎng)頁的生成問題,但最好的方式是取兩項技術(shù)各自的長處:JSP負責(zé)網(wǎng)頁表現(xiàn)設(shè)計,Servlet負責(zé)
4、跳轉(zhuǎn)控制。每一個JSP文件在執(zhí)行之前都會被轉(zhuǎn)化成Servlet文件。Servlet簡介Servlet是用Java編寫的服務(wù)端程序,它與協(xié)議和平臺無關(guān)。Servlet運行在Java Web Server上,并采用了請求響應(yīng)的模式提供服務(wù)。Servlet的生命周期:Servlet的生命周期可以分為4個階段:載入、初始化init()、執(zhí)行 service()-doGet()或doPost()、刪除 destory(); JSP簡介在傳統(tǒng)的網(wǎng)頁文件HTML中加入Java程序片段和JSP標記,就構(gòu)成了JSP網(wǎng)頁。第一個Servletsuper.init() /初始化方法;super.destory()
5、/銷毀時調(diào)用的方法;doGet和doPost是常用的處理請求方式:比較如下:doGetdoPost請求提交方式通過URL地址提交通過表單提交提交長度受限制不受安全性低相對doGet安全性稍好些第一個JSP程序JSP頁面主要由HTML和Java代碼構(gòu)成。Java代碼是通過符號加入到HTML代碼中間的。. 其他 HTML 語言 其他 HTML 語言 JSP指令,描述頁面基本信息。由“”結(jié)束。JSP聲明,相當(dāng)于Java類中的變量聲明。由“”結(jié)束。JSP表達式,用于將jsp生成的數(shù)值嵌入HTML中?!啊?。位于“”之間的代碼塊是描述JSP頁面邏輯處理的Java代碼。習(xí)題1-8:簡述JSP技術(shù)和Servl
6、et技術(shù)的區(qū)別和聯(lián)系JSP第一次運行的時候會編譯成servlet。jsp是web開發(fā)技術(shù),servelt是服務(wù)器端運用的小程序,我們訪問一個jsp頁面時,服務(wù)器會將這個jsp頁面轉(zhuǎn)變成servelt小程序運行得到結(jié)果后,反饋給用戶端的瀏覽器。servlet相當(dāng)于一個控制層再去調(diào)用相應(yīng)的javabean處理數(shù)據(jù),最后把結(jié)果返回給jsp。servlet主要用于轉(zhuǎn)向,將請求轉(zhuǎn)向到相應(yīng)的jsp頁面。 Jsp更多的是進行頁面顯示,Servlet更多的是處理業(yè)務(wù),即jsp是頁面,servlet是實現(xiàn)jsp的方法。 實驗三、1+1=第2章 JSP實現(xiàn)網(wǎng)站計數(shù)器JSP中讀取文本文件內(nèi)容JSP中讀取文本文件內(nèi)容
7、主要是通過Java的讀取文件類,由JSP通過瀏覽器顯示結(jié)果。這樣的文本讀取需要使用JDK中的BufferedReader類和FileReader類。BufferedReader類用來從字符輸入流中讀取文本并將字符存入緩沖區(qū)以便能提供字符、數(shù)組的高效讀取。常用方法如下:方法名說明Int read(char cbuf)讀字符放入數(shù)組中,返回所讀的字符Int read(char cbuf,int offset,int legnth)讀字符放入數(shù)組中的指定位置,返回所讀的字符數(shù)String readLine()讀取一文本行Void close()關(guān)閉流FileReader類用來讀取字符文件,常用方法如
8、下:方法名說明Int read()讀一個字符作為方法的返回值。如果返回值-1,表示文件結(jié)束Int read(char cbuf,int offset,int length)讀字符放入數(shù)組中的指定位置,返回所讀的字符數(shù)Void close()關(guān)閉流JSP向文本文件中寫入內(nèi)容JSP向文本文件中寫入內(nèi)容主要是通過Java寫入文件類。這樣的文本寫入需要使用JDK中的FileOutputStream類和PrintWriter類。FileOutputStream類是用來向File或FileDescriptor輸出數(shù)據(jù)的一個輸出流。完整網(wǎng)站計數(shù)器的實現(xiàn)網(wǎng)站計數(shù)器 您是第位訪問者。/也可以寫成 本章習(xí)題2-5
9、:在動態(tài)Web項目中創(chuàng)建名為test的jsp文件,在test.jsp中聲明變量String content=你好,小明!,然后在test.jsp中輸出content的內(nèi)容。關(guān)鍵代碼: 2-6:利用JSP技術(shù)實現(xiàn)在網(wǎng)頁中顯示當(dāng)前系統(tǒng)時間。關(guān)鍵代碼:或:本章實驗:一、向文本文件中寫入“Java 你好”String record=“Java 你好”;String FilePath=“c:count.txt” ; PrintWriter pw=null; pw=new PrintWriter(new FileOutputStream(FilePath); pw.write(record);pw.clo
10、se();讀取文本文件中的內(nèi)容并在頁面中顯示String record=null;String FilePath=“c:count.txt ; BufferedReader br=null;br=new BufferedReader(new FileReader(FilePath); record=br.readLine();out.println(record);pw.close();向已有數(shù)據(jù)的文本中追加數(shù)據(jù)(1)從文本文件中讀取已存在內(nèi)容(2)record+=“ 不錯的技術(shù)”; /追加方法(3)處理后保存到文本文件參考代碼如下:向已有數(shù)據(jù)的文本追加數(shù)據(jù)顯示內(nèi)容為:.JSP實現(xiàn)用戶注冊HT
11、ML表單元素回顧Form表單元素名稱說明所屬標簽所屬屬性Name輸入域的名稱Input,textarea,select無Value輸入域的值Input,textarea 無Text建立一個單行輸入文本框inputTypePassword同“text”,星號InputTypeCheckbox建立一個復(fù)選框InputTypeRadio建立一個單選框InputTypeSubmit建立一個提交按鈕InputTypeReset建立復(fù)位按鈕InputTypeHidden建立一個不被用戶代理器所渲染的元素,即JSP頁面對用戶不可見InputTypeTextarea建立一個多行輸入文本域Textarea無Se
12、lect建立一個列表選擇Select無用法示例:電腦網(wǎng)絡(luò)影視娛樂男女本科??艼SP處理請求數(shù)據(jù)JSP對象作用域:application、session、page、request內(nèi)建對象:out、applicationout.print(String name)和out.println(String name)void setAttribute(String name,Object value)和void getAttribute(String name)前者用于以鍵/值的方式保存對象到application對象中;后者根據(jù)名稱去攻取application對象中的值。request對象處理用戶請
13、求信息request對象實現(xiàn)的是javax.servlet.http.HttpServletRequest接口,表示客戶端對網(wǎng)頁的請求,并使用HTTP協(xié)議處理客戶端的請求。request對象的常用方法有String getParameter(String name),根據(jù)頁面表單組件名稱獲取請求頁面提交數(shù)據(jù),返回值為String類型,參數(shù)與請求頁面標簽內(nèi)的“name”值相對應(yīng)。例如,String name=(String)request.getParameter(username),表示把“username”(請求頁面的值)賦給“name”(本頁面中的值)。String getParamete
14、rValues(String name),用來獲取頁面請求中一個表單組件對應(yīng)多個值時的用戶請求數(shù)據(jù),返回值為String類型的數(shù)組,同樣,參數(shù)與請求頁面標簽內(nèi)的“name”值相對應(yīng),注意,這個“name”在請求頁面要對應(yīng)多個值,如String channels=request.getParameterValues(channel)。response對象處理用戶請求響應(yīng)response對象實現(xiàn)的同樣是javax.servlet.http.HttpServletRequest接口,用于處理JSP生成的響應(yīng)并將響應(yīng)發(fā)送給客戶端,同樣的也是通過HTTP將響應(yīng)發(fā)送給客戶端。response對象的常用方法
15、有void setContentType(String name),設(shè)置作為響應(yīng)生成內(nèi)容的類型和字符編碼,無返回值,“name”為類型和字符編碼,如response.setContentType(text/html;charset=GBK),其中“charset”是字符編碼;void sendRedirect(String name),發(fā)送一個響應(yīng)給瀏覽器,指示其應(yīng)請求另一個URL,無返回值,“name”為要請求的URL,如response.sendRedirect(response2.jsp)。response.setIntHeader(Refresh,10)/網(wǎng)頁10秒刷新一次respon
16、se.setIntHeader(Refresh,10;URL=)/刷新跳轉(zhuǎn)字符轉(zhuǎn)換存儲用戶信息到數(shù)據(jù)庫創(chuàng)建JDBC連接JDBC是一種為常用數(shù)據(jù)庫提供無縫連接的技術(shù),是一種用于執(zhí)行SQL的Java API,它由一組用Java語言編寫的類和接口組成。JDBC為工具/數(shù)據(jù)庫開發(fā)提供了一個標準的API,使它們能用Java API來編寫數(shù)據(jù)庫應(yīng)用程序。ODBC(Open DataBase Connectivity)稱為開放式數(shù)據(jù)庫互連技術(shù),是由Microsoft公司倡導(dǎo)并得到業(yè)界普遍響應(yīng)的一種數(shù)據(jù)庫連接技術(shù)。JDBC是由Sun公司制定的,JDBC不是ODBC規(guī)則派生的,JDBC完全用Java編寫,而OD
17、BC是C語言接口。但是JDBC和ODBC都是基于X/OPENSQL的命令層接口(CLI),相同的概念性基礎(chǔ)使API工作進展更快,使API的接受更加容易。Sun公司提供了將JDBC變?yōu)镺DBC的JDBC-ODBC橋,這個用本地方法完成的版本雖然小但很有效。JDBC的4種驅(qū)動模式:JDBC-ODBC橋、本地接口與Java程序相結(jié)合、面向數(shù)據(jù)庫中間件、直接連接JDBC常用接口Driver :Class.forName(sun.jdbc.odbc.JdbcOdbcDriver)/用于加載JDBC-ODBC橋驅(qū)動程序;使用前導(dǎo)入import java.sql.*DriverManager:JDBC管理層
18、,作用于用戶和驅(qū)動程序之間Connection:代表與數(shù)據(jù)庫的連接,即已經(jīng)加載的Driver和數(shù)據(jù)庫之間建立連接例:Connection conn=DriverManager.getConnection(jdbc:odbc:DBname,loginName,password);Statement:用于將SQL語句發(fā)送到數(shù)據(jù)庫中。掌握Statement和PreparedStatement對象的使用;及SQL執(zhí)行方法:ResultSet executeQuery(String sql)、int executeUpdate(String sql)、Boolean execute(String sql
19、)。Statement stmt=conn.createStatement();/由數(shù)據(jù)庫連接對象conn生成數(shù)據(jù)庫語句對象stmtResultSet:包含符合SQL語句條件的所有行,即結(jié)果集。掌握next()方法。格式一:執(zhí)行基本SQL語句 Class.forName(JDBC驅(qū)動程序);Connection conn=DriverManager.getConnection(相應(yīng)JDBC驅(qū)動程序的連接串);Statement stmt=conn.createStatement();ResultSet rs=stmt.executeQuery(“SQL語句);/如果是數(shù)據(jù)查詢stmt.exec
20、uteUpdate(SQL語句);/如果是數(shù)據(jù)操作格式二:執(zhí)行帶參數(shù)的SQL語句 Class.forName(JDBC驅(qū)動程序);Connection conn=DriverManager.getConnection(相應(yīng)JDBC驅(qū)動程序的連接串);PreparedStatement stmt = connect.PreparedStatement (帶參數(shù)的SQL語句);stmt.setInt(設(shè)置參數(shù)的值);ResultSet rs = stmt.executeQuery(); /如果是數(shù)據(jù)查詢stmt.executeUpdate(); /如果是數(shù)據(jù)操作完整用戶注冊實現(xiàn):(本章實驗內(nèi)容)
21、用戶注冊 請完成以下表格 姓名: 請在此處填寫姓名,字符最長為4個漢字,或8個英文字母。 密碼: 姓別: 男女 電子郵箱地址: 職業(yè): 傳播/媒體IT/互聯(lián)網(wǎng)銷售/市場學(xué)生其它 個人愛好: 電腦網(wǎng)絡(luò) 影視娛樂 棋牌娛樂 讀書讀報 美酒佳肴 繪畫書法 在此選擇興趣愛好,可以選擇一個以上選項 留言: 填寫完成后請點擊下面的提交按鈕提交 /信息檢查及向數(shù)據(jù)庫中添加信息頁面check.jsp驗證并提交信息頁面 % /獲取表單數(shù)據(jù) String name=(String)request.getParameter(name);String password=(String)request.getParam
22、eter(password);String sex=(String)request.getParameter(sex);String mail=(String)request.getParameter(email);String pro=(String)request.getParameter(pro); String lover=(String)request.getParameterValues(lover);String line=(String)request.getParameter(line);String strLover=;for(int i=0;i/以下是request對象的
23、使用,獲取用戶注冊及其它信息注冊信息 % String name=(String)request.getParameter(name);String password=(String)request.getParameter(password);String sex=(String)request.getParameter(sex);String mail=(String)request.getParameter(email);String pro=(String)request.getParameter(pro); String lover=(String)request.getParame
24、terValues(lover);String line=(String)request.getParameter(line);String strLover=;String method=(String)request.getMethod(); /得到客戶端向服務(wù)器傳送數(shù)據(jù)的方式Integer cport=(Integer)request.getRemotePort();/得到客戶端口 Integer sport=(Integer)request.getServerPort();/得到服務(wù)器端口String servername=(String)request.getServerName()
25、;/得到服務(wù)器名稱StringBuffer curl=(StringBuffer)request.getRequestURL();/得到請求的客戶端地址for(int i=0;i請牢記您的注冊信息: 用戶名: 密碼: 性別: 電子郵件: 職業(yè): 個人愛好: 留言: 您的請求信息: 傳送數(shù)據(jù)方式為: 客戶端口: 服務(wù)哭端口: 服務(wù)器名稱: 請求客戶端地址:本章習(xí)題:JSP的9個內(nèi)建對象:pageContext、 request 、response 、session、 application、 out、 config、 page 、exception過濾器是 特殊的ServletJSP與Serve
26、let實現(xiàn)用戶登錄JSP是將邏輯混合到顯示中,Servlert是將顯示混合到邏輯中,即JSP比較適合處理顯示的部分,而不善于處理邏輯,Servlet則恰恰相反。通俗地講,就是JSP向HTML中嵌入Java代碼,Servlet是向Java代碼中寫入HTML元素。實現(xiàn)用戶登錄頁面:關(guān)鍵在于form表單中的action屬性設(shè)置“servlet/Login”,以及Web.xml中的配置:Servlet中調(diào)用JDBC進行用戶合法性驗證當(dāng)用戶提交完登錄信息后,由Servlet處理請求,所以form表單提交的路徑也要配成Servlet能識別的路徑。在Servlet中跳轉(zhuǎn)的請求都要在web.xml中描述后才能
27、生效,否則系統(tǒng)將找不到請求資源。 Login com.jsp.servlet.LoginServlet中的4種常用方法:方法名稱說明doGet()用來處理HTTP的GET請求。doPost()用來處理HTTP的POST請求。init()當(dāng)Servlet被加載后執(zhí)行一些初始化工作destory()卸載Servlet的方法。如下Login.java參考代碼:import java.io.IOException;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.h
28、ttp.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.sql.*;import javax.servlet.http.HttpSession;public class Login extends HttpServlet private static final long serialVersionUID = 1L; public Login() super(); /* * init初始化方法 */public v
29、oid init(ServletConfig config) throws ServletExceptiontry Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException e) e.printStackTrace(); /* * see Servlet#destroy()方法 */public void destroy() super.destroy();protected void doGet(HttpServletRequest request, HttpServletResponse respo
30、nse) throws ServletException, IOException / TODO Auto-generated method stubprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOExceptionString username=(String)request.getParameter(username);/獲取用戶名String password=(String)request.getParameter(pas
31、sword);/獲取密碼HttpSession sessionn=request.getSession();/獲得session try Connection conn=DriverManager.getConnection(jdbc:odbc:userdb,sa,);ResultSet rs=conn.prepareStatement(select count(*) from users where username=+username+ and password=+password+).executeQuery(); if (rs.next() /結(jié)果集判斷 if(rs.getInt(1)
32、=1) sessionn.setAttribute(message,用戶驗證正確,登錄成功!); sessionn.setAttribute(username,username); sessionn.setAttribute(password,password); request.getRequestDispatcher(success.jsp).forward(request, response); else sessionn.setAttribute(message,用戶驗證失敗,請檢查登錄信息!); sessionn.setAttribute(username,username); se
33、ssionn.setAttribute(password,password); request.getRequestDispatcher(error.jsp).forward(request, response); catch (Exception e)e.printStackTrace(); Servlet實現(xiàn)頁面跳轉(zhuǎn)使用Servlet實現(xiàn)頁面跳轉(zhuǎn)的方法有兩種:一種是使用response.sendRedirect()進行重定位;一種是使用上一小節(jié)中的request.getRequestDispatchetr(URL).forward(request,response)方法。使用respons
34、e.sendRedirect()方法只能在Servlet寫的頁面間進行跳轉(zhuǎn),即Servlet的Java類中。實現(xiàn)代碼如下:/regsiter.javapackage com.jsp.servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.Date;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRespo
35、nse;import javax.servlet.http.HttpSession;/繼承和接口的實現(xiàn)public class register extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet public register() super(); public void destroy() super.destroy(); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Ser
36、vletException, IOException / TODO Auto-generated method stubHttpSession session = request.getSession();Date date = new Date(); session.setAttribute(time1,date); String s = (String)session.getAttribute(timeout);response.setContentType(text/html;charset=gb2312);PrintWriter out = response.getWriter();o
37、ut.println();out.println();out.println( A Servlet);out.println( ); if(s=roll) out.print(超出規(guī)定時間,請重新填寫!);out.print();out.print(請輸入姓名:);out.println();out.print(請輸入密碼:);out.print();out.print(出生年月:);out.println();out.print(真實姓名:);out.println();out.print(電子郵箱:);out.println();out.print(地址:);out.println();o
38、ut.print();out.println( );out.println();out.flush();out.close(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException public void init() throws ServletException / Put your code here/check.java代碼:package com.jsp.servlet;import java.io.IO
39、Exception;import java.io.PrintWriter;import java.util.Date;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession; public class check extends javax.servlet.http.HttpServlet implements java
40、x.servlet.Servlet public check() super(); public void destroy() super.destroy(); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException HttpSession session = request.getSession();Date date = new Date(); long time2 = date.getTime(); Date da
41、te1 = (Date)session.getAttribute(time1); long time3 = date1.getTime();String user = (String)request.getParameter(username);String pass = (String)request.getParameter(password);String birth = (String)request.getParameter(birthday);String real = (String)request.getParameter(realname);String em = (Stri
42、ng)request.getParameter(email);String addr = (String)request.getParameter(address);session.setAttribute(timeout,roll);response.setContentType(text/html;charset=gb2312);if(time2-time330000)response.sendRedirect(http:/localhost:8081/FourGoto/servlet/register);elsePrintWriter out = response.getWriter()
43、;out.println();out.println();out.println( A Servlet);out.println( );out.print(您的注冊信息為);out.println(用戶名:+user+密碼:+pass+出生年月:+birth+真實姓名:+real+電子郵件:+em+地址:+addr+);out.println( );out.println();out.flush();out.close(); 使用session對象保存用戶信息session是JSP中一個很重要的內(nèi)建對象,它表示目前個別用戶的會話(session)狀態(tài)。session的信息保存在服務(wù)器端,并可以
44、輕易識別每一個用戶,然后根據(jù)每一個用戶的不同要求,給予正確的響應(yīng)。session對象實現(xiàn)的是javax.servlet.http.HttpSession接口,如果想通過session在JSP頁面得到信息,那么必須保證session不為空,即先向session對象中保存信息。完整使用Session實現(xiàn)用戶登錄參考代碼:/登錄界面Login.jsp用戶登錄 用戶名: 密碼: /check.jsp代碼:驗證頁面=1) sessionn.setAttribute(message,用戶驗證正確,登錄成功!); sessionn.setAttribute(username,username);/保存對象信
45、息 sessionn.setAttribute(password,password); response.sendRedirect(success.jsp); else sessionn.setAttribute(message,用戶驗證失敗,請檢查登錄信息!); sessionn.setAttribute(username,username); sessionn.setAttribute(password,password); response.sendRedirect(error.jsp); %/登錄成功頁面success.jsp登錄成功 歡迎您: /登錄失敗錯誤提示error.jsp出錯
46、啦 請確認信息是否正確:用戶名:密碼:5秒后返回登錄頁面,請稍候.如果您的瀏覽器沒能自動跳轉(zhuǎn),請點擊這里習(xí)題:1-4:在JSP頁面中顯示用戶信息兩種方法是:out對象和JSP表達式JSP和JavaBean實現(xiàn)用戶信息查詢JSP與JavaBean聯(lián)合應(yīng)用到開發(fā)中,與JSP與Servlet結(jié)合使用的方式很像。JavaBean是一個可重復(fù)使用的軟件組件,實際上就是一種Java類。它通過封裝屬性和方法,成為可以處理某種功能或者某個業(yè)務(wù)的對象,簡稱Bean。JSP+JavaBean的開發(fā)模式,實現(xiàn)了頁面的表現(xiàn)與頁面的邏輯相分離,即所有數(shù)據(jù)通過JavaBean來處理,JSP只實現(xiàn)頁面表現(xiàn)。JavaBean
47、可以認為是提供了隨時隨地進行復(fù)制和粘貼的功能,而不用關(guān)心任何改變的Java類。用戶可以使用JavaBean功能、處理、值、數(shù)據(jù)庫訪問和其他任何可以使用Java代碼創(chuàng)造的對象進行打包,并且其他的開發(fā)者可以通過內(nèi)部JSP頁面、Servlet類、其他JavaBean、Applet程序或應(yīng)用來使用這些對象。創(chuàng)建一個JavaBean一般要符合以下幾點:必須有一個無參數(shù)的公有的構(gòu)造函數(shù)。當(dāng)類里沒有構(gòu)造函數(shù)時默認的就是無參共有的。對于想要使用到的屬性都定義成私有變量對定義的私有變量要有和它相對應(yīng)的get和set方法。get和set方法必須有變量相同的名稱,但第一個字母要大寫。JSP中的動作指令在JSP中有指
48、令與動作指令之分,指令有兩種:Page和Include。Page指令用來定義JSP文件中的全局性,一個頁面可以定義一個也可以定義多個。Include指令用于包含一個靜態(tài)的JSP文件,并解析這個文件中的JSP語句。JSP的動作指令一共有6個,Include指令、Forward指令、Plugin指令、UseBean指令、SetProperty指令和GetProperty指令。前3個屬于控制標志,后3個屬于Bean標志。他們都是使用作為前綴。include指令標簽用來包含一個動態(tài)或靜態(tài)的資源。因為它可以包含動態(tài)或靜態(tài)的資源,所以不用判斷被包含的資源是動態(tài)的還是靜態(tài)的。但是包含這兩種資源的結(jié)果是不相同
49、的,當(dāng)包含的是一個靜態(tài)資源時,JSP編譯器不會去執(zhí)行這個文件,僅僅是將資源加載到JSP中。如果包含的是一個動態(tài)資源,JSP編譯器就會去執(zhí)行它。如:/動態(tài)無參表示法 /動態(tài)有參數(shù)表示法注意include動作指令與Includer指令的區(qū)別:項目Include動作指令I(lǐng)nclude指令基本語法包含動作發(fā)生的時間請求頁面期間頁面轉(zhuǎn)換期間被包含的內(nèi)容頁面的輸出文件的內(nèi)容產(chǎn)生Servlet的數(shù)目21被包含文件是否可以設(shè)置影響主頁的響應(yīng)報頭不可以可以被包含文件是否可以定義主頁面使用的字段和方法不可以可以被包含文件更改后是否需要更新主頁面不需要需要forward指令標簽是允許請求轉(zhuǎn)發(fā)到另一個JSP、Serv
50、let或者HTML文件。實際上就是從一個JSP文件向另一個文件傳遞用戶請求的request對象,但是目標文件必須位于此JSP文件的上下文環(huán)境中。當(dāng)遇到此標簽時,標簽下面的操作將停止執(zhí)行,轉(zhuǎn)而執(zhí)行目標文件的內(nèi)容。標簽在JSP中的語法有以下兩種形式。(1)無參數(shù)跳轉(zhuǎn)方式,表達式如下所示。jsp:forward page=relativeURL|/(2)帶參數(shù)跳轉(zhuǎn)方式,表達式如下所示。jsp:forward page=relativeURL| jsp:param name=parameterName“value=parameterValue|/ plugin指令標簽用于產(chǎn)生客戶端瀏覽器的特別標簽(O
51、bject或者Embed),插入一個Applet或Bean,并且根據(jù)瀏覽器的不同版本決定替換成還是元素,用于HTML 4.0,用于HTML 3.2。useBean指令標簽用來在JSP頁面創(chuàng)建一個JavaBean的實例并指定它的名字及作用范圍。在JSP中的語法表達式如下所示。jsp:useBean id=beanInstanceNamescope=page|request|session|application class=package.class|type=package.class|class=package.classtype=package. class| beanName=packa
52、ge.class|type=package.class /| other elements Scope定義的范圍選項:范圍描述pageBean只能在使用頁面時使用,當(dāng)加載新的頁面時就會被銷毀request在對其發(fā)出請求時存在session一直存在于會話中,直到其終止或被刪除時為止application在整個應(yīng)用程序中都可使用setProperty指令標簽用來設(shè)置JavaBean中的屬性值。在JSP中的語法表達式如下所示。jsp:setProperty name=beanInstanceNameproperty=*|property=propertyName“ param=parameterNa
53、me|property=propertyNamevalue=string| /將字符串轉(zhuǎn)換成其他類型的方法property類型方法booleanjava.lang.Boolean.valueOf(String).booleanValue()Booleanjava.lang.Boolean.valueOf(String)bytejava.lang.Byte.valueOf(String).byteValue()Bytejava.lang.Byte.valueOf(String)charjava.lang.Character.valueOf(String).charValue()Character
54、java.lang.Character.valueOf(String)doublejava.lang.Double.valueOf(String).doubleValue()Doublejava.lang.Double.valueOf(String)intjava.lang.Integer.valueOf(String).intValue()Integerjava.lang.Integer.valueOf(String)floatjava.lang.Float.valueOf(String).floatValue()Floatjava.lang.Float.valueOf(String)lon
55、gjava.lang.Long.valueOf(String).longValue()Longjava.lang.Long.valueOf(String).getProperty指令標簽用來獲取Bean屬性的值,并將它轉(zhuǎn)化為字符串,然后在輸出的頁面顯示。在JSP中的語法如下所示。語法說明如下。name=beanInstanceName,bean的名字,由指定。property=propertyName,指定Bean的屬性名。完整用戶信息查詢實現(xiàn)/表單頁面就不再重復(fù)寫了,以下是信息檢查代碼check.jsp查看顯示信息%DBManager mdb=new DBManager();String u
56、sername=(String)request.getParameter(username);String password=(String)request.getParameter(password);String message=(String)request.getParameter(message);List list=mdb.queryUser(username,password,message);if(!list.isEmpty()% 用戶名 密碼 留言%for(int i=0;i /使用到的Bean代碼JavaBean.java如下:package com.jsp.query;p
57、ublic class JavaBean private String username; private String password; private String message; public JavaBean() public String getUsername() return username; public void setUsername(String username) this.username=username; public String getPassword() return password; public void setPassword(String p
58、assword) this.password=password; public String getMessage() return message; public void setMessage(String message) this.message=message; /數(shù)據(jù)庫信息核對java類DBManager.javapackage com.jsp.query;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultS
59、et;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;public class DBManager private Connection conn=null;private PreparedStatement stmt=null;private ResultSet rs=null;public DBManager()try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); conn=DriverManager.getConnection(jdbc:
60、odbc:beandb,sa,); catch (Exception e) e.printStackTrace(); public List queryUser(String username,String password,String message)throws SQLExceptionList list =new ArrayList();/創(chuàng)建一個ArrayList對象if(username=null|username.equals()/判斷用戶名是否為空 System.out.println(用戶名不能為空);elsestmt=conn.prepareStatement(select
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自然博物館單元課程設(shè)計
- 軸承座課程設(shè)計夾具設(shè)計
- 2025年外聯(lián)部工作計劃書范例(3篇)
- 2025年度架子工崗位外包合同2篇
- 網(wǎng)絡(luò)課程設(shè)計校園局域網(wǎng)
- 2025年酒類產(chǎn)品定制加工合同模板2篇
- 倉庫保管員崗位責(zé)任制模版(2篇)
- 二零二五年度房屋租賃合同范本包含家具損壞賠償3篇
- 2025年度水利工程勞務(wù)分包與施工圖審核合同3篇
- 2025年度新能源汽車充電設(shè)施租賃認籌協(xié)議書(綠色出行)3篇
- 代縣雁門光伏升壓站~寧遠220kV線路工程環(huán)評報告
- 承諾函(支付寶)
- 危險化學(xué)品目錄2023
- FZ/T 81024-2022機織披風(fēng)
- GB/T 24123-2009電容器用金屬化薄膜
- 艾滋病梅毒乙肝實驗室檢測
- 國鐵橋梁人行道支架制作及安裝施工要點課件
- 領(lǐng)導(dǎo)科學(xué)全套精講課件
- 粵教版地理七年級下冊全冊課件
- 小學(xué)科學(xué)蘇教版六年級上冊全冊精華知識點(2022新版)
- 萎縮性胃炎共識解讀
評論
0/150
提交評論