هذه غرفة دردشة بسيطة لا يمكن أن تكون أبسط.
1. تسجيل المستخدم.
2. تسجيل الدخول المستخدم.
3. بالطبع يمكنك أيضا الدردشة.
dbutil.java
نسخة الكود كما يلي:
حزمة com.hongyuan.core ؛
استيراد java.sql.connection ؛
استيراد java.sql.preparedStatement ؛
استيراد java.sql.resultset ؛
استيراد java.sql.sqlexception ؛
استيراد java.sql.statement ؛
استيراد java.sql.types ؛
استيراد java.util.arraylist ؛
استيراد java.util.hashmap ؛
استيراد java.util.list ؛
استيراد java.util.map ؛
استيراد java.util.regex.matcher ؛
استيراد java.util.regex.pattern ؛
استيراد javax.sql.datasource ؛
استيراد com.mysql.jdbc.jdbc2.optional.mysqldatasource ؛
الطبقة العامة dbutil {
خاص بيانات بيانات البيانات الثابتة الخاصة = فارغة ؛
ثابت {
/**
* تهيئة مصدر البيانات.
*/
mysqldatasource mds = new mysqldatasource () ؛
mds.seturl ("jdbc: mysql: // localhost: 3306/test") ؛
MDS.SetUser ("اختبار") ؛
MDS.SetPassword ("123456") ؛
mds.setcharacterencoding ("utf8") ؛
DataSource = MDS ؛
}
/**
* احصل على اتصال قاعدة البيانات
* @يعود
* throws sqlexception
*/
الاتصال الثابت العام getConnection () يلقي sqlexception {
إرجاع datasource.getConnection () ؛
}
/**
* أغلق مورد اتصال قاعدة البيانات
* param conn
* param s
* param روبية
* throws sqlexception
*/
إغلاق الفراغ الثابت العام (اتصال Conn ، بيان S ، ResultSet RS) {
يحاول {
if (rs! = null) rs.close () ؛
} catch (sqlexception e) {
E.PrintStackTrace () ؛
}
يحاول {
if (s! = null) S.Close () ؛
} catch (sqlexception e) {
E.PrintStackTrace () ؛
}
يحاول {
if (conn! = null) conn.close () ؛
} catch (sqlexception e) {
E.PrintStackTrace () ؛
}
}
/**
* تنفيذ بيان استعلام قاعدة البيانات
* param sql query SQL ، استخدم معلمات مجهولة؟ يشير إلى أن المعلمات المسماة يتم تمثيلها ": اسم المعلمة"
* param params معلمات الاستعلام
* @يعود
* throws sqlexception
*/
suppressWarnings ("غير محدد")
القائمة الثابتة العامة <map <string ، Object >> حدد (كائن SQL ، كائن ... params) يلقي sqlexception {
نتيجة الكائن = dbutil.executesql (SQL ، params) ؛
if (النتيجة == null) {
العودة لاغية.
}آخر{
إرجاع (قائمة <map <string ، Object >>) ؛
}
}
/**
* أداء الإدراج
* param sql
* param params
* @يعود
* throws sqlexception
*/
إدراج int الثابت العام (كائن SQL ، كائن ... params) يلقي sqlexception {
إرجاع dbutil.update (sql ، params) ؛
}
/**
* تنفيذ بيانات تغيير سجل قاعدة البيانات (إضافة ، حذف ، تعديل)
* param sql query SQL ، استخدم معلمات مجهولة؟ يشير إلى أن المعلمات المسماة يتم تمثيلها ": اسم المعلمة"
* param params معلمات الاستعلام
* @يعود
* throws sqlexception
*/
تحديث int الثابت العام (كائن SQL ، كائن ... params) يلقي sqlexception {
نتيجة الكائن = dbutil.executesql (SQL ، params) ؛
if (النتيجة == null) {
العودة 0 ؛
}آخر{
النتيجة (عدد صحيح) ؛
}
}
/**
* أداء الحذف
* param sql
* param params
* @يعود
* throws sqlexception
*/
int int static public (كائن SQL ، كائن ... params) يلقي sqlexception {
إرجاع dbutil.update (sql ، params) ؛
}
/**
* طريقة تنفيذ SQL العامة
* param sql query SQL ، استخدم معلمات مجهولة؟ يشير إلى أن المعلمات المسماة يتم تمثيلها ": اسم المعلمة"
* param params المسماة المعلمات
* @يعود
* throws sqlexception
*/
الكائن الثابت العام ينفذ (كائن SQL ، كائن ... params) يلقي sqlexception {
if (sql == null || "". يساوي (sql.toString (). trim ())) رمي sqlexception جديد ("عبارة SQL فارغة!") ؛
// الحصول على بيان SQL
String sqlstr = sql.toString (). trim () ؛
// معالجة المعلمات المسماة
if (params! = null & ¶ms.length == 1 & ¶ms [0] مثيل خريطة) {
قائمة <Object> plist = new ArrayList <Object> () ؛
خريطة <سلسلة ، كائن> pmap = (خريطة <سلسلة ، كائن>) params [0] ؛
matcher pmatcher = pattern.compile (": (// w+)"). matcher (sqlstr) ؛
بينما (pmatcher.find ()) {
String pname = pmatcher.group (1) ؛
plist.add (pmap.get (pname)) ؛
}
sqlstr = pmatcher.replaceall ("؟") ؛
params = plist.toarray () ؛
}
اتصال conn = null ؛
أعدت PS = NULL ؛
resultset rs = null ؛
يحاول {
conn = dbutil.getConnection () ؛
ps = conn.preparestatement (sqlstr) ؛
if (null! = params) {
// تهيئة معلمات الاستعلام
لـ (int i = 0 ؛ i <params.length ؛ i ++) {
الكائن param = params [i] ؛
if (param! = null) {
ps.SetObject (i+1 ، param) ؛
}آخر{
ps.setnull (i+1 ، types.null) ؛
}
}
}
// معالجة مجموعة النتائج
منطقية isResultset = ps.execute () ؛
قائمة <Object> result = new ArrayList <Object> () ؛
يفعل {
إذا (isResultset) {
قائمة <map <string ، object >> tabledata = new ArrayList <map <string ، object >> () ؛
resultset resultset = ps.getResultSet () ؛
بينما (resultset.next ()) {
خريطة <string ، object> rowdata = new HashMap <string ، Object> () ؛
لـ (int i = 1 ؛ i <= resultset.getMetAdata (). getColumnCount () ؛ i ++) {
rowdata.put (resultset.getMetadata (). getColumnName (i) ، resultset.getObject (i)) ؛
}
TableData.add (Rowdata) ؛
}
النتيجة. add (tabledata) ؛
} آخر {
result.add (عدد صحيح جديد (ps.GetUpDateCount ())) ؛
}
} بينما ((isResultSet = ps.getMorerSults ()) == true || ps.getupDateCount ()! = -1) ؛
// معالجة النتيجة
if (result.size () == 0) {
العودة لاغية.
} آخر إذا (result.size () == 1) {
return return.get (0) ؛
} آخر {
نتيجة العودة
}
} catch (sqlexception e) {
رمي sqlexception جديد ("غير صالح sql!->"+sql) ؛
} أخيراً {
dbutil.close (conn ، ps ، rs) ؛
}
}
}
WebServlet.java
نسخة الكود كما يلي:
حزمة com.hongyuan.core ؛
استيراد java.io.ioException ؛
استيراد java.io.unsupportedencodingException ؛
استيراد java.util.enumeration ؛
استيراد java.util.hashmap ؛
استيراد java.util.map ؛
استيراد javax.servlet.servletconfig ؛
استيراد javax.servlet.servletexception ؛
استيراد javax.servlet.http.httpservlet ؛
استيراد javax.servlet.http.httpservletrequest ؛
استيراد javax.servlet.http.httpservletresponse ؛
suppressWarnings ("Serial")
يمتد WebServlet من الفئة العامة httpservlet {
طلب httpservletrequest المحمي = فارغ ؛
استجابة httpservletresponse المحمية = فارغة ؛
الخريطة المحمية <string ، string> cfgparams = new HashMap <string ، string> () ؛
/**
* طريقة الوصول الافتراضي
* throws استثناء
*/
public void initPage () يلقي الاستثناء {}
@تجاوز
باطل نهائي عام init (servletconfig config) يلقي servletexception {
suppressWarnings ("غير محدد")
التعداد <string> names = config.getInitParameterNames () ؛
بينما (names.hasmoreElements ()) {
اسم السلسلة = names.nextElement () ؛
if (name.startswith ("Bean _")) {
// حقن كائن الفول إلى servlet
String Beanname = name.substring ("Bean _". length ()) ؛
سلسلة beanclass = config.getInitParameter (الاسم) ؛
يحاول {
if (beanclass == null || "". equals (beanclass.trim ())) رمي استثناء جديد ("اسم الفئة لم يتم تكوينه! ->"+beanname) ؛
كائن الفول = class.forname (beanclass) .newinstance () ؛
this.getClass (). getfield (beanname) .set (هذا ، الفول) ؛
} catch (InstantiationException e) {
يحاول {
رمي إنشاء مثيل جديد ("لا يمكن إنشاء مثيل ("+beanclass+")!") ؛
} catch (InstantiationException E1) {
e1.printstacktrace () ؛
}
} catch (classnotfoundException e) {
يحاول {
رمي classnotfoundException جديد ("الفئة غير موجودة ->"+beanclass) ؛
} catch (classnotfoundException E1) {
e1.printstacktrace () ؛
}
} catch (NosuchfieldException e) {
يحاول {
رمي NOSUCHFieldException ("حقل إعلان Bean لم يتم العثور عليه ("+Beanname+")") ؛
} catch (NosuchfieldException E1) {
e1.printstacktrace () ؛
}
} catch (استثناء e) {
E.PrintStackTrace () ؛
}
}آخر{
cfgparams.put (name ، config.getInitParameter (name)) ؛
}
}
}
@تجاوز
خدمة الفراغ النهائية العامة (طلب httpservletrequest ، httpservletresponse استجابة) {
this.request = طلب ؛
this.reSponse = الاستجابة ؛
سلسلة ترميز = فارغة ؛
يحاول {
الترميز = cfgparams.get ("الترميز") ؛
if (الترميز == null || "". equals (envoding.trim ())) الترميز = "utf-8" ؛
request.setcharacterencoding (الترميز) ؛
استجابة. setcharacterencoding (الترميز) ؛
} catch (UnsupportedEncodingException E2) {
يحاول {
رمي جديد UnduportedEncodingException ("مجموعة الأحرف غير المدعومة ("+تشفير+")") ؛
} catch (UnsupportedEncodingException e) {
E.PrintStackTrace () ؛
}
}
عمل سلسلة = فارغ ؛
يحاول {
// اقلب الطلب إلى الطريقة المحددة وفقًا لمعلمات التوجيه
سلسلة Routeparam = cfgparams.get ("Routeparam") ؛
Action = this.get ((Routeparam == null || "". equals (Routeparam))؟ "Action": Routeparam ، "initPage") ؛
this.getClass (). getMethod (Action) .invoke (this) ؛
} catch (alfictalaccessexception e) {
يحاول {
رمي الوصول غير القانوني الجديد ("الطريقة ("+إجراء+") تم رفض الوصول!") ؛
} catch (غير unsilecalaccessexception e1) {
e1.printstacktrace () ؛
}
} catch (nosuchmethodexception e) {
يحاول {
رمي nosuchmethodexception جديد ("الطريقة غير موجودة ("+Action+")!") ؛
} catch (nosuchmethodexception e1) {
e1.printstacktrace () ؛
}
} catch (استثناء e) {
E.PrintStackTrace () ؛
}
}
/**
* عرض الصفحة المحددة
* param صفحة
* throws ioException
* throws servleTexception
*/
عرض باطل محمي (صفحة سلسلة) {
سلسلة pagepath = cfgparams.get ("pagepath") ؛
يحاول {
request.getRequestDispatcher (((pagepath == null || ". equals (pagepath))؟"/web-inf/pages/": pagepath)+page).
} catch (استثناء e) {
E.PrintStackTrace () ؛
}
}
/**
* طباعة السلسلة المحددة
* param str
* throws ioException
*/
طباعة باطلة محمية (سلسلة str) {
يحاول {
استجابة. getWriter (). print (str) ؛
} catch (ioException e) {
E.PrintStackTrace () ؛
}
}
/**
* احصل على معلمة الطلب مع الاسم المحدد
* param اسم
* param def
* @يعود
*/
السلسلة المحمية GET (اسم السلسلة ، سلسلة DEF) {
قيمة السلسلة = request.getParameter (name) ؛
if (value! = null &&! "". equals (value.trim ())) {
قيمة الإرجاع
}آخر{
إرجاع def ؛
}
}
/**
* الإخراج المعلمات المحددة للصفحة
* param اسم
* قيمة param
*/
وضع void المحمي (اسم السلسلة ، قيمة الكائن) {
request.setAttribute (الاسم ، القيمة) ؛
}
}
SQL.JAVA
نسخة الكود كما يلي:
حزمة com.hongyuan.talk.cfg ؛
التعداد العام sql {
// استخراج معلومات المستخدم SQL
get_userinfo ("حدد معرف ، user_name ، كلمة المرور من المستخدم حيث user_name =: اسم المستخدم وكلمة المرور = md5 (: كلمة المرور)") ،
// حفظ معلومات المستخدم SQL
Save_user ("insert في قيم المستخدم (user_name ، كلمة المرور) (: اسم المستخدم ، md5 (: كلمة المرور))") ؛
قيمة السلسلة النهائية الخاصة ؛
خاص SQL (قيمة السلسلة) {
this.value = القيمة ؛
}
السلسلة العامة getValue () {
إرجاع هذا.
}
@تجاوز
السلسلة العامة tostring () {
إرجاع هذا.
}
}
Talkbean.java
نسخة الكود كما يلي:
حزمة com.hongyuan.talk ؛
استيراد java.sql.sqlexception ؛
استيراد java.util.hashmap ؛
استيراد java.util.list ؛
استيراد java.util.map ؛
استيراد com.hongyuan.core.dbutil ؛
استيراد com.hongyuan.talk.cfg.sql ؛
الطبقة العامة Talkbean {
/**
* استخراج معلومات المستخدم
* param اسم المستخدم
* param password
* @يعود
*/
الخريطة العامة <سلسلة ، كائن> getUserInfo (اسم المستخدم النهائي ، كلمة مرور السلسلة النهائية) {
يحاول {
قائمة <map <string ، object >> userInfo = dbutil.select (sql.get_userinfo ، hashmap new <string ، object> () {{
ضع ("اسم المستخدم" ، اسم المستخدم) ؛
ضع ("كلمة المرور" ، كلمة المرور) ؛
}}) ؛
if (userInfo! = null && userinfo.size () == 1) {
إرجاع userInfo.get (0) ؛
}
} catch (sqlexception e) {
E.PrintStackTrace () ؛
}
العودة لاغية.
}
/**
* حفظ معلومات المستخدم
* param اسم المستخدم
* param password
* @يعود
*/
SaveUser المنطقي العام (اسم مستخدم السلسلة النهائية ، كلمة مرور السلسلة النهائية) {
يحاول {
int count = dbutil.insert (sql.save_user ، hashmap new <string ، object> () {{
ضع ("اسم المستخدم" ، اسم المستخدم) ؛
ضع ("كلمة المرور" ، كلمة المرور) ؛
}}) ؛
if (count == 1) {
العودة صحيح.
}
} catch (sqlexception e) {
E.PrintStackTrace () ؛
}
العودة كاذبة
}
}
Talkservlet.java
نسخة الكود كما يلي:
حزمة com.hongyuan.talk ؛
استيراد java.io.ioException ؛
استيراد java.io.unsupportedencodingException ؛
استيراد java.util.map ؛
استيراد nl.justobjects.pushlet.core.dispatcher ؛
استيراد nl.justobjects.pushlet.core.event ؛
استيراد com.hongyuan.core.webservlet ؛
Talkservlet الطبقة العامة يمتد WebServlet {
شمبي Talkbean العام ؛
@تجاوز
public void initPage () {
Object userInfo = request.getSession (). getAttribute ("userInfo") ؛
if (userInfo! = null) {
PORKEPAGE () ؛
}آخر{
logInPage () ؛
}
}
// أدخل صفحة تسجيل الدخول
loginPage public void () {
عرض ("login.jsp") ؛
}
// أدخل صفحة التسجيل
public void regpage () {
عرض ("reg.jsp") ؛
}
//تسجيل الدخول
تسجيل الدخول الفراغ العام () يلقي ioexception {
username string = this.get ("اسم المستخدم" ، "") ؛
سلسلة كلمة المرور = this.get ("كلمة المرور" ، "") ؛
if (! "". يساوي (اسم المستخدم) &&! "" ،. يساوي (كلمة المرور)) {
// استخراج معلومات المستخدم
خريطة <سلسلة ، كائن> userInfo = talkbean.getuserInfo (اسم المستخدم ، كلمة المرور) ؛
if (userInfo! = null) {
// حفظ معلومات المستخدم في الجلسة
request.getSession (). setAttribute ("userInfo" ، userInfo) ؛
Response.SendRedirect ("./ talkservice.srv؟ Action = TalkPage") ؛
يعود؛
}
}
عرض ("login.jsp") ؛
}
//يسجل
public void reg () يلقي ioexception {
username string = this.get ("اسم المستخدم" ، "") ؛
سلسلة كلمة المرور = this.get ("كلمة المرور" ، "") ؛
String passConfirm = this.get ("passConfirm" ، "") ؛
if (! "" ،.
if (talkbean.saveuser (اسم المستخدم ، كلمة المرور)) {
استجابة.
يعود؛
}
}
عرض ("reg.jsp") ؛
}
// أدخل صفحة الدردشة
public void talkpage () {
Object userInfo = request.getSession (). getAttribute ("userInfo") ؛
if (userInfo! = null) {
خريطة <سلسلة ، كائن> info = (خريطة <سلسلة ، كائن>) userInfo ؛
this.put ("username" ، info.get ("user_name")) ؛
عرض ("Talk.jsp") ؛
يعود؛
}
عرض ("login.jsp") ؛
}
// إرسال رسالة
الفراغ العام sendmsg () يلقي UnsupportedEncodingException {
String msg = this.get ("message" ، "") ؛
if (! "". يساوي (msg)) {
حدث الحدث = event.createdataevent ("/message/world") ؛
Object userInfo = request.getSession (). getAttribute ("userInfo") ؛
if (userInfo! = null) {
خريطة <سلسلة ، كائن> info = (خريطة <سلسلة ، كائن>) userInfo ؛
event.setfield ("username" ، سلسلة جديدة (info.get ("user_name"). toString (). getBytes ("UTF-8") ، "ISO-8859-1")) ؛
}
Event.setfield ("Message" ، New String (msg.getBytes ("UTF-8") ، "ISO-8859-1")) ؛
dispatcher.getInstance (). multist (event) ؛
}
}
}
ملاحظة: يحتوي ما يلي فقط على الرمز الرئيسي
ما سبق هو كل شيء عن هذا المقال ، أتمنى أن تنال إعجابك.