تحلل هذه المقالة بشكل أساسي وحدة المستخدم في مركز المركز التجاري للجميع ، والمحتوى المحدد على النحو التالي
1. إنشاء الفئة ذات الصلة لوحدة المستخدم
المجال: المستخدم
DAO: userdao
الخدمة: userDao
Web.Servlet: UserServlet
2. تسجيل المستخدم
2.1 عملية التسجيل
/jsps/user/regist.jsp -> userveld#regist () -> msg.jsp
2.2 صفحة التسجيل
<٪@ page language = "java" import = "java.util. Transitional // en "> <html> <head> <title> سجل </title> <meta http-equiv =" pragma "content =" no-cache "> <meta http-equiv =" cache-control "content =" no-cache "> <meta http-equiv =" expire content "= 0"> content = "keyword1 ، keyword2 ، keyword3"> <meta http-equiv = "description" content = "this is my page"> <meta http-equiv = "content-type" content = "text/html ؛ charset = utf-8"> <! <Body> <h1> سجل </h1> <٪-1. إظهار الأخطاء-> خطأ الحقل 2. عرض خطأ في الاستثناء 3. echo-٪> <p style = "color: red ؛ font-weight: 900"> $ {msg} </p> <form action = "<c: url value = '/userservlet'/> اسم المستخدم: <input type = "text" name = "username" value = "$ {form.username}"/> <span style = "color: red ؛ font-weight: 900"> $ {errors.username} </span> <Br/> password: <input type = "password" 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 =" submit "value =" register "/> </pump> </body> </html>2.3 uservervlet
مستخدم
/*** كائن مجال المستخدم للمستخدم*/مستخدم الفئة العامة {/** جدول قاعدة البيانات المقابلة*/سلسلة خاصة uid ؛ // المفتاح الأساسي username الخاصBaseservlet
يمتد Baseservlet للطبقة العامة httpservlet { / * * سيقرر الطريقة التي تسمى هذه الفئة بناءً على الطريقة في خدمة * / خدمة void المحمية (httpservletrequest req ، httpservletponse res) serwslexception ، ioException {req.setcharacterencoding ("utf-8") ؛ Res.SetContentType ("Text/Html ؛ Charset = utf-8") ؛ حاول {// على سبيل المثال: http: // localhost: 8080/demo1/xxx؟ m = إضافة طريقة السلسلة = req.getParameter ("method") ؛ // إنها طريقة nameclass c = this.getClass () ؛ الطريقة m = c.getMethod (الطريقة ، httpservletrequest.class ، httpservletresponse.class) ؛ سلسلة السلسلة = (سلسلة) M.Invoke (هذا ، REQ ، RES) ؛ if (result! = null &&! result.isempty ()) {req.getRequestDispatcher (result). forward (req ، res) ؛ }} catch (استثناء e) {رمي servleTexception (e) ؛ }}}userServlet
/*** طبقة تعبير المستخدم*/الفئة العامة المستخدمين يمتد Baseservlet {Private UsperService UsperService = New UsperService () ؛ / ** * exit function * @param request * param response * return * throws servleTexception * throws ioException */ public string quit (httpservletrequest request ، httpservletsponse repress) serwslexception ، ioException {request.getSession (). إرجاع "r: /index.jsp" ؛ } تسجيل الدخول إلى السلسلة العامة (طلب httpservletrequest ، httpservletresponse استجابة) يلقي servletexception ، ioException { / * * 1. commonutils.tobean (request.getParamEterMap () ، user.class) ؛ حاول {user user = userservice.login (form) ؛ request.getSession (). setAttribute ("session_user" ، user) ؛ /** إضافة عربة تسوق إلى المستخدم ، أي حفظ كائن عربة إلى الجلسة*/ 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" ؛ } ستر تم إعادة إرسالها إلى msg.jsp * 3. احفظ معلومات النجاح إلى مجال الطلب وإعادة توجيهها إلى msg.jsp */ string code = request.getParameter ("code") ؛ حاول {uservervice.active (code) ؛ request.setAttribute ("MSG" ، "تهانينا ، لقد قمت بتنشيطه بنجاح! يرجى تسجيل الدخول الآن!") ؛ } catch (userexception e) {request.setAttribute ("msg" ، e.getMessage ()) ؛ } إرجاع "f: /jsps/msg.jsp" ؛ } /** * وظيفة التسجيل * param request * param response * return * throws servleTexception * throws ioException * /public string Regist (httpservletrequest request ، httpservletsponse response) rewors servlexception ، ioexception { * 1. حقل الطلب ، إلى الأمام إلى التسجيل. // complete form.setuid (commonutils.uuid ()) ؛ form.setCode (commonutils.uuid ()) + commonutils.uuid ()) ؛ ] /** 2. احصل على اسم المستخدم وكلمة المرور والبريد الإلكتروني في نموذج التحقق*/ string username = form.getUserName () ؛ if (username == null || username.trim (). isempty ()) {errors.put ("اسم المستخدم" ، "لا يمكن أن يكون اسم المستخدم فارغًا!") ؛ } آخر إذا (username.length () <3 || username.length ()> 10) {errors.put ("username" ، "يجب أن يكون اسم المستخدم بين 3 و 10!") ؛ } string password = form.getPassword () ؛ if (password == null || password.trim (). isempty ()) {errors.put ("كلمة المرور" ، "كلمة المرور لا يمكن أن تكون فارغة!") ؛ } آخر إذا (password.length () <3 || password.length ()> 10) {errors.put ("كلمة المرور" ، "يجب أن تكون كلمة المرور بين 3 ~ 10!") ؛ } سلسلة البريد الإلكتروني = form.getemail () ؛ if (email == null || email.trim (). isempty ()) {errors.put ("البريد الإلكتروني" ، "البريد الإلكتروني لا يمكن أن يكون فارغًا!") ؛ } آخر if (! email.matches ("// w+@//w+/////w+")) {errors.put ("البريد الإلكتروني" ، "خطأ تنسيق البريد الإلكتروني!") ؛ }/* 3. request.setAttribute ("form" ، form) ؛ إرجاع "f: /jsps/user/regist.jsp" ؛ } / * * استدعاء طريقة Regist () للخدمة * / TREE {userservice.regist (form) ؛ } catch (userexception e) { / * 1. حفظ معلومات الاستثناء * 2. حفظ النموذج * 3. request.setAttribute ("form" ، form) ؛ إرجاع "f: /jsps/user/regist.jsp" ؛ } /** إرسال بريد إلكتروني* قم بإعداد ملف التكوين! *// الحصول على خصائص محتوى ملف التكوين الدعائم = خصائص جديدة () ؛ props.load (this.getClass (). getClassLoader () .getResourCeasStream ("eilm_template.properties")) ؛ سلسلة مضيف string = props.getProperty ("Host") ؛ // Get Server Host String uname = props.getProperty ("uname") ؛ // Get username string pwd = props.getProperty ("pwd") ؛ // الحصول على سلسلة كلمة المرور من = props.getProperty ("من") props.getProperty ("موضوع") ؛ // احصل على محتوى سلسلة الموضوع = props.getProperty ("المحتوى") ؛ // احصل على محتوى البريد = messageformat.format (المحتوى ، form.getCode ()) ؛ // استبدال {0} جلسة الجلسة = mailutils.createsession (مضيف ، uname ، pwd) ؛ // MailuTils.send (الجلسة ، البريد) ؛ // إرسال بريد إلكتروني! } catch (messagingException e) {} / * 1. حفظ معلومات النجاح * 2. إعادة توجيه إلى msg.jsp * / request.setattribute ("msg" ، "تهانينا ، التسجيل ناجح! يرجى تنشيطه في عنوان البريد الإلكتروني على الفور") ؛ إرجاع "f: /jsps/msg.jsp" ؛ }}2.4 المستخدمين
/*** طبقة أعمال المستخدم*/الفئة العامة orseverservice {private userDao userDao = new userDao () ؛ / *** وظيفة التسجيل* نموذج param*/ تسجيل الفراغ العام (نموذج المستخدم) يلقي userexception {// تحقق من المستخدم المستخدم = userDao.findbyuserName (form.getusername ()) ؛ إذا (المستخدم! = null) رمي userexception جديد ("تم تسجيل اسم المستخدم!") ؛ // تحقق من user user = userDao.findByemail (form.getemail ()) ؛ إذا (المستخدم! = null) رمي userexception جديد ("تم تسجيل البريد الإلكتروني!") ؛ // أدخل المستخدم في قاعدة البيانات userDao.add (النموذج) ؛ } / ** * وظيفة التنشيط * throws userexception * / public void النشط (رمز السلسلة) يلقي userexception { / * * 1. /** 2. إذا لم يكن المستخدم موجودًا ، فهذا يعني أن رمز التنشيط خاطئ*/ إذا (user == null) رمي userexception جديد ("رمز التنشيط غير صالح!") ؛ / * * 3. تحقق مما إذا كانت حالة المستخدم غير نشطة. إذا تم تنشيطه ، فهذا يعني أنه تنشيط ثانوي ويتم إلقاء استثناء*/ if (user.isState ()) رمي userexception جديد ("لقد تم تنشيطك ، لا تنشطه مرة أخرى إلا إذا كنت تريد الموت!") ؛ /** 4. تعديل حالة المستخدم*/ userDao.upDateState (user.getuid () ، true) ؛ } /** * وظيفة تسجيل الدخول * param نموذج * regurn * throws userexception * /تسجيل الدخول إلى المستخدم العام (نموذج المستخدم) يلقي userexception { / * * 1. استخدم اسم المستخدم للاستعلام للحصول على المستخدم * 2. إذا كان مختلفًا ، يتم طرح استثناء (كلمة المرور خاطئة) * 4. تحقق من حالة المستخدم. إذا كان خطأ ، يتم طرح استثناء (لم يتم تنشيطه بعد) * 5. إرجاع المستخدم */ المستخدم = userDao.findbyuserName (form.getusername ()) ؛ إذا (user == null) رمي userexception جديد ("اسم المستخدم غير موجود!") ؛ if (! user.getPassword (). equals (form.getPassword ())) رمي userexception جديد ("خطأ كلمة المرور!") ؛ if (! user.isState ()) رمي userexception جديد ("لم يتم تنشيطه بعد!") ؛ إرجاع المستخدم ؛ }}2.5 userdao
/*** طبقة ثبات المستخدم*/الفئة العامة userDao {private QueryRunner qr = new TxqueryRunner () ؛ / ** * Query by username * param username * @return */ public user findByUserName (string username) {try {string sql = "select * from tb_user where username =؟" ؛ Return QR.Query (SQL ، New BeanHandler <Sether> (user.class) ، اسم المستخدم) ؛ } catch (sqlexception e) {رمي new runTimeException (e) ؛ }} / ** * query by email * param email * @return * / public user findByEmail (string email) {try {String sql = "select * from tb_user where email =؟" ؛ Return QR.Query (SQL ، New BeanHandler <Sether> (user.class) ، البريد الإلكتروني) ؛ } catch (sqlexception e) {رمي new runTimeException (e) ؛ }} / ** * أدخل المستخدم * param user * / public void add (user user) {try {string sql = "insert in tb_user stable (؟ ،؟ ،؟ ،؟ ،؟ ،؟)" ؛ Object [] params = {user.getuid () ، user.getusername () ، user.getPassword () ، user.getemail () ، user.getCode () ، user.isState ()} ؛ qr.update (SQL ، params) ؛ } catch (sqlexception e) {رمي new runTimeException (e) ؛ }} / ** * QUERY بواسطة رمز التنشيط * param code * @RETURN * / public user findByCode (string code) {try {string sql = "select * from tb_user where code =؟" ؛ Return QR.Query (SQL ، New BeanHandler <Sether> (user.class) ، Code) ؛ } catch (sqlexception e) {رمي new runTimeException (e) ؛ }} / ** * تعديل الحالة المحددة للمستخدم المحدد * param uid * @param state * / public void updateState (String UID ، حالة boolean) {try {String sql = "update tb_user set state =؟ where uid =؟" ؛ qr.update (SQL ، State ، UID) ؛ } catch (sqlexception e) {رمي new runTimeException (e) ؛ }}}3. تنشيط المستخدم
العملية: البريد الإلكتروني للمستخدم -> uservels#active () -> msg.jsp
4.
تسجيل الدخول المستخدم
العملية: /jsps/user/login.jsp -> المستخدمين#login () -> index.jsp
5.
خروج المستخدم
العملية: top.jsp -> usterveservlet#quit () -> login.jsp
QUIT (): تدمير الجلسة!
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.