Il s'agit d'une salle de chat simple qui ne peut pas être plus simple.
1. Enregistrement de l'utilisateur.
2. Connexion de l'utilisateur.
3. Bien sûr, vous pouvez également discuter.
Dbutil.java
La copie de code est la suivante:
package com.hongyuan.core;
import java.sql.connection;
Importer java.sql.PreparedStatement;
import java.sql.resultSet;
import java.sql.sqlexception;
import java.sql.statement;
Importer java.sql.types;
import java.util.arraylist;
import java.util.hashmap;
Importer java.util.list;
importation java.util.map;
import java.util.regex.matcher;
import java.util.regex.pattern;
import javax.sql.datasource;
import com.mysql.jdbc.jdbc2.optional.mysqlDataSource;
classe publique DButil {
DataSource statique privé DataSource = null;
statique{
/ **
* Initialiser la source de données.
* /
MysqlDataSource mds = new mysqldatasource ();
mds.setUrl ("jdbc: mysql: // localhost: 3306 / test");
mds.setuser ("test");
mds.setpassword ("123456");
mds.SetcharAtterencoding ("UTF8");
dataSource = mds;
}
/ **
* Obtenez la connexion de la base de données
* @retour
* @throws sqlexception
* /
Connexion statique publique getConnection () lève sqlexception {
return dataSource.getConnection ();
}
/ **
* Fermez la ressource de connexion de la base de données
* @Param Conn
* @param s
* @param RS
* @throws sqlexception
* /
public static void close (connexion conn, instruction s, resultset rs) {
essayer {
if (rs! = null) Rs.close ();
} catch (sqlexception e) {
e.printStackTrace ();
}
essayer {
if (s! = null) s.close ();
} catch (sqlexception e) {
e.printStackTrace ();
}
essayer {
if (conn! = null) Conn.close ();
} catch (sqlexception e) {
e.printStackTrace ();
}
}
/ **
* Exécuter l'instruction de requête de la base de données
* @Param SQL Query SQL, utilisez des paramètres anonymes? Indique que les paramètres nommés sont représentés par ": nom du paramètre"
* @param params paramètres de requête
* @retour
* @throws sqlexception
* /
@SuppressWarnings ("non contrôlé")
Liste statique publique <map <string, objet >> select (objet sql, objet ... params) lève sqlexception {
Résultat de l'objet = dbutil.ExECUTESQL (SQL, params);
if (result == null) {
retourner null;
}autre{
return (list <map <string, objet >>) Résultat;
}
}
/ **
* Effectuer l'insertion
* @param sql
* @param params
* @retour
* @throws sqlexception
* /
insert intatique statique (objet SQL, objet ... params) lève SQLEXception {
return dbutil.update (sql, params);
}
/ **
* Exécuter les instructions de modification d'enregistrement de la base de données (ajouter, supprimer, modifier)
* @Param SQL Query SQL, utilisez des paramètres anonymes? Indique que les paramètres nommés sont représentés par ": nom du paramètre"
* @param params paramètres de requête
* @retour
* @throws sqlexception
* /
Public Static Int Update (Object SQL, Object ... Params) lève SQLEXception {
Résultat de l'objet = dbutil.ExECUTESQL (SQL, params);
if (result == null) {
retour 0;
}autre{
Retour (entier) Résultat;
}
}
/ **
* Effectuez la suppression
* @param sql
* @param params
* @retour
* @throws sqlexception
* /
public static int delete (objet sql, objet ... params) lève sqlexception {
return dbutil.update (sql, params);
}
/ **
* Méthode d'exécution générale SQL
* @Param SQL Query SQL, utilisez des paramètres anonymes? Indique que les paramètres nommés sont représentés par ": nom du paramètre"
* @param params nommés paramètres
* @retour
* @throws sqlexception
* /
L'objet statique public ExecuteSQL (objet SQL, objet ... params) lève SQELLEXception {
if (sql == null || "". equals (sql.toString (). Trim ())) lancez new sqlexception ("L'instruction SQL est vide!");
// Obtenez une instruction SQL
String sqlstr = sql.toString (). Trim ();
// Traitement des paramètres nommés
if (params! = null & ¶ms.length == 1 & ¶ms [0] instanceof map) {
List <object> plist = new ArrayList <Bject> ();
Map <string, objet> pmap = (map <string, objet>) params [0];
Matcher pmatcher = motif.compile (": (// w +)"). Matcher (sqlstr);
while (pmatcher.find ()) {
String pname = pmatcher.group (1);
plist.add (pmap.get (pname));
}
sqlstr = pmatcher.replaceALL ("?");
params = plist.toArray ();
}
Connexion conn = null;
PréparedStatement PS = null;
ResultSet rs = null;
essayer {
Conn = dbutil.getConnection ();
ps = conn.preparestatement (sqlstr);
if (null! = params) {
// Initialiser les paramètres de requête
pour (int i = 0; i <params.length; i ++) {
Objet param = params [i];
if (param! = null) {
Ps.SetObject (i + 1, param);
}autre{
ps.SetNull (i + 1, types.null);
}
}
}
// traite l'ensemble de résultats
booléen isResultSet = ps.Execute ();
List <object> result = new ArrayList <Bject> ();
faire {
if (isResultSet) {
List <map <string, objet >> teabledata = new ArrayList <map <string, objet >> ();
ResultSet resultTset = ps.getResultSet ();
while (resultSet.next ()) {
Map <string, objet> rowData = new HashMap <String, object> ();
pour (int i = 1; i <= resultSet.getMetAdata (). getColumnCount (); i ++) {
rowData.put (resultSet.getMetAdata (). getColumnName (i), resultSet.getObject (i));
}
TableData.Add (RowData);
}
result.add (TableData);
} autre {
result.add (new Integer (ps.GetUpDateCount ()));
}
} while ((isResultSet = ps.getMoreResults ()) == true || ps.getUpDateCount ()! = -1);
// Résultat des retours de traitement
if (result.size () == 0) {
retourner null;
} else if (result.size () == 1) {
return result.get (0);
} autre {
Résultat de retour;
}
} catch (sqlexception e) {
Jetez une nouvelle SQLEXception ("SQL non valide! ->" + SQL);
} enfin {
Dbutil.close (Conn, PS, Rs);
}
}
}
Webservlet.java
La copie de code est la suivante:
package com.hongyuan.core;
Importer java.io.ioException;
Importer java.io.UNSUPPORTEDENCODINGException;
Importer Java.util.Enumeration;
import java.util.hashmap;
importation java.util.map;
Importer javax.servlet.servletConfig;
Importer javax.servlet.servletException;
import javax.servlet.http.httpservlet;
Importer javax.servlet.http.httpservletRequest;
import javax.servlet.http.httpservletResponse;
@SuppressWarnings ("Serial")
classe publique Webservlet étend httpServlet {
Demande HTTPServletRequest protégé = null;
Réponse HttpServletResponse protégé = null;
map protégé <chaîne, string> cfgParams = new hashmap <string, string> ();
/ **
* Méthode d'accès par défaut
* @throws exception
* /
public void initpage () lève l'exception {}
@Outrepasser
public final void init (servletconfig config) lève ServletException {
@SuppressWarnings ("non contrôlé")
Énumération <string> names = config.getInitParameTernames ();
while (names.hasmoreElements ()) {
String name = names.nextElement ();
if (name.startswith ("bean _")) {
// injecter un objet de haricot au servlet
String beanname = name.substring ("bean _". Length ());
String beanclass = config.getInitParameter (name);
essayer {
if (beanclass == null || "". equals (beanclass.trim ())) lance une nouvelle exception ("nom de classe non configuré! ->" + beanname);
Objet bean = class.forname (beanclass) .newinstance ();
this.getClass (). GetField (beanname) .set (this, bean);
} catch (InstantiationException e) {
essayer {
lancer une nouvelle InstantiationException ("ne peut pas instancier (" + beanclass + ")!");
} catch (InstantiationException e1) {
e1.printStackTrace ();
}
} catch (classNotFoundException e) {
essayer {
Jetez une nouvelle classe ClassNotFoundException ("classe introuvable ->" + beanclass);
} catch (classNotFoundException e1) {
e1.printStackTrace ();
}
} catch (NoSuchFieldException e) {
essayer {
Jetez un nouveau NosuchFieldException ("champ de déclaration de bean introuvable (" + beanname + ")");
} catch (NosuchFieldException e1) {
e1.printStackTrace ();
}
} catch (exception e) {
e.printStackTrace ();
}
}autre{
cfgParams.put (name, config.getInitParAmètre (nom));
}
}
}
@Outrepasser
Service public Void final (demande httpservletRequest, réponse httpservletResponse) {
this.request = request;
this.Response = réponse;
String Encoding = null;
essayer {
codage = cfgParams.get ("Encoding");
if (Encoding == null || "". Equals (Encoding.trim ())) coding = "utf-8";
request.SetcharAtterencoding (codage);
Response.Setcharacterencoding (codage);
} catch (non supportDencodingException e2) {
essayer {
Jetez un nouveau UnsupportDenCcodingException ("Set de caractères non pris en charge (" + Encoding + ")");
} catch (non soutenu
e.printStackTrace ();
}
}
String action = null;
essayer {
// Tournez la demande sur la méthode spécifiée en fonction des paramètres de routage
String RouteParam = cfgParams.get ("RouteParam");
action = this.get ((routeParam == null || "". equals (routeParam))? "Action": RouteParam, "initpage");
this.getClass (). getMethod (action) .Invoke (this);
} catch (illégalaccessException e) {
essayer {
Jetez un nouvel accès illégalaccessException ("Méthode (" + Action + ") Rejeté!");
} catch (illégalaccessException e1) {
e1.printStackTrace ();
}
} catch (NoSuchMethodexception e) {
essayer {
Jetez un nouveau NosuchMethodexception ("Méthode introuvable (" + Action + ")!");
} catch (NoSuchMethodexception e1) {
e1.printStackTrace ();
}
} catch (exception e) {
e.printStackTrace ();
}
}
/ **
* Afficher la page spécifiée
* Page @param
* @throws ioexception
* @throws servlexception
* /
protégée void show (page de chaîne) {
String pagePath = cfgParams.get ("pagePath");
essayer {
request.getRequestDispatcher (((pagePath == null || "". Equals (pagePath))? "/ web-inf / pages /": pagePath) + page) .forward (request, réponse);
} catch (exception e) {
e.printStackTrace ();
}
}
/ **
* Imprimez la chaîne spécifiée
* @param str
* @throws ioexception
* /
PROTÉRÉ VOID PRINT (String Str) {
essayer {
réponse.getWriter (). print (str);
} catch (ioexception e) {
e.printStackTrace ();
}
}
/ **
* Obtenez le paramètre de demande avec le nom spécifié
* Nom @param
* @param def
* @retour
* /
String protégé get (name de chaîne, chaîne def) {
String value = request.getParameter (name);
if (value! = null &&! "". equals (valeur.trim ())) {
valeur de retour;
}autre{
retour def;
}
}
/ **
* Sortie des paramètres spécifiés à la page
* Nom @param
* valeur @param
* /
protégée void put (nom de chaîne, valeur d'objet) {
request.setAttribute (nom, valeur);
}
}
Sql.java
La copie de code est la suivante:
Package com.hongyuan.talk.cfg;
ennum public sql {
// Extraire Informations utilisateur Instruction SQL
Get_userinfo ("SELECT ID, user_name, mot de passe de l'utilisateur où user_name =: nom d'utilisateur et mot de passe = md5 (: mot de passe)"),
// Enregistrer les informations utilisateur Instruction SQL
SAVE_USER ("INSERT IN User (user_name, mot de passe) VALEURS (: Nom d'utilisateur, MD5 (: mot de passe))");
valeur de chaîne finale privée;
SQL privé (valeur de chaîne) {
this.value = valeur;
}
public String getValue () {
Renvoyez cette valeur;
}
@Outrepasser
public String toString () {
Renvoyez cette valeur;
}
}
Talkbean.java
La copie de code est la suivante:
Package com.hongyuan.talk;
import java.sql.sqlexception;
import java.util.hashmap;
Importer java.util.list;
importation java.util.map;
import com.hongyuan.core.dbutil;
import com.hongyuan.talk.cfg.sql;
classe publique talkbean {
/ **
* Extraire les informations utilisateur
* @param nom d'utilisateur
* Mot de passe @param
* @retour
* /
Map public <String, objet> getUserInfo (Nom d'utilisateur final de chaîne, mot de passe final de chaîne) {
essayer {
List <map <string, objet >> userInfo = dbutil.select (sql.get_userinfo, new hashmap <string, objet> () {{{
put ("nom d'utilisateur", nom d'utilisateur);
put ("mot de passe", mot de passe);
}});
if (userInfo! = null && userInfo.size () == 1) {
return userInfo.get (0);
}
} catch (sqlexception e) {
e.printStackTrace ();
}
retourner null;
}
/ **
* Enregistrer les informations utilisateur
* @param nom d'utilisateur
* Mot de passe @param
* @retour
* /
Public Boolean SaveUser (Nom d'utilisateur final de chaîne, mot de passe de chaîne finale) {
essayer {
int count = dbutil.insert (sql.save_user, new hashmap <string, objet> () {{{
put ("nom d'utilisateur", nom d'utilisateur);
put ("mot de passe", mot de passe);
}});
if (count == 1) {
Retour Vrai;
}
} catch (sqlexception e) {
e.printStackTrace ();
}
retourne false;
}
}
Talkservlet.java
La copie de code est la suivante:
Package com.hongyuan.talk;
Importer java.io.ioException;
Importer java.io.UNSUPPORTEDENCODINGException;
importation java.util.map;
import nl.justobjects.pushlet.core.dispatcher;
import nl.justobjects.pushlet.core.event;
import com.hongyuan.core.webservlet;
classe publique Talkservlet étend Webservlet {
Public Talkbean Talkbean;
@Outrepasser
public void initpage () {
Objet userInfo = request.getSession (). GetAttribute ("userInfo");
if (userInfo! = null) {
talkPage ();
}autre{
LoginPage ();
}
}
// Entrez la page de connexion
public void LoginPage () {
show ("login.jsp");
}
// Entrez la page d'inscription
public void regpage () {
show ("reg.jsp");
}
//Se connecter
public void Login () lève IOException {
String username = this.get ("nom d'utilisateur", "");
String mot de passe = this.get ("mot de passe", "");
if (! "". equals (nom d'utilisateur) &&! "",.
// Extraire les informations utilisateur
Map <string, objet> userInfo = talkbean.getUserInfo (nom d'utilisateur, mot de passe);
if (userInfo! = null) {
// Enregistrer les informations de l'utilisateur dans la session
request.getSession (). setAttribute ("userInfo", userInfo);
Response.SendRedirect ("./ TalkService.srv? Action = talkPage");
retour;
}
}
show ("login.jsp");
}
//registre
public void reg () lève IOException {
String username = this.get ("nom d'utilisateur", "");
String mot de passe = this.get ("mot de passe", "");
String PassConfirm = this.get ("PassConfirm", "");
if (! "",. Equals (nom d'utilisateur) &&! "",.
if (talkbean.saveuser (nom d'utilisateur, mot de passe)) {
réponse.sendRedirect ("./ talkService.srv? Action = loginpage");
retour;
}
}
show ("reg.jsp");
}
// Entrez la page de chat
public void talkpage () {
Objet userInfo = request.getSession (). GetAttribute ("userInfo");
if (userInfo! = null) {
Map <string, objet> info = (map <string, objet>) userInfo;
this.put ("nom d'utilisateur", info.get ("user_name"));
show ("talk.jsp");
retour;
}
show ("login.jsp");
}
//Envoyer un message
public void sendmsg () lève un supportdEncodingException {
String msg = this.get ("message", "");
if (! "". égal (msg)) {
Événement Event = event.CreateDataEvent ("/ Message / World");
Objet userInfo = request.getSession (). GetAttribute ("userInfo");
if (userInfo! = null) {
Map <string, objet> info = (map <string, objet>) userInfo;
event.setField ("nom d'utilisateur", new String (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 (). Multicast (événement);
}
}
}
Remarque: Ce qui suit contient uniquement le code principal.
Ce qui précède est tout sur cet article, j'espère que vous l'aimez.