이 기사는 주로 모든 사람을위한 책 mall의 사용자 모듈을 분석합니다. 특정 콘텐츠는 다음과 같습니다.
1. 사용자 모듈의 관련 클래스 생성
도메인 : 사용자
Dao : userdao
서비스 : userdao
web.servlet : userervlet
2. 사용자 등록
2.1 등록 절차
/jsps/user/regist.jsp-> userervlet#regist () -> msg.jsp
2.2 등록 페이지
<%@ page language = "java"import = "java.util.*"pageencoding = "utf-8"%> <%@ taglib prefix = "c"uri = "http://java.sun.com/jsp/jstl/core"%> <! apttype html public "-//01 전환 // en "> <html> <head> <title> 레지스터 </title> <meta http-equiv ="pragma "content ="no-cache "> <meta http-equiv ="cache-control "content ="no-cache "> <meta http-equiv ="keyfres "0"> <meta httpiv = "keyfrs". content = "keyword1, keyword2, keyword3"> <meta http-equiv = "description"content = "이것은 내 페이지입니다"> <meta http-equiv = "content-type"content = "text/html; charset = utf-8"> <!-<link rel = "stylesheet"type/css "styles.cs">. <body> <h1> 레지스터 </h1> <%-1. 오류 표시-> 필드 오류 2. 필드 오류 2. 디스플레이 예외 오류 3. echo-%> <p style = "color : red; font-wight : 900"> $ {msg} </p> <form action = "<c : url value = '/userservlet'/>"post "> input type ="hididden ""rel value ""rel value " username : <input type = "text"name = "username"value = "$ {form.username}"/> <span style = "color : red; font-weight : 900"> $ {errors.username} </span >> password : <input type = "password"name = "password"value = "{form.pass}"/>>>>> password}; Font-weight : 900 "> $ {errors.password} </span> <br/> 이메일 : <input type ="text "name ="email "value ="$ {form.email} "/> <span style ="color; Font-Weight : 900 "> $ {errors.email} </span> <br/> <input type ="제출 "value ="register "/> </form> </body> </html>2.3 Unerservlet
사용자
/*** 사용자의 도메인 개체*/public class user {/** 해당 데이터베이스 테이블*/개인 문자열 UID; // 기본 키 개인 문자열 사용자 이름; // 개인 이름 비밀번호 비밀번호; // 비밀번호 개인 문자열 이메일; // 전자 메일 개인 문자열 코드; // 활성화 코드 비공개 부울 상태 (활성화 및 비활성화)베이스 서비스
Public Class BaseServlet는 httpservlet을 확장 { / * * 요청 * / protected void service (httpservletrequest req, httpservletResponse res)의 메소드를 기반 으로이 클래스의 어떤 메소드가 호출되는지 결정합니다. servletexception, ioexception {req.setcharacterencoding ( "utf-8"); res.setContentType ( "text/html; charset = utf-8"); {// 예를 들어 : http : // localhost : 8080/demo1/xxx? m = string 메서드 추가 메소드 = req.getParameter ( "method"); // 메소드 nameclass c = this.getClass (); 메소드 m = c.getMethod (메소드, httpservletrequest.class, httpservletresponse.class); 문자열 result = (문자열) m.invoke (this, req, res); if (result! = null &&! result.isempty ()) {req.getRequestDispatcher (result) .forward (req, res); }} catch (예외 e) {Throw new servletexception (e); }}}userervlet
/*** 사용자 표현 계층*/public class userervlet는 baseServlet를 확장합니다. / ** * exit function * @param request * @param response * @return * @throws servletexception * @throws ioexception */ public string quit (httpservletrequest request, httpservletResponse 응답) servletexception, ioexception {request.getSession (). "r :/index.jsp"를 반환합니다. } 공개 문자열 로그인 (httpservletrequest 요청, httpservletrequest response)은 servletexception, ioexception { / * * 1. 양식 데이터를 양식에 캡슐화 * 2를 캡슐화합니다 * 2. 검증 입력 (쓰기 없음) * 3. 활성화를 완료하기 위해 서비스를 호출하고, 폼을 작성하고, eSp * 4에 대한 사용자 정보를 전달하고, index에 대한 저장. commonutils.tobean (request.getParameterMap (), user.class); try {user user = userervice.login (form); request.getSession (). setAttribute ( "session_user", user); /** 사용자에게 쇼핑 카트를 추가합니다. "r :/index.jsp"를 반환합니다. } catch (userexception e) {request.setattribute ( "msg", e.getMessage ()); request.setAttribute ( "form", form); "f : /jsps/user/login.jsp"를 반환합니다. }} /** * 활성화 함수 * @param request * @param response * @return * @throws servletexception * @throws ioexception * /public string active (httpservletrequest 요청, httpservletrequest response) servletexception, ioexception { / * 1. 요청 도메인 및 msg.jsp * 3으로 전달합니다. 성공 정보를 요청 도메인에 저장하고 msg.jsp */ string code = request.getParameter ( "code"); try {userService.Active (code); request.setattribute ( "msg", "축하합니다. 성공적으로 활성화했습니다! 지금 로그인하십시오!"); } catch (userexception e) {request.setattribute ( "msg", e.getMessage ()); } return "f : /jsps/msg.jsp"; } /** * 등록 함수 * @param request * @param response * @return * @throws servletexception * @throws ioexception * /public string regist (httpservletrequest 요청, httpservletrequest response) servletexception, ioexception { / * 1. 정보, register.jsp * 4. 등록을 완료하려면 정보를 전달하십시오. // womplete form.setUid (commonutils.uuid ()); form.setCode (commonutils.uuid ()) + commonutils.uuid ()); /** 검증 입력* 1. 오류 정보를 캡슐화 할 맵을 만듭니다. 여기서 키는 양식 필드 이름이고 값은 오류 메시지*/ 맵 <문자열, 문자열> 오류 = new Hashmap <String, String> (); /** 2. 확인*/ String username = form.getUername (); if (username == null || username.trim (). isempty ()) {errors.put ( "username", "사용자 이름이 비어있을 수 없습니다!"); } else if (username.length () <3 || username.length ()> 10) {errors.put ( "username", "사용자 이름은 3에서 10 사이 여야합니다!"); } 문자열 암호 = form.getPassword (); if (password == null || password.trim (). isempty ()) {errors.put ( "password", "password가 비어있을 수 없습니다!"); } else if (password.length () <3 || password.length ()> 10) {errors.put ( "password", "암호는 3 ~ 10!"); } 문자열 이메일 = form.getEmail (); if (email == null || email.trim (). isempty ()) {errors.put ( "email", "이메일이 비어있을 수 없습니다!"); } else if (! email.matches ( "// w+@/w+//./w+")) {errors.put ( "이메일", "이메일 형식 오류!"); }/** 3. 오류 메시지가 있는지 여부를 결정*/ if (errors.size ()> 0) {// 1. 오류 메시지 저장 // 2. 양식 데이터 저장 // 3. regist.jsp request.setAttribute ( "오류", 오류); request.setAttribute ( "form", form); "f : /jsps/user/regist.jsp"를 반환합니다. } / * * 서비스를 호출하십시오. } catch (userexception e) { / * * 1. 예외 정보 저장 * 2. 양식을 저장 * 3. regist.jsp * / request.setattribute ( "msg", e.getMessage ()); request.setAttribute ( "form", form); "f : /jsps/user/regist.jsp"를 반환합니다. } /** 이메일 보내기* 구성 파일 준비! */ // 구성 파일 내용 속성을 가져옵니다. propss = new Properties (); props.load (this.getClass (). getClassLoader () .getResourCeasStream ( "email_template.properties")); 문자열 host = props.getProperty ( "host"); // 서버 호스트 get string uname = props.getProperty ( "Uname"); // 사용자 이름 string get pwd = props.getProperty ( "pwd"); // 비밀번호 string get from = propss.getProperty ( "from"); // string을 getmail (); // getmail (); props.getProperty ( "subject"); // 제목 문자열 내용을 가져옵니다. props.getProperty ( "content"); // 메일 내용 컨텐츠 가져옵니다. mailutils.send (세션, 메일); // 이메일 보내기! } catch (messagingException e) {} / * * 1. 성공 정보 저장 * 2. msg.jsp * / request.setattribute ( "msg", "축하, 등록이 성공적입니다! 즉시 이메일 주소로 활성화하십시오"); "f : /jsps/msg.jsp"를 반환합니다. }}2.4 Userservice
/*** 사용자 비즈니스 계층*/public class userervice {private userDao userDao = new userDao (); / *** 등록 함수* @param form*/ public void rightration (user form) userexception {// username user user = userdao.findbyusername (form.getusername ()); if (user! = null) Throw New userException ( "사용자 이름이 등록되었습니다!"); // 이메일 사용자 = userDao.FindByEmail (form.getEmail ()); if (user! = null) Throw New userException ( "이메일이 등록되었습니다!"); // 사용자를 데이터베이스 userDao.add (form)에 삽입합니다. } / ** * 활성화 함수 * @throws userexception * / public void active (문자열 코드) userexception { / * 1. 코드를 사용하여 데이터베이스를 쿼리하고 사용자를 얻고 사용자를 얻습니다. /** 2. 사용자가 존재하지 않으면 활성화 코드가 잘못되었음을 의미합니다*/ if (user == null) 새 userexception ( "활성화 코드가 잘못되었습니다!"); / * * 3. 사용자의 상태가 비활성인지 확인하십시오. 활성화되면 2 차 활성화이며 예외가 발생한다는 것을 의미합니다.*/ if (user.isstate ()) 새로운 userexception ( "활성화되었으므로 죽고 싶지 않으면 다시 활성화하지 마십시오!"); /** 4. 사용자의 상태를 수정*/ userDao.upDatestate (user.getUid (), true); } /** * 로그인 함수 * @param form * @return * @throws userexception * /public useroxception (user form) userexception { / * * 1. 사용자 이름을 사용하여 쿼리를 사용하여 사용자를 얻습니다. 다른 경우 예외가 발생합니다 (비밀번호가 잘못되었습니다) * 4. 사용자의 상태를 확인하십시오. False 인 경우 예외가 발생합니다 (아직 활성화되지 않음) * 5. RETURN USER */ USER USER = USERDAO.FINDBYUSERNAME (form.getUername ()); if (user == null) 새로운 userexception을 던지십시오 ( "사용자 이름이 존재하지 않습니다!"); if (! user.getPassword (). equals (form.getPassword ())) Throw New userException ( "Password Error!"); if (! user.isstate ())은 새로운 userexception ( "아직 활성화되지 않았습니다!")을 던지십시오. 리턴 사용자; }}2.5 userdao
/*** 사용자 지속성 계층*/public class userDao {private queryRunner qr = new txQueryRunner (); / ** * 사용자 이름으로 쿼리 * @param username * @return */ public user findByUserName (string username) {try {String sql = "select * from tb_user where username =?"; qr.query (sql, new beanhandler <user> (user.class), username); } catch (sqlexception e) {throw new runtimeexception (e); }} / ** * 이메일로 쿼리 * @param email * @return * / public user findBeyemail (문자열 이메일) {try {String SQL = "select * from tb_user where email =?"; QR.Query (SQL, New Beanhandler <user> (user.class), 이메일); } catch (sqlexception e) {throw new runtimeexception (e); }} / ** * 사용자 삽입 * @param user * / public void add (user user) {try {string sql = "tb_user 값에 삽입 (?,?, ?, ?,?)"; Object [] params = {user.getUid (), user.getUnErame (), user.getPassword (), user.getEmail (), user.getCode (), user.isstate ()}; qr.update (SQL, Params); } catch (sqlexception e) {throw new runtimeexception (e); }} / ** * 활성화 코드 별 쿼리 * @param code * @return * / public user findByCode (String Code) {try {String sql = "select * from tb_user where code =?"; qr.query (sql, new beanhandler <user> (user.class), 코드); } catch (sqlexception e) {throw new runtimeexception (e); }} / ** * 지정된 사용자의 지정된 상태를 수정 * @param uid * @param state * / public void updatestate (string uid, boolean state) {try {string sql = "update tb_user set state =? uid =?"; qr.update (SQL, State, UID); } catch (sqlexception e) {throw new runtimeexception (e); }}}3. 사용자 활성화
프로세스 : 사용자의 이메일 -> userervlet#active () -> msg.jsp
4.
사용자 로그인
프로세스 : /jsps/user/login.jsp-> userervlet#login () -> index.jsp
5.
사용자 종료
프로세스 : top.jsp-> userervlet#quit () -> login.jsp
Quit () : 세션을 파괴하십시오!
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.