Ini adalah ruang obrolan sederhana yang tidak bisa lebih sederhana.
1. Pendaftaran Pengguna.
2. Login Pengguna.
3. Tentu saja Anda juga bisa mengobrol.
Dbutil.java
Salinan kode adalah sebagai berikut:
paket com.hongyuan.core;
impor java.sql.connection;
impor java.sql.preparedstatement;
impor java.sql.Resultset;
impor java.sql.sqlexception;
impor java.sql.statement;
impor java.sql.types;
impor java.util.arraylist;
impor java.util.hashmap;
impor java.util.list;
impor java.util.map;
impor java.util.regex.matcher;
impor java.util.regex.pattern;
impor javax.sql.datasource;
impor com.mysql.jdbc.jdbc2.optional.mysqldataSource;
kelas publik dbutil {
DataSource DataSource private static = null;
statis{
/**
* Inisialisasi sumber data.
*/
MysqldataSource mds = mysqldataSource baru ();
mds.setUrl ("jdbc: mysql: // localhost: 3306/test");
mds.setuser ("tes");
mds.setPassword ("123456");
mds.setcharacterencoding ("utf8");
DataSource = MDS;
}
/**
* Dapatkan koneksi database
* @kembali
* @Throws SQlexception
*/
Koneksi statis publik getConnection () melempar sqlexception {
return DataSource.getConnection ();
}
/**
* Tutup Sumber Daya Koneksi Basis Data
* @param Conn
* @param s
* @param rs
* @Throws SQlexception
*/
public static void close (koneksi conn, pernyataan s, hasil rs) {
mencoba {
if (rs! = null) rs.close ();
} catch (sqlexception e) {
e.printstacktrace ();
}
mencoba {
if (s! = null) s.close ();
} catch (sqlexception e) {
e.printstacktrace ();
}
mencoba {
if (conn! = null) conn.close ();
} catch (sqlexception e) {
e.printstacktrace ();
}
}
/**
* Jalankan Pernyataan Kueri Basis Data
* @param SQL Query SQL, gunakan parameter anonim? Menunjukkan bahwa parameter yang disebutkan diwakili oleh ": nama parameter"
* parameter @param params kueri
* @kembali
* @Throws SQlexception
*/
@SuppressWarnings ("Uncecked")
Daftar statis publik <peta <string, objek >> pilih (objek sql, objek ... params) melempar sqlexception {
Hasil objek = dbutil.executesql (sql, params);
if (result == null) {
kembali nol;
}kalau tidak{
return (daftar <peta <string, objek >>) hasil;
}
}
/**
* Lakukan penyisipan
* @param sql
* @param params
* @kembali
* @Throws SQlexception
*/
Insert int statis publik (objek sql, objek ... params) melempar sqlexception {
return dbutil.update (sql, params);
}
/**
* Jalankan Pernyataan Perubahan Catatan Database (Tambah, Hapus, Ubah)
* @param SQL Query SQL, gunakan parameter anonim? Menunjukkan bahwa parameter yang disebutkan diwakili oleh ": nama parameter"
* parameter @param params kueri
* @kembali
* @Throws SQlexception
*/
Pembaruan int statis publik (objek SQL, objek ... params) melempar sqlexception {
Hasil objek = dbutil.executesql (sql, params);
if (result == null) {
kembali 0;
}kalau tidak{
Hasil mengembalikan (integer);
}
}
/**
* Melakukan penghapusan
* @param sql
* @param params
* @kembali
* @Throws SQlexception
*/
Public Static Int Delete (Object SQL, Object ... Params) Melempar SQLEXCEPTION {
return dbutil.update (sql, params);
}
/**
* Metode Eksekusi SQL Umum
* @param SQL Query SQL, gunakan parameter anonim? Menunjukkan bahwa parameter yang disebutkan diwakili oleh ": nama parameter"
* @param params bernama parameter
* @kembali
* @Throws SQlexception
*/
Objek statis publik mengeksekusiql (objek sql, objek ... params) melempar sqlexception {
if (sql == null || "". Equals (sql.tostring (). trim ())) melempar sqlexception baru ("Pernyataan SQL kosong!");
// Dapatkan pernyataan SQL
String sqlstr = sql.toString (). Trim ();
// memproses parameter yang disebutkan
if (params! = null & ¶ms.length == 1 & ¶MS [0] instance dari peta) {
Daftar <POMPENT> PLIST = NEW ARRAYLIST <POMPERTIFT> ();
Peta <String, Object> pMap = (peta <String, Object>) params [0];
Pencocokan pmatcher = pola.compile (": (// w+)"). Pencocokan (sqlstr);
while (pmatcher.find ()) {
String pName = pMatcher.group (1);
plist.add (pmap.get (pName));
}
sqlstr = pmatcher.replaceall ("?");
params = plist.toArray ();
}
Koneksi conn = null;
Disiapkan ps = null;
Hasil rs = null;
mencoba {
conn = dbutil.getConnection ();
ps = Conn.PrepareStatement (SQLSTR);
if (null! = params) {
// Inisialisasi parameter kueri
untuk (int i = 0; i <params.length; i ++) {
Objek param = params [i];
if (param! = null) {
ps.setObject (i+1, param);
}kalau tidak{
ps.setnull (i+1, type.null);
}
}
}
// Proses Hasil Set
boolean isResultset = ps.execute ();
Daftar <POMPERTIF> Hasil = Daftar ArrayList baru <POMPERTIF> ();
Mengerjakan {
if (isResultSet) {
Daftar <peta <string, objek >> tableData = new ArrayList <peta <string, object >> ();
Hasil HasilSet = ps.getResultSet ();
while (resultet.next ()) {
Peta <String, Object> rowData = HashMap baru <String, Object> ();
untuk (int i = 1; i <= resultet.getMetadata (). getColumnCount (); i ++) {
rowData.put (resultet.getMetadata (). getColumnName (i), resultet.getObject (i));
}
TableData.Add (RowData);
}
result.add (tabledata);
} kalau tidak {
hasil.
}
} while ((isResultSet = ps.getmoreresults ()) == true || ps.getupDateCount ()! = -1);
// memproses hasil pengembalian
if (result.size () == 0) {
kembali nol;
} lain jika (result.size () == 1) {
return result.get (0);
} kalau tidak {
hasil pengembalian;
}
} catch (sqlexception e) {
Lempar SQLException baru ("SQL tidak valid!->"+SQL);
} Akhirnya {
Dbutil.close (Conn, PS, RS);
}
}
}
WebServer.java
Salinan kode adalah sebagai berikut:
paket com.hongyuan.core;
impor java.io.ioException;
impor java.io.unsupportedencodingException;
impor java.util.enumeration;
impor java.util.hashmap;
impor java.util.map;
impor javax.servlet.servletconfig;
impor javax.servlet.servletException;
impor javax.servlet.http.httpservlet;
impor javax.servlet.http.httpservletRequest;
impor javax.servlet.http.httpservletResponse;
@Suppresswarnings ("serial")
Kelas Publik WebServlet memperluas httpservlet {
Permintaan httpservletRequest yang dilindungi = null;
respons httpservletResponse yang dilindungi = null;
peta yang dilindungi <string, string> cfgparams = hashmap baru <string, string> ();
/**
* Metode akses default
* @Throws Exception
*/
public void initpage () melempar Exception {}
@Mengesampingkan
public final void init (servletconfig config) melempar servletException {
@SuppressWarnings ("Uncecked")
Enumeration <string> names = config.getInitparameternames ();
while (names.hasmoreElements ()) {
String name = name.nextElement ();
if (name.startswith ("bean _")) {
// menyuntikkan objek kacang ke servlet
String beanname = name.substring ("bean _". Length ());
String beansclass = config.getInitparameter (name);
mencoba {
if (beansclass == null || "". Equals (beansclass.trim ())) lempar pengecualian baru ("Nama kelas tidak dikonfigurasi! ->"+beanname);
Objek bean = class.forname (beansclass) .newinstance ();
this.getClass (). getfield (beanname) .set (ini, bean);
} catch (InstantiationException e) {
mencoba {
Lempar InstantiationException baru ("tidak dapat membuat instantiate ("+beansclass+")!");
} catch (InstantiationException E1) {
e1.printstacktrace ();
}
} catch (classnotfoundException e) {
mencoba {
Lempar ClassNotFoundException baru ("Class Not Found ->"+Beansclass);
} catch (ClassNotFoundException E1) {
e1.printstacktrace ();
}
} catch (nosuchfieldException e) {
mencoba {
Lempar NosuchfieldException baru ("Lapangan Deklarasi kacang tidak ditemukan ("+beanname+")");
} catch (NosuchfieldException E1) {
e1.printstacktrace ();
}
} catch (Exception e) {
e.printstacktrace ();
}
}kalau tidak{
cfgparams.put (name, config.getInitparameter (name));
}
}
}
@Mengesampingkan
Layanan Void Final Publik (permintaan httpservletRequest, respons httpservletResponse) {
this.request = permintaan;
this.response = respons;
String encoding = null;
mencoba {
encoding = cfgparams.get ("encoding");
if (encoding == null || "". Equals (encoding.trim ())) encoding = "UTF-8";
request.setcharacterencoding (encoding);
response.setcharacterencoding (pengkodean);
} catch (UnsupportedencodingException E2) {
mencoba {
Lemparkan baru yang tidak didukung oleh Exception ("set karakter yang tidak didukung ("+encoding+")");
} catch (UnsupportedencodingException e) {
e.printstacktrace ();
}
}
Aksi string = null;
mencoba {
// Putar permintaan ke metode yang ditentukan sesuai dengan parameter perutean
String routeParam = cfgparams.get ("routeParam");
action = this.get ((routeParam == null || "". sama (routeParam))? "action": routeParam, "initpage");
this.getClass (). getMethod (action) .invoke (ini);
} catch (IllegalAccessException e) {
mencoba {
Lempar akses IllegalAccessException baru ("Metode ("+Action+") ditolak!");
} catch (IllegalAccessException E1) {
e1.printstacktrace ();
}
} catch (nosuchmethodeException e) {
mencoba {
Lempar NosuchMethodeException baru ("Metode tidak ditemukan ("+Action+")!");
} catch (nosuchmethodeException e1) {
e1.printstacktrace ();
}
} catch (Exception e) {
e.printstacktrace ();
}
}
/**
* Tampilkan halaman yang ditentukan
* @param Page
* @Throws IoException
* @Throws ServletException
*/
void show yang dilindungi (halaman string) {
String pagepath = cfgparams.get ("pagepath");
mencoba {
request.getRequestDispatcher (((pagepath == null || "". sama (pagepath))? "/web-inf/pages/": pagepath)+halaman) .forward (permintaan, respons);
} catch (Exception e) {
e.printstacktrace ();
}
}
/**
* Cetak string yang ditentukan
* @param str
* @Throws IoException
*/
Print Void Print (String str) {
mencoba {
response.getWriter (). print (str);
} catch (ioException e) {
e.printstacktrace ();
}
}
/**
* Dapatkan parameter permintaan dengan nama yang ditentukan
* nama @param
* @param def
* @kembali
*/
string yang dilindungi get (nama string, string def) {
Nilai string = request.getParameter (name);
if (value! = null &&! "". Equals (value.trim ())) {
nilai pengembalian;
}kalau tidak{
return def;
}
}
/**
* Output parameter yang ditentukan ke halaman
* nama @param
* Nilai @param
*/
Protected void put (nama string, nilai objek) {
request.setAttribute (nama, nilai);
}
}
Sql.java
Salinan kode adalah sebagai berikut:
paket com.hongyuan.talk.cfg;
Publik enum sql {
// Ekstrak Informasi Pengguna Pernyataan SQL
Get_userInfo ("Pilih id, user_name, kata sandi dari pengguna di mana user_name =: nama pengguna dan kata sandi = md5 (: kata sandi)"),
// Simpan Informasi Pengguna Pernyataan SQL
Save_user ("Sisipkan ke nilai pengguna (user_name, kata sandi) (: nama pengguna, md5 (: kata sandi))");
nilai string akhir pribadi;
private sql (nilai string) {
this.value = nilai;
}
Public String getValue () {
kembalikan nilai ini;
}
@Mengesampingkan
Public String ToString () {
kembalikan nilai ini;
}
}
TalkBean.java
Salinan kode adalah sebagai berikut:
paket com.hongyuan.talk;
impor java.sql.sqlexception;
impor java.util.hashmap;
impor java.util.list;
impor java.util.map;
impor com.hongyuan.core.dbutil;
impor com.hongyuan.talk.cfg.sql;
TalkBean kelas publik {
/**
* Ekstrak informasi pengguna
* Nama pengguna @param
* Kata sandi @param
* @kembali
*/
Peta Publik <String, Object> getUserInfo (nama pengguna string akhir, kata sandi string akhir) {
mencoba {
Daftar <peta <string, objek >> userInfo = dbutil.select (sql.get_userinfo, hashmap baru <string, objek> () {{
put ("nama pengguna", nama pengguna);
put ("kata sandi", kata sandi);
}});
if (userInfo! = null && userInfo.size () == 1) {
return userInfo.get (0);
}
} catch (sqlexception e) {
e.printstacktrace ();
}
kembali nol;
}
/**
* Simpan informasi pengguna
* Nama pengguna @param
* Kata sandi @param
* @kembali
*/
Public Boolean SaveUser (Nama Pengguna String Akhir, Kata Sandi String Akhir) {
mencoba {
int count = dbutil.insert (sql.save_user, hashmap baru <string, objek> () {{
put ("nama pengguna", nama pengguna);
put ("kata sandi", kata sandi);
}});
if (count == 1) {
Kembali Benar;
}
} catch (sqlexception e) {
e.printstacktrace ();
}
mengembalikan false;
}
}
Talkservlet.java
Salinan kode adalah sebagai berikut:
paket com.hongyuan.talk;
impor java.io.ioException;
impor java.io.unsupportedencodingException;
impor java.util.map;
impor nl.justobjects.pushlet.core.dispatcher;
impor nl.justobjects.pushlet.core.event;
impor com.hongyuan.core.webservlet;
Public Class TalkSerVlet memperluas WebServer {
Talkbean Talkbean Publik;
@Mengesampingkan
public void initpage () {
Objek userInfo = request.getSession (). GetAttribute ("userInfo");
if (userInfo! = null) {
TalkPage ();
}kalau tidak{
LoginPage ();
}
}
// Masukkan halaman login
LoginPage public void () {
show ("Login.jsp");
}
// Masukkan halaman pendaftaran
public void regpage () {
show ("Reg.jsp");
}
// Masuk
Login public void () melempar ioException {
String username = this.get ("username", "");
String password = this.get ("password", "");
if (! "". Equals (username) &&! "" ,. sama (kata sandi)) {
// Ekstrak informasi pengguna
Peta <String, Object> userInfo = talkBean.getUserInfo (nama pengguna, kata sandi);
if (userInfo! = null) {
// Simpan informasi pengguna ke dalam sesi
request.getSession (). SetAttribute ("UserInfo", UserInfo);
response.sendredirect ("./ TalkService.srv? Action = TalkPage");
kembali;
}
}
show ("Login.jsp");
}
//daftar
public void reg () melempar ioException {
String username = this.get ("username", "");
String password = this.get ("password", "");
String passConfirm = this.get ("passConfirm", "");
if (! "", Equals (username) &&! ",
if (talkBean.SaveUser (nama pengguna, kata sandi)) {
response.sendredirect ("./ TalkService.srv? Action = LoginPage");
kembali;
}
}
show ("Reg.jsp");
}
// Masukkan halaman obrolan
public void talkPage () {
Objek userInfo = request.getSession (). GetAttribute ("userInfo");
if (userInfo! = null) {
Peta <string, object> info = (peta <string, object>) userInfo;
this.put ("nama pengguna", info.get ("user_name"));
show ("Talk.jsp");
kembali;
}
show ("Login.jsp");
}
// Kirim pesan
public void sendMSG () melempar UnsupportedencodingException {
String msg = this.get ("pesan", "");
if (! "". Equals (msg)) {
Acara Event = Event.CreatedataEvent ("/Message/World");
Objek userInfo = request.getSession (). GetAttribute ("userInfo");
if (userInfo! = null) {
Peta <string, object> info = (peta <string, object>) userInfo;
event.setfield ("nama pengguna", string baru (info.get ("user_name"). tostring (). getBytes ("UTF-8"), "iso-8859-1"));
}
event.setfield ("pesan", string baru (msg.getbytes ("UTF-8"), "iso-8859-1"));
Dispatcher.getInstance (). Multicast (acara);
}
}
}
Catatan: Berikut ini hanya berisi kode utama
Di atas adalah semua tentang artikel ini, saya harap Anda menyukainya.