版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第8章使用JDBC
技術(shù)訪問數(shù)據(jù)庫0208學(xué)習(xí)目標(biāo)能識記JDBC和相關(guān)編程接口能掌握JDBC訪問數(shù)據(jù)庫的步驟能掌握驗證用戶信息的步驟能掌握添加用戶信息進行注冊的步驟能靈活添加其他網(wǎng)頁的信息能掌握使用JDBC技術(shù)瀏覽數(shù)據(jù)庫中表的內(nèi)容能掌握顯示信息的步驟課程思政形成自覺遵守規(guī)則,誠實守信的良好習(xí)慣重視數(shù)據(jù)庫設(shè)計中的數(shù)據(jù)安全性,學(xué)習(xí)工匠精神,尊重軟件開發(fā)的標(biāo)準(zhǔn)課堂教學(xué)中舉一反三,引信案例:攜程數(shù)據(jù)泄露事件,保護好自己的隱私,也要保護好家人。
8.1JDBC技術(shù)概述JDBC是?種可?于執(zhí)?SQL語句的JavaAPI(ApplicationProgrammingInterface應(yīng)?程序設(shè)計接?)。它由?些Java語?編寫的類和界?組成。JDBC為數(shù)據(jù)庫應(yīng)?開發(fā)?員、數(shù)據(jù)庫前臺?具開發(fā)?員提供了?種標(biāo)準(zhǔn)的應(yīng)?程序設(shè)計接?,使開發(fā)?員可以?純Java語?編寫完整的數(shù)據(jù)庫應(yīng)?程序。8.1JDBC技術(shù)概述JDBC體系結(jié)構(gòu)8.1JDBC技術(shù)概述JDBC的作用8.1JDBC技術(shù)概述JDBC的具體工作原理8.1JDBC技術(shù)概述JDBCAPI是Java程序語言的應(yīng)用程序接口,它提供數(shù)據(jù)訪問的基本功能。使用JDBCAPI包中的類,開發(fā)者能夠完成所有基本的數(shù)據(jù)庫操作。使用JDBC技術(shù)操作數(shù)據(jù)庫接口或類包括:1)java.sql.DriverManager:依據(jù)數(shù)據(jù)庫的不同,管理JDBC驅(qū)動。2)java.sql.Connection:負責(zé)連接數(shù)據(jù)庫并擔(dān)任傳送數(shù)據(jù)的任務(wù)。3)java.sql.Statement:由Connection產(chǎn)生,負責(zé)執(zhí)行SQL語句。4)java.sql.ResultSet:負責(zé)保存Statement執(zhí)行后所產(chǎn)生的查詢結(jié)果。8.2使用JDBC技術(shù)進行數(shù)據(jù)庫編程的步驟1、裝載驅(qū)動程序;2、與一個數(shù)據(jù)庫建立連接;3、向數(shù)據(jù)庫發(fā)送SQL語句;4、處理數(shù)據(jù)庫返回的結(jié)果。8.2使用JDBC技術(shù)進行數(shù)據(jù)庫編程的步驟1、裝載驅(qū)動程序為了與特定的數(shù)據(jù)庫建立連接,JDBC必須加載相應(yīng)的驅(qū)動程序。使用Class.forName()方法將驅(qū)動程序添加到j(luò)ava.lang.System的屬性jdbc.drivers中。以下是加載MySQL驅(qū)動程序的方法:publicstaticStringdriver="com.mysql.jdbc.Driver";Class.forName(driver);8.2使用JDBC技術(shù)進行數(shù)據(jù)庫編程的步驟2、建立與數(shù)據(jù)庫的連接與數(shù)據(jù)庫建立連接可以通過調(diào)用DriverManager.getConnection()方法實現(xiàn),Connection接口代表與數(shù)據(jù)庫的連接。以下是用純的Java驅(qū)動連接方法連接MySQL數(shù)據(jù)庫的方法:publicstaticStringurl="jdbc:mysql://localhost:3306/數(shù)據(jù)庫名";publicstaticStringdbUser="root";publicstaticStringdbPwd="root";Connectioncon=DriverManager.getConnection(url,dbUser,dbPwd);8.2使用JDBC技術(shù)進行數(shù)據(jù)庫編程的步驟為了將MyEclipse中開發(fā)的應(yīng)用程序連接到MySQL數(shù)據(jù)庫,需要從相關(guān)站點下載JDBCdriverforMySQL,得到一個文件mysql-connector-java-5.1.7-bin.jar。在MyEclipse的“JavaBulidPath”中,導(dǎo)入解壓得到的mysql-connector-java-5.1.7-bin.jar文件,鼠標(biāo)右健點擊建工程,選擇“Properties”。8.2使用JDBC技術(shù)進行數(shù)據(jù)庫編程的步驟3、向數(shù)據(jù)庫發(fā)送SQL語句一旦建立連接,就使用該連接創(chuàng)建Statement或者PreparedStatement,并將SQL語句傳遞給它所連接的數(shù)據(jù)庫。(1)Statement獲取Connection對象之后就可以進行數(shù)據(jù)庫操作了,使用Connection對象可以生成Statement對象。Statementst=conn.createStatement();8.2使用JDBC技術(shù)進行數(shù)據(jù)庫編程的步驟Statement接口中包含很多基本的數(shù)據(jù)庫操作方法,最常用的兩種如下:ResultSetrs=st.excuteQuery(sql)。其中sql僅僅是查詢語句,例如“select*fromuserwherename=’aa’”。此方法返回的對象類型是ResultSet類型對象,它包含執(zhí)行SQL查詢的結(jié)果。inti=st.excuteUpdate(sql)。其中sql僅僅是更新語句,即update、insert、delete等SQL語句。此方法返回的是一個整數(shù),表示成功執(zhí)行更新的行數(shù)。沒有更新成功,則返回-1。8.2使用JDBC技術(shù)進行數(shù)據(jù)庫編程的步驟(2)PreparedStatementPreparedStatement接口繼承自Statement接口,PreparedStatement接口比Statement接口用起來更加靈活,更有效率。PreparedStatement類型的對象其實已經(jīng)包含預(yù)編譯過的SQL語句,這個SQL語句可具有一個或者多個輸入?yún)?shù),這些輸入?yún)?shù)的值在SQL語句創(chuàng)建時未被指定,而是為每個參數(shù)保留一個問號(“?”)作為占位符。例如:PreparedStatementps=conn.prepareStatement(“select*fromuserwherename=?andpassword=?”);ps.setString(1,”張杰”);ps.setInt(2,123);8.2使用JDBC技術(shù)進行數(shù)據(jù)庫編程的步驟PreparedStatement接口中包含很多基本的數(shù)據(jù)庫操作方法,和Statement類似,最常用的兩種如下:①ResultSetrs=ps.excuteQuery();其中sql僅僅是查詢語句,例如“select*fromuserwherename=’aa’“。此方法返回的對象類型是ResultSet類型對象,它包含執(zhí)行SQL查詢的結(jié)果。②inti=ps.excuteUpdate();其中sql僅僅是更新語句,即update、insert、delete等SQL語句。注意,PreparedStatement的這兩個方法內(nèi)是沒有參數(shù)的。8.2使用JDBC技術(shù)進行數(shù)據(jù)庫編程的步驟4、處理數(shù)據(jù)庫返回的結(jié)果我們前面已經(jīng)獲取了rs對象,這樣我們就可以通過rs對象來獲取數(shù)據(jù)表中每一列的數(shù)據(jù),如果該列數(shù)據(jù)是字符串類型,我們就可以調(diào)用rs.getString(序列號)來獲取,第一列的序列號為1,其他按順序獲取。如果該列數(shù)據(jù)是整型變量,我們可以調(diào)用rs.getInt(序列號)來獲取。8.3JDBC應(yīng)用4、處理數(shù)據(jù)庫返回的結(jié)果我們前面已經(jīng)獲取了rs對象,這樣我們就可以通過rs對象來獲取數(shù)據(jù)表中每一列的數(shù)據(jù),如果該列數(shù)據(jù)是字符串類型,我們就可以調(diào)用rs.getString(序列號)來獲取,第一列的序列號為1,其他按順序獲取。如果該列數(shù)據(jù)是整型變量,我們可以調(diào)用rs.getInt(序列號)來獲取。8.3JDBC應(yīng)用連接本機上的數(shù)據(jù)庫my,訪問該數(shù)據(jù)庫中的user表,共字段name是主鍵,表的結(jié)構(gòu)和內(nèi)容如圖:8.3JDBC應(yīng)用1、創(chuàng)建“data”包,并在此包下創(chuàng)建一個類“UserDao.java”,如圖:UserDao類packagedata;importjava.sql.*;public
classUserDao{
public
staticStringdriver="com.mysql.jdbc.Driver";//驅(qū)動名稱
public
staticStringurl="jdbc:mysql://localhost:3306/my"; //my是數(shù)據(jù)庫名稱
public
staticStringdbUser="root";
public
staticStringdbPwd="root";
public
staticConnectionconn=null;
public
staticStatementst=null;
public
staticResultSetrs=null;public
staticPreparedStatementps=null;UserDao類publicUserDao(){try{ Class.forName(driver);//1-加載驅(qū)動
conn=DriverManager.getConnection(url,dbUser,dbPwd);//2-創(chuàng)建連接對象 System.out.println("數(shù)據(jù)庫連接成功!"); }catch(ClassNotFoundExceptione){ System.out.println("驅(qū)動類未找到:"+e); }catch(SQLExceptione){ System.out.println("連接對象創(chuàng)建失?。?+e); } }UserDao類//查詢所有的用戶信息
public
voidfindAllUsers(){ Stringsql="select*fromuser";
try{
st=conn.createStatement();
rs=st.executeQuery(sql); System.out.println("有下列用戶:");
while(rs.next()) { System.out.println("用戶名:"+rs.getString("name")); System.out.println("用戶密碼:"+rs.getString(2)); /*System.out.println("性別:"+rs.getString(3)); System.out.println("愛好:"+rs.getString(4)); System.out.println("專業(yè)"+rs.getString(5)); System.out.println("照片:"+rs.getString(6)); System.out.println("個人簡介:"+rs.getString7));*/ } }catch(SQLExceptione){ System.out.println("未找到任何用戶:"+e); } }UserDao類
//根據(jù)用戶名查找
publicResultSetfindByName(Stringname){ Stringsql="select*fromuserwherename=?";
try{
ps=conn.prepareStatement(sql);
ps.setString(1,name);
rs=ps.executeQuery(); }catch(SQLExceptione){ System.out.println("未找到該用戶:"+e); }
return
rs; }UserDao類//根據(jù)用戶名和密碼查找
publicResultSetfindByNamePsw(Stringname,Stringpsw){ Stringsql="select*fromuserwherename=?andpassword=?";
try{
ps=conn.prepareStatement(sql);
ps.setString(1,name);
ps.setString(2,psw);
rs=ps.executeQuery(); }catch(SQLExceptione){ System.out.println("未找到該用戶信息:"+e); }
return
rs; } UserDao類
//為某用戶修改用戶密碼
public
voidchangePassword(StringnewPass,Stringname){ Stringsql="updateusersetpassword=?wherename=?";
try{
ps=conn.prepareStatement(sql);
ps.setString(1,newPass);
ps.setString(2,name);
inti=ps.executeUpdate();
if(i>0){System.out.println("用戶密碼修改成功!");}
else{ System.out.println("用戶密碼修改失??!");}}catch(SQLExceptione){e.printStackTrace();}}UserDao類
//添加一個新的用戶信息的方法
public
intinsertUser(Stringname,Stringpsw,Stringsex, Stringaihao,Stringzhuanye,Stringphoto,Stringjianjie){ Stringsql="insertintouservalues(?,?,?,?,?,?,?)";
inti=0;
try{
ps=conn.prepareStatement(sql);
ps.setString(1,name);
ps.setString(2,psw);
ps.setString(3,sex);
ps.setString(4,aihao);
ps.setString(5,zhuanye);
ps.setString(6,photo);
ps.setString(7,jianjie); i=ps.executeUpdate();
if(i>0){System.out.println("插入新用戶成功!");}
else{ System.out.println("插入新用戶失敗!");}
}catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }
returni; }UserDao類
//根據(jù)用戶名刪除用戶
public
voiddeleteUser(Stringname){ Stringsql="deletefromuserwherename=?";
try{
ps=conn.prepareStatement(sql);
ps.setString(1,name);
inti=ps.executeUpdate();
if(i>0){System.out.println("刪除用戶成功!");}
else{ System.out.println("刪除用戶失敗!");}}catch(SQLExceptione){e.printStackTrace();}}UserDao類
//關(guān)閉數(shù)據(jù)庫資源
public
voidcloseAll(){//如果rs不空,關(guān)閉rs
if(rs!=null){
try{rs.close();}catch(SQLExceptione){ e.printStackTrace(); }}//如果ps不空,關(guān)閉ps
if(ps!=null){
try{ps.close();}catch(SQLExceptione){ e.printStackTrace(); }}
if(st!=null){
try{ st.close(); }catch(SQLExceptione){ e.printStackTrace(); }}//如果conn不空,關(guān)閉conn
if(conn!=null){
try{
conn.close(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }}}UserDao類
public
static
voidmain(Stringargs[]){ UserDaoud=newUserDao(); ud.findAllUsers(); ud.findByName("蘇州托普學(xué)院"); ud.changePassword("aa","123456"); ud.insertUser("ee","55","女","讀書,音樂,運動,","人工智能技術(shù)","my.png","我喜歡利用人工智能來改變生活!"); ud.deleteUser("dd"); ud.closeAll();}}UserDao類運行UserDao.java,結(jié)果出現(xiàn)下面錯誤,如圖:“驅(qū)動類未找到”錯誤,是什么原因呢?可以將MySQL數(shù)據(jù)庫的JDBC驅(qū)動包復(fù)制到項目WebRoot/WEB-INF/lib文件夾中,即可解決問題運行結(jié)果如圖8.4使用JDBC技術(shù)實現(xiàn)用戶登錄、注冊及修改8.4.1開發(fā)任務(wù)開發(fā)任務(wù):使用JDBC技術(shù)升級新聞發(fā)布系統(tǒng),實現(xiàn)對數(shù)據(jù)庫的讀寫操作:任務(wù)一:創(chuàng)建新聞發(fā)布系統(tǒng)數(shù)據(jù)庫和數(shù)據(jù)庫表;任務(wù)二:優(yōu)化UserDao.java數(shù)據(jù)庫訪問類,從中抽取公共代碼封裝于BaseDao.java類中,用于連接、關(guān)閉數(shù)據(jù)庫,執(zhí)行SQL語句;任務(wù)三:定義UserDao用戶訪問數(shù)據(jù)的接口;任務(wù)四:利用數(shù)據(jù)庫連接類,實現(xiàn)DAO接口UserDao8.4使用JDBC技術(shù)實現(xiàn)用戶登錄、注冊及修改8.4.1開發(fā)任務(wù)訓(xùn)練技能點:1)會使用JDBC的方式連接數(shù)據(jù)庫;2)會使用PreparedStatement執(zhí)行數(shù)據(jù)庫表的增、刪、改、查操作;3)會采用面向接口的編程方式進行編程;4)會使用ResultSet處理查詢結(jié)果。8.4使用JDBC技術(shù)實現(xiàn)用戶登錄、注冊及修改創(chuàng)建了user表8.4使用JDBC技術(shù)實現(xiàn)用戶登錄、注冊及修改創(chuàng)建了news表BaseDao類packagedata;importjava.sql.*;public
classBaseDao{
public
staticStringdriver="com.mysql.jdbc.Driver";//驅(qū)動名稱
public
staticStringurl="jdbc:mysql://localhost:3306/my"; //my是數(shù)據(jù)庫名稱
public
staticStringdbUser="root";
public
staticStringdbPwd="root"; public
staticConnectionconn=null;
public
staticStatementst=null;
public
staticResultSetrs=null;
public
staticPreparedStatementps=null;BaseDao類publicConnectiongetConn(){
try{ Class.forName(driver);//1-加載驅(qū)動 conn=DriverManager.getConnection(url,dbUser,dbPwd);//2-創(chuàng)建連接對象 System.out.println("數(shù)據(jù)庫連接成功!"); }catch(ClassNotFoundExceptione){ System.out.println("驅(qū)動類未找到:"+e); }catch(SQLExceptione){ System.out.println("連接對象創(chuàng)建失?。?+e); }
returnconn; }BaseDao類//執(zhí)行SQL語句,實現(xiàn)增、刪、改的操作。注意:不能執(zhí)行查詢。
public
intexecuteSQL(Stringsql,String[]param){Connectionconn=null;PreparedStatementps=null;
intnum=0;try{/*處理SQL,執(zhí)行SQL*/conn=getConn();//獲取連接數(shù)據(jù)庫的對象ps=conn.prepareStatement(//得到PreparedStatement對象
if(param!=null){
for(inti=0;i<param.length;i++){ps.setString(i+1,param[i]);//為預(yù)編譯SQL設(shè)置參數(shù)}}num=ps.executeUpdate();//執(zhí)行SQL語句}catch(SQLExceptione){e.printStackTrace();//處理SQLException異常}finally{closeAll();//釋放資源}
returnnum;}}UserDao類packageutil;public
interfaceUserDao{
public
abstract
intdeleteUser(Stringname);
public
abstract
intinsertNewUser(Stringname,Stringpassword,Stringsex,Stringaihao,Stringzhuanye,Stringphoto,Stringjianjie);
public
abstract
intupdateUserPassword(Stringpassword,Stringname);
public
abstract
intupdateUser(Stringpassword,Stringsex,Stringaihao,Stringzhuanye,Stringphoto,Stringjianjie,Stringname);
public
abstract
booleanuserLogin(Stringname,Stringpassword);
public
abstractResultSetfindAllUsers();public
abstractResultSetfindName(Stringname);}UserDaoImpl類packageutil;importdata.BaseDao;public
classUserDaoImplextendsBaseDaoimplementsUserDao{
public
intdeleteUser(Stringname){
return0; }
public
intinsertNewUser(Stringname,Stringpassword,Stringsex,Stringaihao,Stringzhuanye,Stringphoto,Stringjianjie){
return0; }
public
intupdateUserPassword(Stringpassword,Stringname){
return0; }public
intupdateUser(Stringpassword,Stringsex,Stringaihao,Stringzhuanye,Stringphoto,Stringjianjie,Stringname){return0;}
public
booleanuserLogin(Stringname,Stringpassword){
return
false; }public
abstractResultSetfindAllUsers(){return
false;}}UserDaoImpl類//用戶登錄驗證用戶名和密碼是否匹配
publicResultSetuserLogin(Stringname,Stringpassword){ //TODOAuto-generatedmethodstub Stringsql="select*fromuserwherename=?andpassword=?";
try {
conn=this.getConn();
ps=conn.prepareStatement(sql);
ps.setString(1,name);
ps.setString(2,password); rs=ps.executeQuery();//執(zhí)行SQL語句
}catch(Exceptione) { e.printStackTrace(); }
returnrs;} UserDaoImpl類//根據(jù)用戶名,刪除用戶信息
public
intdeleteUser(Stringname){ //TODOAuto-generatedmethodstub Stringsql="deletefromuserwherename=?"; Stringparam[]={name};
inti=0;
try{ i=this.executeSQL(sql,param); //直接使用父類中的executeSQL方法執(zhí)行查詢
if(i>0){System.out.println("刪除用戶成功!");}
else{ System.out.println("刪除用戶失敗"); }}catch(Exceptione){e.printStackTrace();}
returni; }UserDaoImpl類//添加用戶信息
public
intinsertNewUser(Stringname,Stringpassword,Stringsex,Stringaihao,Stringzhuanye,Stringphoto,Stringjianjie){ Stringsql="insertintouservalues(?,?,?,?,?,?,?)"; Stringparam[]={name,password,sex,aihao,zhuanye,photo,jianjie};
inti=0;
try{ i=this.executeSQL(sql,param); //直接使用父類中的executeSQL方法執(zhí)行查詢
if(i>0){System.out.println("添加用戶成功!");}
else{ System.out.println("添加用戶失??!"); }}catch(Exceptione){e.printStackTrace();}
returni; }UserDaoImpl類//根據(jù)用戶名來修改用戶密碼
public
intupdateUserPassword(Stringpassword,Stringname){ Stringsql="updateusersetpassword=?wherename=?"; Stringparam[]={password,name};
inti=0;
try{ i=this.executeSQL(sql,param); //直接使用父類中的executeSQL方法執(zhí)行查詢
if(i>0){System.out.println("修改用戶密碼成功!");}
else{ System.out.println("修改用戶密碼失?。?); }}catch(Exceptione){e.printStackTrace();}
returni; }UserDaoImpl類//根據(jù)用戶名更新用戶信息
public
intupdateUser(Stringpassword,Stringsex,Stringaihao,Stringzhuanye,Stringphoto,Stringjianjie,Stringname){ Stringsql="updateusersetpassword=?,sex=?,aihao=?,zhuanye=?,photo=?,jianjie=?wherename=?"; Stringparam[]={password,sex,aihao,zhuanye,photo,jianjie,name};
inti=0;
try{ i=this.executeSQL(sql,param); //直接使用父類中的executeSQL方法執(zhí)行查詢
if(i>0){System.out.println("修改用戶密碼成功!");}
else{ System.out.println("修改用戶密碼失??!");}}catch(Exceptione){e.printStackTrace();}
returni; }UserDaoImpl類//查找所有的用戶信息
publicResultSetfindAllUsers(){ Stringsql="select*fromuser";
try {
conn=this.getConn();
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();//執(zhí)行SQL語句
}catch(Exceptione) { e.printStackTrace(); }
return
rs; } UserDaoImpl類publicResultSetfindName(Stringname){ Stringsql="select*fromuserwherename=?";
try {
conn=this.getConn();
ps=conn.prepareStatement(sql);
ps.setString(1,name);
rs=ps.executeQuery();//執(zhí)行SQL語句
}catch(Exceptione) { e.printStackTrace(); }
return
rs; }publicResultSetfindName(Stringname){ Stringsql="select*fromuserwherename=?";
try {
conn=this.getConn();
ps=conn.prepareStatement(sql);
ps.setString(1,name);
rs=ps.executeQuery();//執(zhí)行SQL語句
}catch(Exceptione) { e.printStackTrace(); }
return
rs; }UserDaoImpl類packageutil;importjava.sql.ResultSet;importjava.sql.SQLException;public
classTest{
public
static
voidmain(String[]args){ UserDaouser=newUserDaoImpl(); user.userLogin("bb","22");//用戶登錄 ResultSetrs=user.findAllUsers();
try{
while(rs.next()){ System.out.println("用戶名:"+rs.getString(1)); System.out.println("密碼:"+rs.getString(2)); } }catch(SQLExceptione){ e.printStackTrace(); } user.insertNewUser("dd","44","男","運動,讀書","軟件技術(shù)","big.png","他是一個上進有遠大理想的好學(xué)生!"); user.updateUserPassword("12345","aa"); user.updateUser("8888","女","讀書,音樂","軟件2101","big.png","","蘇州托普學(xué)院"); user.deleteUser("cc");//刪除用戶 }}UserDaoImpl類8.4使用JDBC技術(shù)實現(xiàn)用戶登錄、注冊及修改4.3前臺實現(xiàn)任務(wù)一:創(chuàng)建用戶登錄和用戶驗證頁面用戶驗證頁面:dlyz.jsp
<body>
<% request.setCharacterEncoding("utf-8"); Stringname=request.getParameter("username"); Stringmima=request.getParameter("mima"); UserDaouser=newUserDaoImpl();ResultSetrs=user.userLogin(name,mima);
if(rs.next()){ response.sendRedirect("zhuye.jsp"); }
else{ out.println("<center><h1>用戶名或密碼有誤,請重新輸入!</h1></center>");
%>
<%@include
file="denglu.jsp"
%>
<%
}
%>
</body>8.4使用JDBC技術(shù)實現(xiàn)用戶登錄、注冊及修改登錄失敗頁面8.4使用JDBC技術(shù)實現(xiàn)用戶登錄、注冊及修改登錄成功進行主頁8.4使用JDBC技術(shù)實現(xiàn)用戶登錄、注冊及修改任務(wù)二:創(chuàng)建用戶注冊和注冊驗證頁面用戶注冊驗證頁面:zcyz.jsp
<body>
<%
request.setCharacterEncoding("utf-8"); Stringusername=request.getParameter("username"); Stringmima=request.getParameter("mima"); Stringsex=request.getParameter("sex"); String[]aihao=request.getParameterValues("aihao"); Stringstr="";
if(aihao!=null){
for(inti=0;i<aihao.length;i++){ str=str+aihao[i]+","; } } Stringzhuanye=request.getParameter("zhuanye"); Stringphoto=request.getParameter("photo"); Stringjianjie=request.getParameter("jianjie"); 用戶注冊驗證頁面:zcyz.jsp
UserDaouser=newUserDaoImpl(); ResultSetrs=user.findName(username);
if(rs.next()){ out.println("<center><h1>用戶名已存在,請重新注冊!</h1></center>");
%>
<%@include
file="zhuce.jsp"
%>
<% }
else{
inti=user.insertNewUser(username,mima,sex,str,zhuanye,photo,jianjie);
if(i>0){ out.println("<center><h1>注冊成功,請登錄!</h1></center>");
%>
<%@include
file="denglu.jsp"
%>
<% }
else{ out.println("<center><h1>注冊失敗,請重新注冊!</h1></center>");
%>
<%@include
file="zhuce.jsp"
%>
<% } }%>
</body>用戶注冊驗證頁面:zcyz.jsp如果用戶名存在,運行效果如圖用戶注冊驗證頁面:zcyz.jsp如果用戶名不存在,則注冊成功,進行登錄,運行效果圖如圖8.4使用JDBC技術(shù)實現(xiàn)用戶登錄、注冊及修改任務(wù)三:創(chuàng)建修改用戶密碼及其驗證頁面修改用戶信息驗證頁面:passyz.jsp
<body><% request.setCharacterEncoding("utf-8"); Stringname=request.getParameter("username"); Stringmima=request.getParameter("mima"); UserDaouser=newUserDaoImp
溫馨提示
- 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 某著名企業(yè)六局高層建筑鋁合金模板施工技術(shù)
- 某著名企業(yè)外貿(mào)企業(yè)如何開某省市場
- 《GBT 16777-2008建筑防水涂料試驗方法》專題研究報告
- 《GBT 4702.16-2008金屬鉻 硫含量的測定 紅外線吸收法和燃燒中和滴定法》專題研究報告
- 道路安全培訓(xùn)季度計劃課件
- 道路交通安全知識課件
- 2025-2026年西師版初三歷史上冊期末真題和答案
- 返校安全規(guī)范培訓(xùn)
- 三年(2023-2025)黑龍江中考語文真題分類匯編:專題12 說明文閱讀(解析版)
- 邊界安全滲透培訓(xùn)課件
- 民辦學(xué)校退費管理制度
- T/CIE 115-2021電子元器件失效機理、模式及影響分析(FMMEA)通用方法和程序
- KubeBlocks把所有數(shù)據(jù)庫運行到K8s上
- 廣東省江門市蓬江區(qū)2025年七年級上學(xué)期語文期末考試試卷及答案
- 蘇州市施工圖無障礙設(shè)計專篇參考樣式(試行)2025
- 等腰三角形重難點題型歸納(七大類型)原卷版-2024-2025學(xué)年北師大版八年級數(shù)學(xué)下冊重難點題型突破
- 臨時用電變壓器安裝方案
- 社會工作項目調(diào)研方案含問卷及訪談提綱
- 2025年包頭職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫完整版
- 全國高校輔導(dǎo)員素質(zhì)能力大賽試題(談心談話、案例分析)
- 《XXXX煤礦隱蔽致災(zāi)地質(zhì)因素普查報告》審查意見
評論
0/150
提交評論