データベース接続が決定されています
要件:
1つのログインアカウント:請求項6〜12文字、数字、下線、文字のみを開始することができ;(1分)
2パスワード:「•」または「*」を表示するために必要な入力桁のパスワードは8文字以上、数字が必要であることを示しています。(1点)
3性別:単一のボックスまたはドロップダウンボックスを達成するために必要な、オプションのみ「男性」または「女性」(1点)
科学番号4:要件8桁、最初の4ビット「2018」開始時に、それらの学生IDを入力し、(1分間)
5名前:あなたの名前を入力します。
5 Eメール:正しいフォーマット[email protected]を求める要求、(1分)
6データベースへの学生の個人情報を保存するために「追加」ボタンをクリックしてください。(3点)
7デモは、データベースに接続することができます。(2点)
豆袋
パッケージtext.jsp.bean。 パブリッククラスUserBeanの{ プライベート文字列ID; プライベート文字列のパスワード。 プライベート文字列のセックス。 プライベート文字列名; プライベート文字列番号。 プライベート文字列のメール。 プライベート文字列の元; プライベート文字列XI。 プライベート文字列クラス。 プライベート文字列の時間。 プライベート文字列の場所。 パブリック文字列のgetId(){ IDを返します。 } 公共ボイドSETID(文字列ID){ this.id = ID。 } パブリック文字列getPasswordに(){ パスワードを返します。 } 公共ボイドのsetPassword(文字列のパスワード){ this.password =パスワード; } パブリック文字列getSex(){ セックスを返します。 } 公共ボイドsetSex(文字列の性別){ this.sex =セックス。 } パブリック文字列のgetName(){ 名前を返します。 } 公共ボイドのsetName(文字列名){ this.name =名前; } パブリック文字列はgetNumber(){ 数を返します。 } 公共ボイドsetNumber(列番号){ this.number =数; } パブリック文字列getmailに(){ メールを返します。 } 公共ボイドsetMail(文字列のメール){ this.mail =メール。 } パブリック文字列getYuan(){ 元に戻します。 } 公共ボイドsetYuan(文字列の元){ this.yuan =元; } パブリック文字列getXi(){ XIを返します。 } 公共ボイドsetXi(文字列XI){ this.xi = XI。 } パブリック文字列getClasses(){ クラスを返します。 } 公共のボイドsetClasses(文字列クラス){ this.classes =クラス。 } パブリック文字列getTime(){ 時間を返します。 } 公共ボイドのsetTime(文字列の時間){ this.timeは時間を=。 } パブリック文字列getPlace(){ 場所を返します。 } 公共ボイドsetPlace(文字列の場所){ this.place =場所。 } 公共UserBeanに(文字列ID、文字列のパスワード、文字列の性別、文字列名、文字列の数、文字列のメール、文字列の元、文字列XI、文字列クラス、文字列の時、文字列の場所){ this.id = ID。 this.password =パスワード; this.sex =セックス。 this.name =名前; this.number =数; this.mail =メール。 this.yuan =元; this.xi = XI。 this.classes =クラス。 this.timeは時間を=。 this.place =場所。 } }
DAOパッケージ
パッケージtext.jsp.dao。 インポートのjava.sql.Connection; インポートのjava.sql.ResultSet; 輸入ます。java.sql.SQLException; 輸入java.sql.Statementの。 輸入text.jsp.bean.UserBean。 輸入text.jsp.util.DBUtil。 パブリッククラスUserDao { パブリックブール追加(UserBeanのユーザ){ 文字列のSQL = '+ user.getId()+ " '" + user.getPassword "(text1021(ID、パスワード、性別、名前、番号、メール、元、XI、クラス、時間、場所)の値に挿入"' を()+ " ''" + user.getSex()+ " ''" + user.getName()+ " ''" + user.getNumber()+ " ''" + user.getMail() + " ''" + user.getYuan()+ " ''" + user.getXi()+ " ''" + user.getClasses()+ " ''" + user.getTime()+ " ''」+ user.getPlace()+ "')"; DBUTILデシベル=新しいDBUTIL(); 接続でCONN = db.getCon(); //÷ ステートメント状態=ヌル。 ブールF =偽; int型のA = 0; {試します 状態= conn.createStatement()。 = state.executeUpdate(SQL)。 }キャッチ(例外e){ e.printStackTrace(); } 最後に { DBUtil.close(状態、CONN)。 } IF(A> 0){ F =はtrue。 } Fを返します。 } }
utilのパッケージ
パッケージtext.jsp.util。 インポートのjava.sql.Connection; インポートのjava.sql.DriverManager。 インポートのjava.sql.ResultSet; 輸入ます。java.sql.SQLException; 輸入java.sql.Statementの。 パブリッククラスDBUTIL { プライベート静的接続コン; プライベート静的ステートメントSTM; プライベート静的のResultSet rsを、 プライベート静的な文字列クラス名=「com.mysql.cj.jdbc.Driver」。 プライベート静的文字列のURL = "?JDBCます。mysql:// localhostを:3306 / GS useUnicode =真&characterEncoding = UTF-8&serverTimezone = GMT && useSslオプション= falseを&& allowPublicKeyRetrieval =真"; パブリック接続getCon(){ {試します Class.forNameの(クラス名)。 System.out.println( "ドライバが正常にロード"); } キャッチ(ClassNotFoundExceptionが電子){ e.printStackTrace(); } {試します CON =したDriverManager.getConnection(urlには、 "ルート"、 "123456")。 System.out.println( "データベース接続成功"); } キャッチ(例外e){ e.printStackTrace(System.errの)。 CON = NULL; } 詐欺を返します。 } パブリック静的ボイド近い(ステートメントSTM、接続CONN){ もし(STM!= NULL){ {試します stm.close(); }キャッチ(のSQLException e)の{ e.printStackTrace(); } } もし(connの!= NULL){ {試します conn.close(); }キャッチ(のSQLException e)の{ e.printStackTrace(); } } } パブリック静的ボイド近い(のResultSet RS、ステートメントSTM、接続CON){ もし(RS!= NULL){ {試します rs.close(); }キャッチ(のSQLException e)の{ e.printStackTrace(); } } もし(STM!= NULL){ {試します stm.close(); }キャッチ(のSQLException e)の{ e.printStackTrace(); } } もし(CON!= NULL){ {試します con.close(); }キャッチ(のSQLException e)の{ e.printStackTrace(); } } } }
サーブレット包
パッケージtext.jsp.servlet。 インポートにjava.io.IOException; 輸入javax.servlet.ServletException; 輸入javax.servlet.annotation.WebServlet; 輸入javax.servlet.http.HttpServlet。 インポートのjavax.servlet.http.HttpServletRequest; インポートのjavax.servlet.http.HttpServletResponse; 輸入text.jsp.dao.UserDao。 輸入text.jsp.bean.UserBean。 / ** *サーブレットの実装クラスtextservlet * / @WebServlet( "/ textservlet") パブリッククラスtextservletはHttpServletを拡張{ プライベート静的最終長いserialVersionUIDの= 1L; / ** * @seeのHttpServlet#HttpServletを() * / パブリックtextservlet(){ スーパー(); // TODO自動生成されたコンストラクタのスタブ } UserDao userDao =新しいUserDao(); / ** * @seeのHttpServlet#のdoGet(HttpServletRequestのリクエスト、HttpServletResponseの応答) * / 保護されたボイドのdoGet(HttpServletRequestのリクエスト、HttpServletResponseの応答)ServletExceptionが、IOExceptionが{スロー // TODO自動生成されたメソッドスタブ request.setCharacterEncoding( "UTF-8"); response.setCharacterEncoding( "UTF-8"); response.setContentType( "textml;のcharset = UTF-8"); response.setHeader( "コンテンツタイプ"、 "textml;のcharset = UTF-8"); 文字列ID = request.getParameter( "GS1")。 文字列のパスワード= request.getParameter( "GS2"); 文字列のセックス= request.getParameter( "P"); 文字列名= request.getParameter( "GS4")。 列番号= request.getParameter( "GS5")。 文字列のメール= request.getParameter( "GS6"); ストリングの元= request.getParameter( "GS7")。 文字列XI = request.getParameter( "GS8")。 文字列クラス= request.getParameter( "GS9"); ストリング時間= request.getParameter( "P2")。 文字列の場所= request.getParameter( "GS11"); UserBeanのUserBeanの=新しいUserBeanの(ID、パスワード、性別、名前、番号、メール、元、XI、クラス、時間、場所)。 IF(userDao.add(UserBeanの)){ request.getRequestDispatcher( "success.jsp")、前方(リクエスト、レスポンス)。 } 他の{ request.getRequestDispatcher( "fail.jsp")、前方(リクエスト、レスポンス)。 } } / ** * @seeのHttpServlet#のdoPost(HttpServletRequestのリクエスト、HttpServletResponseの応答) * / 保護されたボイドのdoPost(HttpServletRequestのリクエスト、HttpServletResponseの応答)ServletExceptionが、IOExceptionが{スロー // TODO自動生成されたメソッドスタブ doGet(リクエスト、レスポンス)。 } }
JSPファイル
<%@ページ言語= "javaの" contentTypeの= "text / htmlの;のcharset = UTF-8" pageEncodingは= "UTF-8" %> <!DOCTYPE HTML> <HTML> <ヘッド> <メタ文字セット= "UTF-8"> <タイトル>ここで挿入タイトル</ TITLE> </ head>の <身体> <フォームメソッド= "POST" ACTION = "textservlet" をonSubmit = "戻りチェック()"> <div> <= "GS1" のラベル>ログインアカウント:</ label>は <input type = "text" ID = "GS1" プレースホルダは=名= "GS1" "自分のユーザー名を入力してください。"> </ div> <div> <= "GS2" のラベル>パスワード:</ label>は <input type = "パスワード" ID = "GS2" プレースホルダ= "请输入密码" クラス= "入力テキスト入力長い" NAME = "GS2"> </ div> <div> 姓别<= "GS3" のラベル>:</ label>は <名前= "P" を選択> <オプション値= "ナン">男</オプション> <オプション値= "NV">女</オプション> <選択> </ div> <div> 姓名<= "GS4" のラベル>:</ label>は <input type = "テキスト" ID = "GS4" プレースホルダ= "请输入姓名" クラス= "入力テキスト入力長い" NAME = "GS4"> </ div> <div> 学号<= "GS5" のラベル>:</ label>は <INPUT TYPE = "テキスト" ID = "GS5" プレースホルダ= "请输入学号" クラス= "入力テキスト入力長い" 名は= "GS5"> </ div> <div> <= "GS6" のラベル>メール:</ label>は <input type = "テキスト" ID = "GS6" プレースホルダ= "请输入邮件" クラス= "入力テキスト入力長い" NAME = "GS6"> </ div> <div> <= "GS7" のラベル>大学:</ label>は <input type = "テキスト" ID = "GS7" プレースホルダ= "请输入所在学院" クラス= "入力テキスト入力長い" NAME = "GS7"> </ div> <div> <= "GS8" のラベル>行:</ label>は <input type = "テキスト" ID = "GS8" プレースホルダ= "请输入所在系" クラス= "入力テキスト入力長い" NAME = "GS8"> </ div> <div> クラス<= "GS9" のラベル>:</ label>は <input type = "テキスト" ID = "GS9" プレースホルダ= "请输入所在班级" クラス= "入力テキスト入力長い" NAME = "GS9"> </ div> <div> 開始年(セッション)<= "GS10" のラベル>:</ label>は <名前= "P2" を選択> <オプション値= "2014"> 2014 </オプション> <オプション値= "2015"> 2015 </オプション> <オプション値= "2016"> 2016 </オプション> <オプション値= "2017"> 2017 </オプション> <オプション値= "2018"> 2018 </オプション> <オプション値= "2019"> 2019 </オプション> <選択> </ div> <div> <= "GS11" のラベル>学生へ:</ label>は <input type = "テキスト" ID = "GS11" NAME = "GS11"> </ div> <div> <= "GS12" のラベル>备注:</ label>は <input type = "テキスト" ID = "GS12" NAME = "GS12"> </ div> <div> <input type = "提出" ID = "スアン" NAME = "スアン" 値= "添加"> </ div> </フォーム> <! - 入力フィールドの検証セクション - > ます。<script type = "text / javascriptの"> 機能チェック(){ VARのユーザ名=のdocument.getElementById( "GS1"); VaRのパスワード=のdocument.getElementById( "GS2"); VAR番号=のdocument.getElementById( "GS5")。 VARメール=のdocument.getElementById( "GS6"); VAR SREG = /[_a-zA-Z\d\-\.]+@[_a-zA-Z\d\-]+(\.[_a-zA-Z\d\-]+)+$/ ; //正規表現 //ユーザ名の数字であれば IF((username.value).LENGTH <6 ||(username.value).LENGTH> 12){ 警告(「6〜12英語の文字や数字を文字で始まるから口座番号を入力します」); gs1.focus(); falseを返します。 } //ユーザ名は、中国語の文字が含まれている場合 {(/.* [\ u4e00- \ u9fa5] +。* $ /。テスト(username.value))の場合 警告(「文字を含めることはできませんアカウントのユーザー名」); gs1.focus(); falseを返します。 } //ユーザー名は文字で始まるかどうかを判断します IF(!ますisNaN(username.value [0])){ 警告(「アカウントが文字で始まるログインしてください」); gs1.focus(); falseを返します。 } //パスワードの数を決定します もし((password.value).LENGTH!= 8){ 警告(「パスワードは8つの英数字でなければなりません」); gs2.focus(); falseを返します。 } //学生数は2018で始まるかどうかを判断します (number.value < "2018万" || number.value> "20189999")の場合 { 警告(「2018年の初めから8ビットの学生数」); gs5.focus(); falseを返します。 } //電話番号が正当であることを確認 //正しいメールボックス形式かどうかを判断します (もし!sReg.test(mail.value)){ 警告(「メールボックス形式エラー」); gs6.focus(); falseを返します。 } } </ SCRIPT> <! - エンドの検証 - > </ BODY> </ HTML>