데이터베이스 연결이 결정되었습니다
요구 사항 :
로그인 계정 1 : 청구항 6 내지 12의 문자, 숫자, 밑줄 문자 만이 시작될 수있다 (1 분)
2 암호 : "•"또는 "*"를 표시하는 데 필요한 입력 자리 암호, 숫자를 8 개 이상의 문자를 필요한 것을 나타냅니다. (1 점)
3 성별 : 하나의 상자를 달성 또는 드롭 다운 상자에서 옵션은 "남성"또는 "여성"필요 (1 점)
과학 번호 4 : 처음에 요구 8 자리, 제 4 비트 "2018", 그 학생 ID를 입력 (1 분)
5 이름 : 이름을 입력;
5 E 메일 : 올바른 형식 [email protected] 결정 요청 (MIN. 1)
6 데이터베이스에 대한 학생들의 개인 정보를 저장하기 위해 "추가"버튼을 클릭합니다. (3 점)
7 데모는 데이터베이스에 연결할 수 있습니다. (2 점)
콩 주머니
패키지 text.jsp.bean; 공용 클래스이 UserBean { 개인 문자열 아이디; 개인 문자열 비밀 번호; 개인 문자열 섹스; 개인 문자열 이름; 개인 문자열 번호; 개인 문자열 메일; 개인 문자열 위안; 개인 문자열 XI; 개인 문자열 클래스; 개인 문자열 시간; 개인 문자열 장소; 공공 문자열 getId () { 반환 아이디; } 공개 무효 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 (문자열 시간) { 이거 펴 시간 =; } 공공 문자열 getPlace는 () { 장소를 반환; } 공공 무효 setPlace (문자열 장소) { this.place = 장소; } 대중이 UserBean (문자열 ID, 문자열 암호, 문자열 섹스, 문자열 이름, 문자열 번호, 문자열 메일, 문자열 위안, 문자열 XI, 문자열 클래스 문자열 시간 문자열 장소) { this.id = 아이디; this.password = 암호; this.sex = 섹스; this.name = 이름; this.number = 번호; this.mail = 메일; this.yuan = 원; this.xi = XI; this.classes = 클래스; 이거 펴 시간 =; 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 = "text1021 (아이디, 비밀번호, 성별, 이름, 번호, 메일, 위안, XI, 클래스, 시간, 장소) 값 ( '삽입'+ user.getId () + "", ""+ user.getPassword () + "", ""+ user.getSex () + "", ""+ user.getName () + "", ""+ user.getNumber () + "", ""+ user.getMail () + "", ""+ user.getYuan () + "", ""+ user.getXi () + "", ""+ user.getClasses () + " ', 문 상태 = NULL; 부울 F = 거짓; INT의 A = 0; 시도 { 상태 = conn.createStatement (); A = state.executeUpdate (SQL); } 캐치 (예외 전자) { e.printStackTrace (); 마지막} { DBUtil.close (주 코네티컷); } 경우 (a> 0) { F = TRUE; } F를 반환; } }
폴더의 유틸리티 패키지
패키지 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 = TRUE & characterEncoding = UTF-8 serverTimezone = GMT && useSSL = 거짓 && allowPublicKeyRetrieval = 사실"; 공공 연결 getCon () { 시도 { Class.forName을 (클래스 명); 에서 System.out.println ( " } 캐치 (ClassNotFoundException가 전자) { e.printStackTrace (); } {시도 ( "123456", "루트"URL) 사기꾼 = DriverManager.getConnection를을; 에서 System.out.println ( "数据库连接成功"); } 캐치 (예외 전자) { e.printStackTrace (System.err에); 사기꾼 = 널 (null); } 죄수를 반환; } 공공 정적 무효 가까운 (문 STM, 연결 CONN) { 경우 (! STM = NULL) { {시도 ) (stm.close을; } 캐치 (예외 : SQLException 전자) { e.printStackTrace (); } } 경우 (코네티컷 주 = 널!) { {시도 conn.close를 (); } 캐치 (예외 : SQLException 전자) { e.printStackTrace (); } } } 공공 정적 무효 가까운 (의 ResultSet rs는 문 STM, 연결 콘은) { 경우 (! RS는 = null가) { {시도 ) (rs.close을; } 캐치 (예외 : SQLException 전자) { e.printStackTrace (); } } 경우 (! STM = NULL) { {시도 ) (stm.close을; } 캐치 (예외 : SQLException 전자) { e.printStackTrace (); } } 경우 (사기꾼 = 널!) { 시도 { con.close (); } 캐치 (예외 : SQLException 전자) { 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; 문자셋 = UTF-8"); response.setHeader ( "컨텐츠 타입", "textml; 문자셋 = UTF-8"); 문자열 ID = request.getParameter ( "GS1"); 문자열 암호 = 요청. 문자열 섹스 = request.getParameter ( "P"); 문자열 번호 = 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 (아이디, 비밀번호, 성별, 이름, 번호, 메일, 위안, XI, 클래스, 시간, 장소) 경우 (userDao.add (이 UserBean)) { request.getRequestDispatcher ( "success.jsp") 전방 (요청, 응답).; } 다른 { request.getRequestDispatcher ( "fail.jsp") 전방 (요청, 응답).; } * @see HttpServlet을 #의 doPost (HttpServletRequest 요청, HttpServletResponse 응답) * / 보호는 공극의 doPost (HttpServletRequest 요청, HttpServletResponse 응답) ServletException을 IOException을 발생 { // TODO 자동 생성 방법 스터브 의 doGet (요청, 응답); } }
JSP 파일
<% 페이지 언어 @ = "자바"의 contentType = "text / html과; 문자셋 = UTF-8" pageEncoding = "UTF-8"%> <! DOCTYPE HTML> <HTML> <HEAD> <메타 문자 집합 = "UTF-8 "> 여기에 <제목> 삽입 제목 </ 제목> </ head> <body> <양식 방법 ="게시물 "행동 ="textservlet "onsubmit ="반환 확인 () "> <DIV> GS1 = 대한 <라벨" " >登录账号</ 라벨> <input 유형 이름 = "GS1"> "名用户输入请"= "문자"ID = "GS1"자리 = </ div> <div> = "GS2"는 <라벨>登录密码</ 라벨> <input 타입 = "암호 "ID ="GS2 "자리 ="请输入密码"클래스 ="입력 텍스트 입력 길이의 "이름 ="GS2 "> </ DIV> <DIV> GS3"= 대한 <라벨 ">姓别: </ 라벨> <SELECT NAME = "P"> <옵션 값 = "유모">男</ 옵션> <옵션 값 = "네바다">女</ 옵션> <선택> </ DIV> <DIV> 姓名<= "GS4"에 대한 라벨> </ 라벨 > <입력 유형 = "텍스트"ID = "GS4"자리 = "请输入姓名"클래스 = "입력 텍스트 입력 길이의"이름 = "GS4"> </ DIV> <DIV> 에 대한 <라벨 = "GS5" >学号: </ 라벨> <입력 유형 = "텍스트"ID = "GS5"자리 = "请输入学号"클래스 = "입력 텍스트 입력 길이의"이름 = "GS5"> </ DIV> <DIV > = "gs6"는 <라벨>电子邮件</ 라벨> <input 타입 = "텍스트 "ID ="gs6 "자리 =" 전자 메일을 입력하십시오 "클래스 ="입력 - 텍스트 입력 - 롱 "이름 ="GS6 "> </ DIV> <DIV> > 단과 대학"GS7 = 대한 <라벨 "</ 라벨> <입력 유형 = "텍스트"ID = "GS7"자리 = " 클래스 ="입력 - 텍스트 입력 - 롱 "이름 ="GS7 "대학은 어디에서 입력하십시오"> </ DIV> <DIV> </ 라벨 : 줄 <= "를 GS8 모듈 게이트웨이"에 대한 라벨> > <입력 유형 = "텍스트"ID = "GS8"자리 = "입력 라인 제발 여기서"클래스 = "입력 텍스트 입력 긴"이름 = "GS8"> </ DIV> <DIV> = "GS9에 대한 <라벨 "> 클래스 여기서 </ 라벨> 유형의 <입력 ="텍스트 "는 위의 ID를 언급 한 id ="GS9 "자리 ="클래스를 입력하십시오 여기서 "클래스 ="입력 텍스트 입력 - 롱 "이름 ="GS9 "> </ DIV> < DIV> = "GS10"> 년 (세션)을 시작하기위한 <라벨 : </ 라벨> <이름 선택 = "P2"> <옵션 값 = "2014 "> 2014 </ 옵션> <옵션 값 ="2015 "> 2015 </ 옵션> <옵션 값 ="2016 "> 2016 </ 옵션> = <옵션 값"2017 "> 2017 </ 옵션> <옵션 값 = "2018"> 2018 </ 옵션> <옵션 값 = "2019"> 2019 </ 옵션> <선택> </ DIV>에서 getElementById ( "GS2"); VAR 메일 = document.getElementById를 ( "gs6"); <DIV> <= "gs11"에 대한 라벨>生源地: </ 라벨> <input 타입 = "텍스트"ID = "gs11 'NAME ="gs11 "> </ div> <div> </ 라벨>备注<="GS12 "레이블> <input 타입 ="텍스트 "ID ="GS12 "이름 ="GS12 "> </ DIV> <DIV> <입력 유형 =" "= 값" "ID ="법사 "이름 ="법사를 제출添加"> </ div> </ FORM> <! -输入字段验证部分-> <스크립트 유형 = "텍스트 / 자바 스크립트"> 기능 검사 () { var에 이름 = document.getElementById를 ( "GS1"); VAR 암호 = document.getElementById를 ( "GS2"); VAR 번호 = document.getElementById를 ( "GS5"); VAR sReg = /[_a-zA-Z\d\-\.]+@[_a-zA-Z\d\-]+(\.[_a-zA-Z\d\-]+)+$/ ; // 정규식 학생 수는 2018로 시작 여부 // 결정 경고 ( '영어 문자로 시작하는 6 ~ 12 영어 문자 또는 숫자에서 계좌 번호를 입력합니다'); gs1.focus를 (); false로 반환; } //를 결정하는 단계를 더 포함하는 문자 사용자 이름 여부를 경우 (/.* [\ u4e00- \ u9fa5] + * $ / 테스트 (username.value)) {... 경고 () '계정의 사용자 이름이 문자를 포함 할 수 없습니다'; gs1.focus (); false로 돌아 가기; } // 사용자 이름은 문자로 시작 여부를 결정합니다 (있는 경우 ! 때는 isNaN (username.value [0])) { (경고 '로그인 계정 문자로 시작하세요'); gs1.focus은 () ; false로 반환 } 암호의 수를 분석 // .length 경우 ((password.value) !. = 8) { ; 경고 () '암호 팔 영숫자해야한다' gs2.focus은 (); false로 반환; } IF (number.value을 < "20180000"|| number.value> "20189999") { 경고 ( "2018의 시작 부분에서 8 비트의 연구"); gs5.focus은 () ; false로 반환 } // 유효한 전화 번호 여부를 확인 // 사서함 형식을 결정이 올바른지 IF {(sReg.test (mail.value)!) 경고 ( 'E - 메일 형식 오류'); (gs6.focus ); false로 반환; } } </ SCRIPT> <! - 최종 확인 -> </ BODY> </ HTML>