تشارك هذه المقالة نظام إدارة الرسائل يعتمد على MVC+DAO ، والذي يتضمن الإضافة والحذف والتعديل والاستعلام ، ويحتوي الاستعلام على جميع الاستعلامات والاستعلام الغامض بواسطة الكلمات الرئيسية. المحتوى المحدد كما يلي
Notedao.java
Package Cn.Mldn.lxh.note.dao ؛ استيراد java.util.* ؛ استيراد cn.mldn.lxh.note.vo.* ؛ الواجهة العامة NOTEDAO {// إضافة عملية إدراج باطل عام (ملاحظة ملاحظة) استثناء ؛ // تعديل عملية تحديث الفراغ العام (ملاحظة ملاحظة) يلقي الاستثناء ؛ // حذف عملية حذف الفراغ العام (INT ID) يلقي الاستثناء ؛ // الاستعلام عن طريق ID ، بشكل رئيسي لتحديث الملاحظة العامة QueryByid (int id) يلقي استثناء ؛ // الاستعلام عن جميع القائمة العامة Queryall () يلقي الاستثناء ؛ // Fuzzy Query Public List QueryBylike (String cond) يلقي الاستثناء ؛ } ؛ Notedaoimpl.java
Package Cn.Mldn.lxh.note.dao.impl ؛ استيراد java.sql.* ؛ استيراد java.util.* ؛ استيراد cn.mldn.lxh.note.vo.* ؛ استيراد cn.mldn.lxh.note.dao.* ؛ استيراد cn.mldn.lxh.note.dbc.* ؛ الفئة العامة notedaoimpl تنفذ notedao {// إضافة عملية إدراج باطل عام (ملاحظة ملاحظة) يلقي الاستثناء {string sql = "insert في ملاحظة (معرف ، العنوان ، المؤلف ، المحتوى) قيم (note_sequextval ،؟ ،؟ ،؟)" ؛ ReparedStatement PSTMT = NULL ؛ databaseConnection DBC = null ؛ dbc = databaseConnection () جديد ؛ حاول {pstmt = dbc.getConnection (). إعداد (SQL) ؛ pStMt.SetString (1 ، note.getTitle ()) ؛ pStMt.SetString (2 ، note.getAuthor ()) ؛ pStMt.SetString (3 ، note.getContent ()) ؛ pstmt.executeupdate () ؛ pstmt.close () ؛ } catch (استثناء e) {// system.out.println (e) ؛ رمي استثناء جديد ("حدث خطأ في العملية !!!") ؛ } أخيرًا {dbc.close () ؛ }} // تعديل عملية تحديث Void Public للعملية (ملاحظة) يلقي الاستثناء {String sql = "تحديث عنوان SET TITLE =؟ ، المؤلف =؟ ، المحتوى =؟ أين معرف =؟" ؛ ReparedStatement PSTMT = NULL ؛ databaseConnection DBC = null ؛ dbc = databaseConnection () جديد ؛ حاول {pstmt = dbc.getConnection (). إعداد (SQL) ؛ pStMt.SetString (1 ، note.getTitle ()) ؛ pStMt.SetString (2 ، note.getAuthor ()) ؛ pStMt.SetString (3 ، note.getContent ()) ؛ pstmt.setint (4 ، note.getId ()) ؛ pstmt.executeupdate () ؛ pstmt.close () ؛ } catch (استثناء e) {رمي استثناء جديد ("حدث خطأ أثناء العملية!!!") ؛ } أخيرًا {dbc.close () ؛ }} // حذف عملية void public delete (int id) يلقي الاستثناء {string sql = "delete from note where id =؟" ؛ ReparedStatement PSTMT = NULL ؛ databaseConnection DBC = null ؛ dbc = databaseConnection () جديد ؛ حاول {pstmt = dbc.getConnection (). إعداد (SQL) ؛ PSTMT.SetInt (1 ، id) ؛ pstmt.executeupdate () ؛ pstmt.close () ؛ } catch (استثناء e) {رمي استثناء جديد ("حدث خطأ في العملية !!!") ؛ } أخيرًا {dbc.close () ؛ }} // Query by id ، بشكل رئيسي للحصول على تحديثات الملاحظة العامة QueryById (int id) يلقي الاستثناء {note note = null ؛ String SQL = "حدد المعرف ، العنوان ، المؤلف ، المحتوى من ملاحظة أين المعرف =؟" ؛ ReparedStatement PSTMT = NULL ؛ databaseConnection DBC = null ؛ dbc = databaseConnection () جديد ؛ حاول {pstmt = dbc.getConnection (). إعداد (SQL) ؛ PSTMT.SetInt (1 ، id) ؛ resultset rs = pstmt.executequery () ؛ if (rs.next ()) {note = new note () ؛ note.setId (rs.getint (1)) ؛ note.SetTitle (RS.GetString (2)) ؛ note.setauthor (RS.GetString (3)) ؛ note.setContent (RS.GetString (4)) ؛ } rs.close () ؛ pstmt.close () ؛ } catch (استثناء e) {رمي استثناء جديد ("حدث خطأ أثناء العملية!!!") ؛ } أخيرًا {dbc.close () ؛ } ملاحظة الإرجاع ؛ } // Query جميع القائمة العامة QueryAll () يلقي الاستثناء {list all = new ArrayList () ؛ String SQL = "SELECT ID ، TITLE ، المؤلف ، المحتوى من الملاحظة" ؛ ReparedStatement PSTMT = NULL ؛ databaseConnection DBC = null ؛ dbc = databaseConnection () جديد ؛ حاول {pstmt = dbc.getConnection (). إعداد (SQL) ؛ resultset rs = pstmt.executequery () ؛ بينما (rs.next ()) {note note = new note () ؛ note.setId (rs.getint (1)) ؛ note.SetTitle (RS.GetString (2)) ؛ note.setauthor (RS.GetString (3)) ؛ note.setContent (RS.GetString (4)) ؛ all.add (ملاحظة) ؛ } rs.close () ؛ pstmt.close () ؛ } catch (استثناء e) {system.out.println (e) ؛ رمي استثناء جديد ("حدث خطأ في العملية !!!") ؛ } أخيرًا {dbc.close () ؛ } إرجاع كل شيء ؛ } // fuzzy Query Public List QueryBylike (String cond) يلقي الاستثناء {list all = new ArrayList () ؛ String SQL = "حدد المعرف ، العنوان ، المؤلف ، المحتوى من ملاحظة أين مثل العنوان؟ أو المؤلف؟ أو محتوى مثل؟" ؛ ReparedStatement PSTMT = NULL ؛ databaseConnection DBC = null ؛ dbc = databaseConnection () جديد ؛ حاول {pstmt = dbc.getConnection (). إعداد (SQL) ؛ pStMt.SetString (1 ، "٪"+cond+"٪") ؛ pStMt.SetString (2 ، "٪"+cond+"٪") ؛ pStMt.SetString (3 ، "٪"+cond+"٪") ؛ resultset rs = pstmt.executequery () ؛ بينما (rs.next ()) {note note = new note () ؛ note.setId (rs.getint (1)) ؛ note.SetTitle (RS.GetString (2)) ؛ note.setauthor (RS.GetString (3)) ؛ note.setContent (RS.GetString (4)) ؛ all.add (ملاحظة) ؛ } rs.close () ؛ pstmt.close () ؛ } catch (استثناء e) {system.out.println (e) ؛ رمي استثناء جديد ("حدث خطأ أثناء العملية!!!") ؛ } أخيرًا {dbc.close () ؛ } إرجاع كل شيء ؛ }} ؛ Noteservlet.java
حزمة cn.mldn.lxh.note.servlet ؛ استيراد java.io.* ؛ استيراد javax.servlet.* ؛ استيراد javax.servlet.http.* ؛ استيراد cn.mldn.lxh.note.factory.* ؛ استيراد cn.mldn.lxh.note.vo.* ؛ يمتد Noteservlet للطبقة العامة httpservlet {public void doget (request httpservletrequest ، استجابة httpservletresponse) يلقي ioException ، servletexception {this.dopost (request ، response) ؛ } public void dopost (httpservletrequest request ، httpservletresponse) يلقي iOexception ، servletexception {request.setcharacterencoding ("gb2312") ؛ string path = "errors.jsp" ؛ // تلقي قيمة المعلمة المراد تشغيلها حالة السلسلة = request.getParameter ("الحالة") ؛ if (status! = null) {// المعلمة لها محتوى ، ثم حدد الطريقة المناسبة // استعلام جميع العمليات إذا ("selectall" .equals (status)) {try } catch (استثناء e) {} path = "list_notes.jsp" ؛ } // إدراج عملية if ("insert" .equals (الحالة)) {// 1. تلقي عنوان سلسلة المعلومات المدرجة = request.getParameter ("title") ؛ سلسلة مؤلف = request.getParameter ("المؤلف") ؛ content string = request.getParameter ("content") ؛ // 2. Instantiate the Vo Object note = new note () ؛ note.Settitle (العنوان) ؛ note.setauthor (مؤلف) ؛ note.setContent (المحتوى) ؛ // 3. اتصل بـ DAO لإكمال عملية إدراج قاعدة البيانات المنطقية = FALSE ؛ جرب {daOfActory.getNotedaOinstance (). insert (note) ؛ العلم = صحيح ؛ } catch (استثناء e) {} request.setattribute ("flag" ، new boolean (flag)) ؛ path = "insert_do.jsp" ؛ } // عملية الاستعلام عن طريق المعرف. قبل التعديل ، تحتاج إلى الاستعلام عن البيانات أولاً إذا ("SelectId" .equals (status)) {// تلقي المعلمة int = 0 ؛ حاول {id = integer.parseint (request.getParameter ("id")) ؛ } catch (استثناء e) {} جرب {request.setAttribute ("note" ، daOfActory.getNotedaoinstance (). QueryByid (id)) ؛ } catch (استثناء e) {} path = "update.jsp" ؛ } // تحديث العملية if ("تحديث" .equals (الحالة)) {int id = 0 ؛ حاول {id = integer.parseint (request.getParameter ("id")) ؛ } catch (استثناء e) {} عنوان السلسلة = request.getParameter ("title") ؛ سلسلة مؤلف = request.getParameter ("المؤلف") ؛ content string = request.getParameter ("content") ؛ ملاحظة ملاحظة = ملاحظة جديدة () ؛ note.setId (id) ؛ note.Settitle (العنوان) ؛ note.setauthor (مؤلف) ؛ note.setContent (المحتوى) ؛ العلم المنطقي = خطأ ؛ حاول {daOfActory.getNotedaOinstance (). Update (note) ؛ العلم = صحيح ؛ } catch (استثناء e) {} request.setattribute ("flag" ، new boolean (flag)) ؛ path = "update_do.jsp" ؛ } // query fuzzy if ("selectike" .equals (status)) {string keyword = request.getParameter ("Keyword") ؛ حاول {request.setAttribute ("all" ، daOfActory.getNotedaoInstance (). QueryBylike (الكلمة الرئيسية)) ؛ } catch (استثناء e) {} path = "list_notes.jsp" ؛ } // حذف العملية if ("delete" .equals (status)) {// تلقي المعلمة int = 0 ؛ حاول {id = integer.parseint (request.getParameter ("id")) ؛ } catch (استثناء e) {} علم منطقي = false ؛ حاول {daOfActory.getNotedaoInstance (). delete (id) ؛ العلم = صحيح ؛ } catch (استثناء e) {} request.setattribute ("flag" ، new boolean (flag)) ؛ path = "delete_do.jsp" ؛ }} else {// وهذا يعني عدم وجود معلمات ، طلب عميل غير قانوني} request.getRequestDispatcher (path). forward (طلب ، استجابة) ؛ }} ؛ /] list_notes.jsp
<٪@ page contentType = "text/html ؛ charset = gb2312" ٪> <٪@ page import = "java.util.*" ٪> <٪@ page import = "cn.mldn.lxh.note. الإدارة مثال MVC + DAO تطبيق </h1> <hr> <br> <٪ // ترميز التحويل. if (session.getAttribute ("uname")! = null) {// يتم تسجيل المستخدم في ٪> <٪ // إذا كان هناك محتوى ، فقم بتعديل المتغير i. إذا لم يكن هناك ، فلا يوجد موجه محتوى استنادًا إلى قيمة i int i = 0 ؛ سلسلة Keyword = request.getParameter ("الكلمة الرئيسية") ؛ قائمة الكل = فارغة ؛ all = (list) request.getAttribute ("all") ؛ ٪> <form action = "note" method = "post"> الرجاء إدخال محتوى الاستعلام: <input type = "text" name = "keyword"> <input type = "hidden" المعرف </td> <td> العنوان </td> <td> المؤلف </td> <td> المحتوى </td> <td> حذف </td> </tr> <٪ iterator iter = all.iterator () ؛ بينما (iter.hasnext ()) {note note = (note) iter.next () ؛ i ++ ؛ // قم بإجراء طباعة حلقة لطباعة جميع المحتويات في نموذج الجدول // إزالة المحتوى من قاعدة البيانات int = note.getID () ؛ عنوان السلسلة = note.getTitle () ؛ سلسلة مؤلف = note.getAuthor () ؛ content string = note.getContent () ؛ // نظرًا لأن الكلمة الرئيسية حمراء ، فأنت بحاجة إلى تلقي كلمات رئيسية لاستعلام هنا // سلسلة الكلمة الرئيسية = request.getParameter ("الكلمة الرئيسية") ؛ if (الكلمة الرئيسية! = null) {// يجب أن تكون البيانات reddited title = title.replaceall (الكلمة الرئيسية ، "<font color =/" red/">"+الكلمة الرئيسية+"</font>") ؛ المؤلف = مؤلف. replaceall (الكلمة الرئيسية ، "<font color =/" red/">" +الكلمة الرئيسية +"</font>") ؛ content = content.replaceall (الكلمة الرئيسية ، "<font color =/" red/">" +الكلمة الرئيسية +"</font>") ؛ } ٪> <tr> <td> <٪ = id ٪> </td> <td> <a href = "note؟ id = <٪ = id ٪> & status = selectId"> <٪ = title ٪> </a> </td> <sd> <٪ = uperm ٪> href = "ملاحظة؟ id = <٪ = id ٪> & status = delete"> حذف </a> </td> </tr> <٪} // تحديد ما إذا كانت قيمة I تتغير. إذا تغير ، فهذا يعني أن هناك محتوى. خلاف ذلك ، لا يوجد محتوى إذا (i == 0) {// قم بعمل موجه ٪> <tr> <td colspan = "5"> لا شيء! ! ! </td> </tr> <٪} ٪> </table> <٪} آخر {// لم يتم تسجيل الدخول ، مطالبة المستخدم بتسجيل الدخول ، والقفز إلى الاستجابة. ٪> لم يتم تسجيل الدخول بعد ، يرجى تسجيل الدخول أولاً! ! ! <br> سوف تقفز تلقائيًا إلى نافذة تسجيل الدخول في ثانيتين! ! ! <br> إذا لم يكن هناك قفزة ، اضغط على <a href = "login.jsp"> هنا </a>! ! ! <br> <٪} ٪> </center> </body> </html>ما سبق هو كل شيء عن هذا المقال ، آمل أن يكون مفيدًا لتعلم الجميع.