版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
年4月19日圖書管理系統(tǒng)增刪查改jspservlet基礎(chǔ)項目BaseDao文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。這是圖書管理系統(tǒng)的課后作業(yè)增刪查改BaseDaojsp提交到servletBaseDao.java數(shù)據(jù)庫操作通用類packagecombook.dao;importjava.sql.*;importcom.dao.util.ConfigManager;importcommon.*;publicclassBaseDao{//數(shù)據(jù)庫操作通用類 protectedConnectionconn; /**定義靜態(tài)變量接收加載驅(qū)動*/ privatestaticStringdriver; /**定義靜態(tài)變量得到連接*/ privatestaticStringurl; privatestaticStringuserName;//數(shù)據(jù)庫用戶名 privatestaticStringpassword;//數(shù)據(jù)庫密碼 //靜態(tài)的Connection對象 static{ driver=ConfigManager.getInstance().getString("driver"); url=ConfigManager.getInstance().getString("url"); userName=ConfigManager.getInstance().getString("userName"); password=ConfigManager.getInstance().getString("password"); } protectedResultSetrs; protectedStatementstmt; protectedPreparedStatementps; //獲取鏈接的方法 publicbooleangetConnection(){ if(conn!=null){//判斷連接對象是否為空 returnfalse; } try{ Class.forName(driver);//加載驅(qū)動 //根據(jù)url,用戶名和密碼獲取鏈接獲取的是connection對象 conn=DriverManager.getConnection(url,userName,password); }catch(ClassNotFoundExceptione){ e.printStackTrace(); }catch(SQLExceptione){ e.printStackTrace(); } returntrue; } //增刪改的方法子類能夠調(diào)用這個方法幫助執(zhí)行sql語句 publicintexecute(Stringsql,Object[]params){ try{ ps=conn.prepareStatement(sql);//預(yù)編譯傳過來的sql語句 if(params!=null){//如果子類傳過來的參數(shù)不為空的話遍歷循環(huán)判斷使參數(shù)兼容 for(inti=0;i<params.length;i++){//遍歷參數(shù)數(shù)組 Objectobj=params[i];//參數(shù)是Object類型的因此Object先接收然后判斷 if(objinstanceofString){ ps.setString((i+1),(String)obj);//如果該參數(shù)是String類型的就強(qiáng)轉(zhuǎn)設(shè)置數(shù)組的的該位置元素是String類型 }elseif(objinstanceofInteger){ ps.setInt((i+1),(Integer)obj); }elseif(obj==null){//這樣判斷一下因為有圖片傳入判斷不了類型 obj="";//賦值為空 ps.setString((i+1),(String)obj);//默認(rèn)設(shè)置為String類型 } } }//執(zhí)行sql intcount=ps.executeUpdate(); returncount; }catch(SQLExceptione){ e.printStackTrace(); return0; } } //獲取結(jié)果集的方法 publicResultSetexcuteSql(Stringsql,Object[]params){ try{ rs=ps.executeQuery(sql); for(inti=0;i<params.length;i++){ if(params[i]instanceofString){ ps.setString((i+1),(String)params[i]); }elseif(params[i]instanceofInteger){ ps.setInt((i+1),(Integer)params[i]); } } }catch(SQLExceptione){ e.printStackTrace(); } returnrs; } publicbooleancloseResource(){ if(rs!=null){ try{ rs.close(); }catch(SQLExceptione){ e.printStackTrace(); returnfalse; } } if(ps!=null){ try{ ps.close(); }catch(SQLExceptione){ e.printStackTrace(); returnfalse; } } if(conn!=null){ try{ conn.close(); conn=null; }catch(SQLExceptione){ e.printStackTrace(); returnfalse; } } returntrue; } //方法重載如果需要關(guān)閉幾個資源就選擇哪個方法 publicvoidcloseResource(Connectionconn){ if(conn==null){ try{ conn.close(); }catch(SQLExceptione){ e.printStackTrace(); } } }}Dao層接口--BookDao.javapackagecombook.dao;importjava.util.List;importcombook.dto.Book;importcommon.dto.PageDto;publicinterfaceBookDao{ publicList<Book>getBooksList(PageDtopagedto)throwsException;//獲得圖書集合的方法--所有信息 //增加一本圖書信息 publicintinsertBooks(Bookbook)throwsException; //根據(jù)圖書編號刪除新聞 publicintdelete(intbid)throwsException; //修改信息--傳入的是圖書對象 publicintupdate(Bookbook)throwsException; //根據(jù)圖書編號查找該圖書 //根據(jù)圖書編號查找該圖書 publicBookquery(intbid)throwsException; publicList<Book>query(Stringbookname)throwsException; //獲得總記錄的方法 publicintgetAllRowCount()throwsException; }BookImpl.java實現(xiàn)類實現(xiàn)了接口繼承了BaseDao.javapackagecombook.dao.impl;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.Statement;importjava.util.ArrayList;importjava.util.List;importcombook.dao.BaseDao;importcombook.dao.BookDao;importcombook.dto.Book;importcommon.dto.PageDto;publicclassBookImplextendsBaseDaoimplementsBookDao{ //1、查詢所有信息返回一個帶有泛型的集合 publicList<Book>getNewsList()throwsException{ //定義一個集合集合是對應(yīng)的要返回出去的泛型集合 List<Book>bookList=newArrayList<Book>(); super.getConnection();//獲得連接經(jīng)過父類的方法 conn.prepareStatement("select*fromnews"); rs=ps.executeQuery();//返回結(jié)果集 while(rs.next()){//循環(huán)結(jié)果集中的數(shù)據(jù)判斷結(jié)果集中是否還有下一個內(nèi)容 Bookbook=newBook();//創(chuàng)立一個實例對象 //把結(jié)果集中的圖書信息封裝到圖書對象中去 book.setBid(rs.getInt("bid")); book.setBookName(rs.getString("bookName")); book.setImage(rs.getString("image")); book.setPrice(Double.parseDouble(rs.getString("b_price"))); book.setStock(rs.getInt("stock")); //將圖書對象添加到集合中去因為集合是帶有圖書泛型因此不需要強(qiáng)轉(zhuǎn)直接添加圖書對象 bookList.add(book); } //調(diào)用父類方法釋放資源 super.closeResource(); returnbookList; } //獲得數(shù)據(jù)庫中所有的圖書信息 publicList<Book>getBooksList(PageDtopagedto)throwsException{ //新建一個帶有book泛型的集合 List<Book>bookList=newArrayList<Book>(); super.getConnection();//第一步獲得與數(shù)據(jù)庫的連接 intstart=pagedto.getStartIndex();//分頁查詢開始 intend=pagedto.getEndIndex();//分頁查詢結(jié)束 //寫分頁查詢的sql語句 Stringsql="select*from(selectb.*,rownumrnfrombooksb)wherern>=?andrn<?"; ps=conn.prepareStatement(sql);//預(yù)編譯sql語句 ps.setInt(1,start);//設(shè)置第一個參數(shù)的值 ps.setInt(2,end);//設(shè)置第二個參數(shù)的值 //執(zhí)行查詢語句 rs=ps.executeQuery(); //循環(huán)結(jié)果集的數(shù)據(jù) while(rs.next()){ //實例化一個圖書的對象 Bookbook=newBook(); //把結(jié)果集中的圖書信息封裝到圖書對象中去 book.setBid(rs.getInt("bid")); book.setBookName(rs.getString("bookName")); book.setImage(rs.getString("image")); book.setPrice(Double.parseDouble(rs.getString("b_price"))); book.setStock(rs.getInt("stock")); //將圖書對象添加到集合中去因為集合是帶有圖書泛型因此不需要強(qiáng)轉(zhuǎn)直接添加圖書對象 bookList.add(book); } super.closeResource(); returnbookList; } //向表中插入新書的方法傳入的是圖書對象返回影響的行數(shù) publicintinsertBooks(Bookbook)throwsException{ super.getConnection();//第一步獲得與數(shù)據(jù)庫的連接 //新建一個參數(shù)的數(shù)組填充占位符 Objectparams[]=newObject[5]; params[0]=book.getBid(); params[1]=book.getBookName(); params[2]=book.getPrice(); params[3]=book.getImage(); params[4]=book.getStock(); Stringsql="insertintobookvalues(?,?,?,?,?)"; //預(yù)編譯sql語句 ps=conn.prepareStatement(sql); //執(zhí)行更新數(shù)據(jù)庫的sql語句操作 intcount=super.execute(sql,params); super.closeResource(); returncount; } //刪除圖書的方法根據(jù)穿過來的圖書id publicintdelete(intbid)throwsException{ super.getConnection();//第一步獲得與數(shù)據(jù)庫的連接 //填充占位符 Objectparams[]=newObject[1]; params[0]=bid; Stringsql="deletefrombookwherebid=?";//刪除的sql語句 //預(yù)編譯sql語句 ps=conn.prepareStatement(sql); //調(diào)用父類的執(zhí)行sql intcount=super.execute(sql,params); //釋放資源 super.closeResource(); //返回受影響的行數(shù) returncount; } //修改圖書的方法傳入圖書的對象 publicintupdate(Bookbook)throwsException{ super.getConnection();//第一步獲得與數(shù)據(jù)庫的連接 //填充占位符 Objectparams[]=newObject[4]; params[0]=book.getBookName(); params[1]=book.getPrice(); params[2]=book.getImage(); params[3]=book.getStock(); Stringsql="updatebooksetbookname=?,b_price=?,image=?,stock=?"; ps=conn.prepareStatement(sql); intcount=super.execute(sql,params); super.closeResource(); returncount; } publicBookquery(intbid)throwsException{ super.getConnection();//第一步獲得與數(shù)據(jù)庫的連接 Bookbook=newBook(); //填充占位符 Objectparams[]=newObject[1]; params[0]=bid; Stringsql="select*frombookswherebid=?"; conn.prepareStatement(sql); rs=super.excuteSql(sql,params); if(rs.next()){ //把結(jié)果集中的圖書信息封裝到圖書對象中去 book.setBid(rs.getInt("bid")); book.setBookName(rs.getString("bookName")); book.setImage(rs.getString("image")); book.setPrice(rs.getDouble("b_price")); book.setStock(rs.getInt("stock")); } super.closeResource(); returnbook; } publicList<Book>query(Stringbookname)throwsException{ super.getConnection();//第一步獲得與數(shù)據(jù)庫的連接 //新建一個帶有book泛型的集合 List<Book>bookList=newArrayList<Book>(); //填充占位符 //Objectparams[]=newObject[1]; //params[0]=bookname; Stringsql="select*frombookswherebooknamelike?"; ps=conn.prepareStatement(sql); ps.setString(1,"%"+bookname+"%"); //rs=super.excuteSql(sql,params); rs=ps.executeQuery(); while(rs.next()){ Bookbook=newBook(); //把結(jié)果集中的圖書信息封裝到圖書對象中去 book.setBid(rs.getInt("bid")); book.setBookName(rs.getString("bookName")); book.setImage(rs.getString("image")); book.setPrice(rs.getDouble("b_price")); book.setStock(rs.getInt("stock")); bookList.add(book); } super.closeResource(); returnbookList; } publicintgetAllRowCount()throwsException{ super.getConnection();//獲得連接 intcount=0; //查找到所有記錄 Stringsql="selectcount(*)frombooks"; ps=conn.prepareStatement(sql);//預(yù)編譯sql語句 rs=ps.executeQuery();//返回一個結(jié)果集 if(rs.next()){ count=rs.getInt(1);//獲得結(jié)果集的第一條 } super.closeResource(); returncount; }}用戶表UserInfoDao.java接口packagecombook.dao;importjava.util.List;importcombook.dto.Book;importcombook.dto.UserInfo;importcommon.dto.PageDto;publicinterfaceUserInfoDao{ //傳入一個用戶的對象判斷這個對象是否在數(shù)據(jù)庫中存在 publicintqueryObject(UserInfouser)throwsException; //根據(jù)用戶名查找該數(shù)據(jù)庫表中有沒有重復(fù)的用用戶 publicintquery(StringuserName)throwsException; //增加一個用戶信息--傳入一個用戶對象 publicintinsertUserInfo(UserInfouser)throwsException; //修改信息--傳入的是用戶對象 publicintupdate(UserInfouser)throwsException; }UserInfoDaoImpl實現(xiàn)類packagecombook.dao.impl;importjava.sql.SQLException;importjava.util.List;importcombook.dao.BaseDao;importcombook.dao.UserInfoDao;importcombook.dto.Book;importcombook.dto.UserInfo;importcommon.dto.PageDto;publicclassUserInfoDaoImplextendsBaseDaoimplementsUserInfoDao{ //向用戶表中添加一個新的用戶信息 publicintinsertUserInfo(UserInfouser)throwsException{ super.getConnection();//第一步獲得與數(shù)據(jù)庫的連接 //定義數(shù)組用于填充占位符 Objectparams[]=newObject[3]; params[0]=user.getUserName(); params[1]=user.getPassword(); params[2]=user.getEmail(); //定義一個sql語句向表中插入數(shù)據(jù) Stringsql="insertintouserInfovalues(?,?,?)"; //預(yù)編譯sql語句 //ps=conn.prepareStatement(sql); //ps.setString(1,x) //調(diào)用父類的執(zhí)行sql的操作 intcount=super.execute(sql,params); super.closeResource(); returncount; } publicintupdate(UserInfouser)throwsException{ return0; } //傳入一個用戶名判斷這個用戶名是否存在返回一個查找的記錄 publicintquery(StringuserName)throwsException{ super.getConnection();//第一步獲得與數(shù)據(jù)庫的連接 intcount=0; Stringsql="selectcount(*)fromuserInfowhereuserName=?"; try{ //預(yù)編譯sql ps=conn.prepareStatement(sql); //用ps填充占位符 ps.setString(1,userName); rs=ps.executeQuery();//執(zhí)行sql返回一個結(jié)果集 //找到結(jié)果集的第一條數(shù)據(jù) if(rs.next()){ count=rs.getInt(1); } }catch(SQLExceptione1){ e1.printStackTrace(); }//釋放資源 super.closeResource(); returncount; } publicintqueryObject(UserInfouser)throwsException{ super.getConnection();//第一步獲得與數(shù)據(jù)庫的連接 Stringsql="selectcount(*)fromuserInfowhereuserName=?andpasswords=?"; //預(yù)編譯sql ps=conn.prepareStatement(sql); //填充占位符 ps.setString(1,user.getUserName()); ps.setString(2,user.getPassword()); //執(zhí)行sql語句 rs=ps.executeQuery(); intcount=0; //找到結(jié)果集的第一條數(shù)據(jù) if(rs.next()){ count=rs.getInt(1); } super.closeResource(); returncount; }}數(shù)據(jù)庫當(dāng)中的表對應(yīng)的實體類DTO層packagecombook.dto;/***圖書類**/publicclassBook{ privateintbid;//圖書編號 privateStringbookName;//圖書名字 privatedoubleprice;//圖書價格 privateStringimage;//圖書圖片 privateintstock;//庫存 publicintgetBid(){ returnbid; } publicvoidsetBid(intbid){ this.bid=bid; } publicStringgetBookName(){ returnbookName; } publicvoidsetBookName(StringbookName){ this.bookName=bookName; } publicdoublegetPrice(){ returnprice; } publicvoidsetPrice(doubleprice){ this.price=price; } publicStringgetImage(){ returnimage; } publicvoidsetImage(Stringimage){ this.image=image; } publicintgetStock(){ returnstock; } publicvoidsetStock(intstock){ this.stock=stock; } }用戶表的實體類packagecombook.dto;/**用戶類*/publicclassUserInfo{ privateStringuserName;//用戶名 privateStringpassword;//密碼 privateStringemail;//郵箱 publicStringgetUserName(){ returnuserName; } publicvoidsetUserName(StringuserName){ this.userName=userName; } publicStringgetPassword(){ returnpassword; } publicvoidsetPassword(Stringpassword){ this.password=password; } publicStringgetEmail(){ returnemail; } publicvoidsetEmail(Stringemail){ this.email=email; } }注冊的servlet的提交地址packagecombook.servlet;importjava.io.IOException;importjava.io.UnsupportedEncodingException;importjava.sql.PreparedStatement;importjava.sql.SQLException;importjavax.servlet.ServletConfig;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importcombook.dao.BaseDao;importcombook.dao.UserInfoDao;importcombook.dao.impl.UserInfoDaoImpl;importcombook.dto.UserInfo;importcombook.service.UserInfoService;importcombook.service.impl.UserInfoServiceImpl;publicclassRegisterServletextendsHttpServlet{ /** * */ privatestaticfinallongserialVersionUID=1L; protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException{ //在地址欄直接敲代碼會調(diào)用doGet System.out.println("進(jìn)入doGet方法"); //調(diào)用doPost方法實現(xiàn)代碼重用省掉代碼 try{ doPost(request,response); }catch(Exceptione){ e.printStackTrace(); } } protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse){ System.out.println("進(jìn)入doPost方法"); try{//獲得表單提交過來的用戶名 try{ request.setCharacterEncoding("utf-8"); }catch(UnsupportedEncodingExceptione1){ e1.printStackTrace(); }//設(shè)置編碼格式解決中文亂碼 response.setCharacterEncoding("utf-8"); StringuserName=request.getParameter("userName"); //實例化一個用戶表數(shù)據(jù)層的實例 UserInfoDaouserInfo=newUserInfoDaoImpl(); //調(diào)用根據(jù)傳入提交過來的用戶名查詢獲得該用戶是否存在返回一個int類型 intcount=userInfo.query(userName); if(count>0){//說明該用戶存在-跳到錯誤頁面-返回重新注冊 response.sendRedirect("./jbook/registererror.jsp"); }elseif(count==0){//說明能夠進(jìn)入下一步--把新注冊的用戶存到數(shù)據(jù)庫中的用戶表中去 //實例化用戶表的信息 UserInfouser=newUserInfo(); //封裝表單提交過來的表單數(shù)據(jù) //將提交過來的表單元素值賦值給用戶表對象 StringuserNames=request.getParameter("userName"); Stringpassword=request.getParameter("password"); Stringemail=request.getParameter("email"); user.setUserName(userNames); user.setPassword(password); user.setEmail(email); //實例化業(yè)務(wù)邏輯層的操作將數(shù)據(jù)放到數(shù)據(jù)庫中去 intcounts=userInfo.insertUserInfo(user); //將用戶名保存在request作用域中進(jìn)入首頁能夠用 request.setAttribute("userName",userName); response.sendRedirect("./jbook/login.jsp"); } }catch(Exceptione){ e.printStackTrace(); } } //初始化方法只會初始化一次 publicvoidinit(ServletConfigconfig){ System.out.println("初始化注冊提交servlet"); } //銷毀實例的方法 publicvoiddestroy(){ System.out.println("銷毀注冊提交servlet"); } }登錄的jsp提交到這個Servletpackagecombook.servlet;importjava.io.IOException;importjava.io.UnsupportedEncodingException;importjavax.servlet.ServletConfig;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importcombook.dao.UserInfoDao;importcombook.dao.impl.UserInfoDaoImpl;importcombook.dto.UserInfo;publicclassLoginServletextendsHttpServlet{ /** * */ privatestaticfinallongserialVersionUID=1L; @Override protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ System.out.println("登錄提交進(jìn)入doGet方法"); doPost(request,response); } @Override protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ System.out.println("登錄提交進(jìn)入doPost方法"); try{//獲得表單提交過來的用戶名 try{ request.setCharacterEncoding("utf-8"); }catch(UnsupportedEncodingExceptione1){ e1.printStackTrace(); }//設(shè)置編碼格式解決中文亂碼 response.setCharacterEncoding("utf-8"); StringuserName=request.getParameter("userName"); Stringpassword=request.getParameter("password"); //實例化一個用戶表數(shù)據(jù)層的實例 UserInfoDaouserInfo=newUserInfoDaoImpl(); //實例化用戶表的信息 UserInfouser=newUserInfo(); //封裝表單提交過來的表單數(shù)據(jù) //將提交過來的表單元素值賦值給用戶表對象 user.setUserName(userName); user.setPassword(password); //調(diào)用查詢該用戶對象存在與否的方法 intcount=userInfo.queryObject(user); if(count>0){//說明該登錄用戶存在是合法的用戶-跳到圖書首頁 HttpSessionsession=request.getSession();//獲取會話對象 session.setAttribute("userName",userName);//對象保存到session作用域 response.sendRedirect("./jbook/BookIndex.jsp"); }elseif(count==0){//說明該登錄用戶并不存在 response.sendRedirect("./jbook/loginerror.jsp"); } }catch(Exceptione){ e.printStackTrace(); } } //初始化方法只會初始化一次 publicvoidinit(ServletConfigconfig){ System.out.println("初始化登錄提交servlet"); } //銷毀實例的方法 publicvoiddestroy(){ System.out.println("銷毀登錄提交servlet"); } }配置文件類ConfigManager.javapackagecombook.util;importjava.io.IOException;importjava.io.InputStream;importjava.util.Properties;/***構(gòu)造數(shù)據(jù)庫訪問的工具類用于讀取配置文件*@authorAdministrator**/publicclassConfigManager{ privatestaticConfigManagerconfigManager;//自身對象 privatestaticPropertiesproperties;//讀取配置文件類 //在構(gòu)造工具類時,進(jìn)行配置文件的讀取 privateConfigManager(){//私有的構(gòu)造方法 StringconfigFile="perties";//定義配置文件路徑 properties=newProperties();//定義Properties對象 //將文件讀取成流的方法--加載獲得資源流 InputStreamin=ConfigManager.class.getClassLoader().getResourceAsStream(configFile); try{ properties.load(in);//加載流里面的數(shù)據(jù)讀到配置文件中去 in.close(); }catch(IOExceptione){ e.printStackTrace(); } } //因為構(gòu)造方法是私有的因此經(jīng)過這個方法實例化一個對象 //設(shè)置實例化對象的個數(shù) publicstaticConfigManagergetInstance(){ if(configManager==null){//如果自身對象為空就實例化一個對象 configManager=newConfigManager(); } returnconfigManager; } //經(jīng)過key獲得對應(yīng)的value到配置流里面讀取指定的數(shù)據(jù) publicStringgetString(Stringkey){ returnproperties.getProperty(key); } }pertiesdriver=oracle.jdbc.driver.OracleDriverurl=jdbc:oracle:thin:@localhost:1521:MyOracleuserName=liftminepassword=liftpwdregister.jsp<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%><%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><basehref="<%=basePath%>"><title>注冊頁面</title> <metahttp-equiv="pragma"content="no-cache"> <metahttp-equiv="cache-control"content="no-cache"> <metahttp-equiv="expires"content="0"> <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"> <metahttp-equiv="description"content="Thisismypage"> <!-- <linkrel="stylesheet"type="text/css"href="styles.css"> --> <styletype="text/css"> .right{color:#92BB22;} .wrong{color:#F80102;} #headul{list-style:none;} #headulli{float:left;} #headullia{text-decoration:none;} #mytable{margin-left:300px;margin-top:50px;} .near{margin-left:10px;} </style> <scripttype="text/javascript"> functioncheck(){ varform=document.registerform;//獲得表單的對象 //驗證用戶名 varuserName=form.userName.value;//根據(jù)表單獲得用戶名的值 if(userName.length==0){//說明沒有輸入用戶名 wrong("userNamespan","用戶名不能夠為空"); return; }else{ right("userNamespan"); } //驗證密碼 varpassword=form.password.value; if(password.length==0){ wrong("passwordspan","密碼輸入不能為空"); return; }else{ right("passwordspan");//調(diào)用正確輸入的方法 } //驗證確認(rèn)密碼 varrepassword=form.repassword.value; if(repassword.length==0||repassword!=password){ wrong("repasswordspan","確認(rèn)密碼輸入不能為空或兩次密碼輸入不一致"); return; }else{ right("repasswordspan");//調(diào)用正確輸入的方法 } //驗證郵箱 varemail=form.email.value; //以字符開頭一次到多次然后@然后又是字符一個或多個再加.字母2到3次點及以后的內(nèi)容匹配1到2次例如會有. varreg=/^\w+@\w+(\.[a-zA-Z]{2,3}){1,2}$/; if(email.length==0||reg.test(email)==false){ wrong("emailspan","Email地址不能為空或格式填寫有誤"); return; }else{right("emailspan");} form.submit(); } //用戶輸入合法時的提示方法 functionright(id){ document.getElementById(id).innerHTML="ok"; document.getElementById(id).className="right"; } //用戶輸入不合法時的提示方法 functionwrong(id,message){ document.getElementById(id).innerHTML=message; //設(shè)置樣式 document.getElementById(id).className="wrong"; } </script></head><body><h1style="margin-left:200px;">歡迎注冊北大青鳥網(wǎng)上書城</h1><divid="head"> <ul> <listyle="margin-left:200px;"><ahref="register.jsp">1.填寫注冊信息</a></li> <listyle="margin-left:500px;"><ahref="./jbook/BookIndex.jsp">2.注冊成功</a></li> </ul></div><formaction="RegisterServlet"method="post"name="registerform"> <tableid="mytable"width="70%"align="center"> <tr> <td>用戶名:</td> <td><inputtype="text"name="userName"><spanid="userNamespan"></span></td> </tr> <tr> <td>密碼:</td> <td><inputtype="password"name="password"><spanid="passwordspan"></span></td> </tr> <tr> <td>確認(rèn)密碼:</td> <td><inputtype="password"name="repassword"><spanid="repasswordspan"></span></td> </tr> <tr> <td>email:</td> <tdclass="near"><inputtype="text"name="email"><spanid="emailspan"></span></td> </tr> <tr> <tdcolspan="2"style="margin-left:800px;"> <buttontype="button"onclick="check()">注冊</button> <buttontype="reset">重置</button> </td> </tr></table></form></body></html>registererror.jsp<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%><%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><basehref="<%=basePath%>"><title>注冊失敗</title> <metahttp-equiv="pragma"content="no-cache"> <metahttp-equiv="cache-control"content="no-cache"> <metahttp-equiv="expires"content="0"> <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"> <metahttp-equiv="description"content="Thisismypage"> <!-- <linkrel="stylesheet"type="text/css"href="styles.css"> --></head><body><imgsrc="images/-07-09_181427.png"/> <h1>注冊失敗,該用戶名已經(jīng)存在。3秒之后跳回注冊頁面</h1> <%response.setHeader("refresh","3;URL=register.jsp");//設(shè)置三秒鐘之后跳轉(zhuǎn)到主頁%></body></html>login.jsp<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%><%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><basehref="<%=basePath%>"><title>登錄頁面</title> <metahttp-equiv="pragma"content="no-cache"> <metahttp-equiv="cache-control"content="no-cache"> <metahttp-equiv="expires"content="0"> <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"> <metahttp-equiv="description"content="Thisismypage"> <!-- <linkrel="stylesheet"type="text/css"href="styles.css"> --> <styletype="text/css"> .right{color:#92BB22;} .wrong{color:#F80102;} </style> <scripttype="text/javascript"> functioncheck(){ varform=document.loginform; varuserName=form.userName.value; if(userName.length==0){//用戶名為空的時候 document.getElementById("userNamespan").innerHTML="用戶名不得為空"; document.getElementById("userNamespan").className="wrong"; }else{ document.getElementById("userNamespan").innerHTML="ok"; document.getElementById("userNamespan").className="right"; } varpassword=form.password.value; if(password.length==0){//用戶名為空的時候 document.getElementById("passwordspan").innerHTML="用戶名不得為空"; document.getElementById("passwordspan").className="wrong"; }else{ document.getElementById("passwordspan").innerHTML="ok"; document.getElementById("passwordspan").className="right"; } form.submit();//提交表單 } </script></head><body> <h2>歡迎進(jìn)入登錄界面</h2><tableborder="1"cellspacing="0"cellpadding="0"align="center"width="500px"height="200px"style="line-hight:30px"><formaction="LoginServlet"name="loginform"method="post"> <tralign="right"> <td>用戶名:</td> <td><inputtype="text"name="userName"value=""><spanid="userNamespan"></span></td> </tr> <tralign="right"> <td>密碼:</td> <td><inputtype="password"name="password"value=""><spanid="passwordspan"></span></td> </tr> <tralign="center"> <tdcolspan="2"align="center"> <buttontype="button"onclick="check()">登錄</button> </td> </tr> </form></table></body></html>loginerror.jsp<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%><%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><basehref="<%=basePath%>"><title>登錄錯誤頁面</title> <metahttp-equiv="pragma"content="no-cache"> <metahttp-equiv="cache-control"content="no-cache"> <metahttp-equiv="expires"content="0"> <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"> <metahttp-equiv="description"content="Thisismypage"> <!-- <linkrel="stylesheet"type="text/css"href="styles.css"> --></head><body><imgsrc="images/-07-09_181427.png"/> <h1>登錄失敗,該用戶并不存在無法登錄。3秒之后跳回登錄頁面</h1> <%response.setHeader("refresh","3;URL=login.jsp");//設(shè)置三秒鐘之后跳轉(zhuǎn)到主頁%></body></html>BookIndex.jsp<%@pageimport="combook.dao.impl.BookImpl"%><%@pageimport="combook.dao.BookDao"%><%@pageimport="combook.dto.Book"%><%@pageimport="common.dto.PageDto"%><%@pageimport="combook.service.impl.BookServiceImpl"%><%@pageimport="combook.service.BookService"%><%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%><%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");%><%@taglibprefix="fmt"uri=""%><%@taglibprefix="c"uri=""%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><basehref="<%=basePath%>"><title>網(wǎng)上書城首頁</title> <metahttp-equiv="pragma"content="no-cache"> <metahttp-equiv="cache-control"content="no-cache"> <metahttp-equiv="expires"content="0"> <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"> <metahttp-equiv="description"content="Thisismypage"> <!-- <linkrel="stylesheet"type="text/css"href="styles.css"> --><scripttype="text/javascript"> //跳轉(zhuǎn)到某個頁面的方法傳入一個頁數(shù) functiongotoPage(pageCount){ varpagesIndex=document.getElementById("gotopage").value;//接收input框用戶輸入的頁碼 //將頁碼轉(zhuǎn)換成int pagesIndex=parseInt(pagesIndex); //排除用戶輸入的兩個錯誤點 if(pagesIndex>=pageCount){//如果大于總頁數(shù)的話跳轉(zhuǎn)到末頁 location.href="./jbook/BookIndex.jsp?pageIndex="+pageCount; }elseif(pagesIndex<=1){//小于等于1跳轉(zhuǎn)到1頁 location.href="./jbook/BookIndex.jsp?pa
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026浙江寧波市北侖區(qū)港航管理中心招聘編外人員1人備考題庫及一套答案詳解
- 2026貴州黔東南州黃平縣中醫(yī)醫(yī)院招聘編外人員6人備考題庫(第一輪)完整答案詳解
- 南陽職業(yè)學(xué)院《建筑材料》2023-2024學(xué)年第二學(xué)期期末試卷
- 鄭州幼兒師范高等專科學(xué)?!抖悇?wù)會計與籌劃》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江旅游職業(yè)學(xué)院《大數(shù)據(jù)技術(shù)原理與應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧稅務(wù)高等??茖W(xué)校《稅收籌劃》2023-2024學(xué)年第二學(xué)期期末試卷
- 云南輕紡職業(yè)學(xué)院《工程造價管理實驗》2023-2024學(xué)年第二學(xué)期期末試卷
- 南京交通職業(yè)技術(shù)學(xué)院《數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 南京信息職業(yè)技術(shù)學(xué)院《組織理論》2023-2024學(xué)年第二學(xué)期期末試卷
- 云南三鑫職業(yè)技術(shù)學(xué)院《智能競速模型車設(shè)計實現(xiàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 產(chǎn)品工藝評審管理辦法
- 事業(yè)單位市場監(jiān)督管理局面試真題及答案
- 巷道工程清包工合同范本
- 廣西鹿寨萬強(qiáng)化肥有限責(zé)任公司技改擴(kuò)能10萬噸-年復(fù)混肥建設(shè)項目環(huán)評報告
- 三級醫(yī)院營養(yǎng)科建設(shè)方案
- (2025年標(biāo)準(zhǔn))彩禮收條協(xié)議書
- 賓得全站儀R-422NM使用說明書
- 2025年國家公務(wù)員考試《申論》真題及答案解析(副省級)
- 貴州省遵義市2024屆高三第三次質(zhì)量監(jiān)測數(shù)學(xué)試卷(含答案)
- 江蘇省勞動合同模式
- 速凍食品安全風(fēng)險管控清單
評論
0/150
提交評論