В этой статье в основном анализируется пользовательский модуль книжного торгового центра для всех, конкретный контент заключается в следующем
1. Создание связанного класса пользовательского модуля
Домен: Пользователь
Дао: пользовательдао
Сервис: userDao
web.servlet: usererservlet
2. Регистрация пользователя
2.1 Процесс регистрации
/jsps/user/regist.jsp -> usererservlet#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"%> <! doctpe html public "// w3c // dtd htm htm.01. Переход // en "> <html> <Head> <title> Register </title> <meta http-equiv =" pragma "content =" no-cache "> <meta http-equiv =" cache-control "content =" no-cache "> <meta http-equiv =" истекает "=" 0 "> <meta http-equiv = expires" = "0"> <meta http-equiv equiv = "expires" = "0"> <meta-http equiv equiv = ". Content = "Keyword1, Keyword2, Keyword3"> <Meta Http-equiv = "description" content = "Это моя страница"> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"> <!-<link rel = "stylessheet" type = "harss" href = ">" rel = "styleSheet" <body> <h1>Register</h1> <%-- 1. Show errors --> Field Error 2. Display exception error 3. Echo --%><p style="color: red; font-weight: 900">${msg }</p><form action="<c:url value='/UserServlet'/>" method="post"> <input type="hidden" name="method" value="regist"/> Имя пользователя: <input type = "text" name = "username" value = "$ {form.username}"/> <span style = "color: red; font-weight: 900"> $ {errors.username} </span> <br/> пароль: <input type = "пароль" = "пароль" value = "$ {form.pass warpsword}"/> <play = "style ="; font-weight: 900 "> $ {errors.password} </span> <br/> Электронная почта: <input type =" text "name =" email "value =" $ {form.email} "/> <span style =" color: red; font-weight: 900 "> $ {errors.email} </span> <br/> <input type =" vade "value =" regist "/> </form> </body> </html>2.3 usererservlet
Пользователь
/*** Объект домена пользователя*/Пользователь открытого класса {/** Соответствующая таблица базы данных*/Private String UID; // Первичный ключ частный string username; // Имя пользователя Private String Password; // Пароль частной строкиBaseServlet
Общедоступный класс BaseServlet расширяет httpservlet { / * * Он решит, какой метод этого класса называется на основе метода в запросе * / Защищенный сервис void (httpservlectrequest req, httpservletresponse res), бросает Servletexception, ioException {req.setchAracterencoding (uTF-8 »); res.setContentType ("text/html; charset = utf-8"); try {// Например: http: // localhost: 8080/demo1/xxx? M = добавить string method = req.getParameter ("method"); // Это метод NameClass c = this.getClass (); Метод m = c.getMethod (метод, httpservletrequest.class, httpservletresponse.class); String result = (string) m.invoke (this, req, res); if (result! = null &&! result.isempty ()) {req.getRequestDispatcher (result) .forward (req, res); }} catch (Exception e) {бросить новое ServletException (e); }}}Usererservlet
/*** Пользовательский уровень экспрессии*/public Class usererservlet Extends BaseServlet {private userservice userservice = new userservice (); / ** * Функция выхода * @param запрос * @param response * @return * @throws servletexception * @throws ioexception */ public String quit (httpservlectrequest, httpservletresponse response) throws servletexception, ioexception {request.getSession ().. вернуть "r:/index.jsp"; } public String Login (httpservletRequest, httpservletresponse response) throws servletexception, ioexception { / * * 1. Инкапсуляции данных формы в форму * 2. Введите Verification (без написания) * 3. Service для завершения активации *> Сохранить информацию о ошибке, для запроса, для запроса в ряд. Commonutils.tobean (request.getparametermap (), user.class); try {user user = userservice.login (form); request.getSession (). setattribute ("session_user", user); /** Добавить корзину для покупок в пользователь, то есть сохранить объект CART в сеанс*/ request.getSession (). Setattribute ("cart", new cart ()); вернуть "r:/index.jsp"; } catch (userException e) {request.setattribute ("msg", e.getmessage ()); request.setattribute ("form", form); вернуть "f: /jsps/user/login.jsp"; }} /** * Функция активации * @param запрос * @param response * @return * @Throws ServletException * @Throws ioException * /public String Active (httpservletrequest, httpservletrespons Справить на 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 запрос * @param response * @return * @Throws ServletException * @Throws ioException * /public String regist (httpservletrequest, httpservletrespons Поле запроса, верните в register.jsp * 4. Позвоните в метод службы, чтобы заполнить регистрацию *> Сохранить информацию об ошибке, Форма для запроса. // полная форма.setuid (commonutils.uuid ()); form.setCode (commonutils.uuid ()) + commonutils.uuid ()); /** Введите проверку* 1. Создайте карту для инкапсуляции информации об ошибках, где клавиш - это имя поля формы, а значение - сообщение об ошибке*/ map <string, string> errors = new Hashmap <string, string> (); /** 2. Получите имя пользователя, пароль и электронную почту в форме для проверки*/ string username = form.getusername (); if (username == null || username.trim (). isempty ()) {errors.put («Имя пользователя», «Имя пользователя не может быть пустым!»); } else if (username.length () <3 || username.length ()> 10) {errors.put ("имя пользователя", "Имя пользователя должно быть от 3 до 10!"); } String password = form.getPassword (); if (password == null || password.trim (). isempty ()) {errors.put ("пароль", "пароль не может быть пустым!"); } else if (password.length () <3 || password.length ()> 10) {errors.put ("пароль", "пароль должен быть между 3 ~ 10!"); } String email = form.getemail (); if (email == null || email.trim (). isempty ()) {errors.put ("email", "Электронная почта не может быть пустой!"); } else if (! email.matches ("// w+@/w+//.//w+")) {errors.put ("email", "Ошибка формата электронной почты!"); }/** 3. Определите, есть ли сообщение об ошибке*/ if (errors.size ()> 0) {// 1. Сохранить сообщение об ошибке // 2. Сохранить данные // 3. Справить на regist.jsp request.setattribute ("Ошибки", ошибки); request.setattribute ("form", form); вернуть "f: /jsps/user/regist.jsp"; } / * * Вызовите метод службы regist () * / try {userservice.regist (form); } catch (userException e) { / * * 1. Сохранить информацию об исключении * 2. Сохранить форму * 3. request.setattribute ("form", form); вернуть "f: /jsps/user/regist.jsp"; } /** Отправить электронное письмо* Подготовьте файл конфигурации! */ // Получить свойства содержимого файла конфигурации props = new Properties (); props.load (this.getClass (). getClassloader () .getResourCeasStream ("email_template.properties")); String host = props.getproperty ("host"); // Получить строку хоста сервера uname = props.getproperty ("uname"); // Получить строку пользователя username pwd = props.getproperty ("pwd"); // Получить строку пароля из = props.getpropert props.getProperty ("subject"); // Получить субъект строки string content = props.getproperty ("content"); // Получить содержимое почты = messageformat.format (content, form.getCode ()); // заменить {0} Session Session = mailutils.createsession (host, uname, pwd); // get session mail = new mail (to, content object); Mailutils.send (session, mail); // Отправить электронное письмо! } catch (messagingException e) {} / * 1. Сохранить информацию о успехе * 2. Переход к msg.jsp * / request.setattribute ("msg", "Поздравляю, регистрация успешна! Пожалуйста, активируйте его в адрес электронной почты немедленно"); вернуть "f: /jsps/msg.jsp"; }}2.4 userservice
/*** Пользовательский бизнес -уровень*/public Class userservice {private userdao userdao = new userdao (); / *** Функция регистрации* @param form*/ public void Registration (пользовательская форма) Throws userexception {// проверка пользователя пользователя пользователя = userdao.findbyusername (form.getusername ()); if (user! = null) бросить новое Userexception («Имя пользователя было зарегистрировано!»); // проверка электронной почты user = userdao.findbyemail (form.getemail ()); if (user! = null) бросить новое Userexception («Электронная почта была зарегистрирована!»); // вставить пользователя в базу данных userdao.add (form); } / ** * Функция активации * @Throws USEREXCEPTION * / public void Active (String Code) Throws userException { / * * 1. Используйте код для запроса базы данных и получить пользователь * / user user = userdao.findbycode (code); /** 2. Если пользователь не существует, это означает, что код активации неверен*/ if (user == null), добавьте новое USEREXCEPTION («Код активации недействителен!»); / * * 3. Убедитесь, не является ли статус пользователя. Если он активируется, это означает, что это вторичная активация, и исключение выброшено*/ if (user.isstate ()), бросьте новое Userexception («Вы были активированы, не активируйте его снова, если вы не хотите умереть!»); /** 4. Изменить статус пользователя*/ userDao.updateState (user.getuid (), true); } /** * Функция входа в систему * @param form * @return * @throws userexception * /public user login (user form) throws userexception { / * * 1. Используйте имя пользователя для запроса, чтобы получить пользователя * 2. Если пользователь нулевой, исключение (имя пользователя не существует) * 3. Составьте пароли формы и пользователя. Если отличается, исключение брошено (пароль неверен) * 4. Проверьте статус пользователя. Если FALSE, исключение брошено (еще не активируется) * 5. Вернуть пользователь */ user user = userDao.findbyusername (form.getUsername ()); if (user == null) бросить новое Userexception («Имя пользователя не существует!»); if (! user.getPassword (). equals (form.getPassword ())) бросить новое userexception («ошибка пароля!»); 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, где username =?"; return qr.query (sql, new beanhandler <user> (user.class), имя пользователя); } catch (sqlexception e) {бросить новое runtimeexception (e); }} / ** * Запрос по электронной почте * @param по электронной почте * @return * / public user findbyemail (string email) {try {string sql = "select * из tb_user, где email =?"; return qr.query (sql, new beanhandler <user> (user.class), электронная почта); } catch (sqlexception e) {бросить новое runtimeexception (e); }} / ** * Вставить пользователь * @param пользователь * / public void add (пользователь пользователь) {try {string sql = "Вставка в значения tb_user (?,?,?,?,?,?)"; Object [] params = {user.getUid (), user.getUsername (), user.getpassword (), user.getemail (), user.getcode (), user.isstate ()}; qr.update (sql, params); } catch (sqlexception e) {бросить новое runtimeexception (e); }} / ** * Запрос по коду активации * @param code * @return * / public user findbycode (String Code) {try {string sql = "select * from tb_user wroad =?"; "; return qr.query (sql, new beanhandler <user> (user.class), код); } catch (sqlexception e) {бросить новое runtimeexception (e); }} / ** * Измените указанное состояние указанного пользователя * @param uid * @param wation * / public void updateState (String uid, boolean wation) {try {string sql = "update tb_user set state =? Где uid =?"; qr.update (SQL, State, UID); } catch (sqlexception e) {бросить новое runtimeexception (e); }}}3. Активация пользователя
Процесс: электронная почта пользователя -> usererservlet#active () -> msg.jsp
4
Пользовательский вход
Process: /jsps/user/login.jsp -> userservlet#login () -> index.jsp
5
Пользовательский выход
Процесс: top.jsp -> usererservlet#quit () -> login.jsp
quit (): уничтожить сессию!
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.