Structure du projet :
Page d'accueil du projet :
Page d'inscription :
Télécharger l'image :
Image d'effet 1 :
Effet photo deux :
Image d'effet trois :
=================================================== ===========
Ci-dessous la partie code
=================================================== ===========
Base de données SQL requise :
créer la base de données db_ajax ;
utilisez db_ajax ;
créer une table user_table
(
user_id int clé primaire auto_increment,
nom varchar(255) unique,
passer varchar (255)
);
créer une table photo_table
(
photo_id int clé primaire auto_increment,
titre varchar(255),
nom de fichier varchar (255),
propriétaire_id int,
la clé étrangère (owner_id) fait référence à user_table (user_id)
);
<div id="uploadDiv" style="display:none">
<form action="proUpload" méthode="post"
enctype="multipart/form-data">
<table cellpacing="1" cellpadding="10">
<caption>Télécharger des photos</caption>
<tr>
<td>Titre de l'image :</td>
<td><input id="title" name="title" type="text" /></td>
</tr>
<tr>
<td>Parcourir les images :</td>
<td><input id="file" name="file" type="file" /></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="Télécharger" />
<input type="reset" value="Réinitialiser" />
</td>
</tr>
</table>
</form>
</div>
<div id="tipDiv" style="display:none">
</div>
</corps>
</html>
<!-- Configurer le conteneur Spring à charger au démarrage de l'application Web -->
<auditeur>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</auditeur>
<servlet>
<servlet-name>proLogin</servlet-name>
<servlet-class>com.b510.album.web.ProLoginServlet</servlet-class>
</servlet>
<mappage-servlet>
<servlet-name>proLogin</servlet-name>
<url-pattern>/proLogin</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>proRegist</servlet-name>
<servlet-class>com.b510.album.web.ProRegistServlet</servlet-class>
</servlet>
<mappage-servlet>
<servlet-name>proRegist</servlet-name>
<url-pattern>/proRegist</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>validateName</servlet-name>
<servlet-class>com.b510.album.web.ValidateNameServlet</servlet-class>
</servlet>
<mappage-servlet>
<servlet-name>validateName</servlet-name>
<url-pattern>/validateName</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>getPhoto</servlet-name>
<servlet-class>com.b510.album.web.GetPhotoServlet</servlet-class>
</servlet>
<mappage-servlet>
<servlet-name>getPhoto</servlet-name>
<url-pattern>/getPhoto</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>showImg</servlet-name>
<servlet-class>com.b510.album.web.ShowImgServlet</servlet-class>
</servlet>
<mappage-servlet>
<servlet-name>showImg</servlet-name>
<url-pattern>/showImg</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>pageLoad</servlet-name>
<servlet-class>com.b510.album.web.PageLoadServlet</servlet-class>
</servlet>
<mappage-servlet>
<servlet-name>pageLoad</servlet-name>
<url-pattern>/pageLoad</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>turnPage</servlet-name>
<servlet-class>com.b510.album.web.TurnPageServlet</servlet-class>
</servlet>
<mappage-servlet>
<servlet-name>turnPage</servlet-name>
<url-pattern>/turnPage</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>proUpload</servlet-name>
<servlet-class>com.b510.album.web.ProUploadServlet</servlet-class>
</servlet>
<mappage-servlet>
<servlet-name>proUpload</servlet-name>
<url-pattern>/proUpload</url-pattern>
</servlet-mapping>
<liste-de-fichiers-de-bienvenue>
<fichier-bienvenue>album.html</fichier-bienvenue>
</welcome-file-list>
</application-web>
<!-- Définir la source de données Bean, implémentée à l'aide de la source de données C3P0 -->
<bean id="dataSource" destroy-method="close"
>
<!-- Spécifiez le driver pour se connecter à la base de données -->
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<!-- Spécifiez l'URL de connexion à la base de données -->
<nom de la propriété="jdbcUrl"
value="jdbc:mysql://localhost:3308/db_ajax"/>
<!-- Spécifiez le nom d'utilisateur pour se connecter à la base de données -->
<property name="user" value="root"/>
<!-- Préciser le mot de passe pour se connecter à la base de données -->
<property name="password" value="root"/>
<!--Spécifiez le nombre maximum de connexions au pool de connexions à la base de données-->
<property name="maxPoolSize" value="40"/>
<!-- Spécifiez le nombre minimum de connexions pour se connecter au pool de connexions à la base de données -->
<property name="minPoolSize" value="1"/>
<!-- Spécifiez le nombre de connexions initiales pour se connecter au pool de connexions à la base de données -->
<property name="initialPoolSize" value="1"/>
<!-- Spécifiez le temps d'inactivité maximum pour les connexions au pool de connexions à la base de données -->
<property name="maxIdleTime" value="20"/>
</haricot>
<!-- Définir la SessionFactory d'Hibernate -->
<identifiant du bean="sessionFactory"
>
<!-- Source de données d'injection de dépendances, injectez la dataSource définie ci-dessus -->
<property name="dataSource" ref="dataSource"/>
<!-- L'attribut mappingResouces est utilisé pour lister tous les fichiers de mapping -->
<nom de la propriété="mappingResources">
<liste>
<!-- Ce qui suit est utilisé pour lister les fichiers de mappage Hibernate-->
<value>com/b510/album/model/User.hbm.xml</value>
<value>com/b510/album/model/Photo.hbm.xml</value>
</liste>
</propriété>
<!-- Définir les propriétés de SessionFactory d'Hibernate -->
<nom de la propriété="hibernateProperties">
<accessoires>
<!--Spécifier le dialecte de la base de données-->
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLInnoDBDialect</prop>
<!-- S'il faut créer automatiquement une base de données à chaque fois selon les besoins -->
<prop key="hibernate.hbm2ddl.auto">mettre à jour</prop>
<!-- Afficher le SQL généré par l'opération de persistance Hibernate -->
<prop key="hibernate.show_sql">true</prop>
<!-- Formatez le script SQL puis affichez-le -->
<prop key="hibernate.format_sql">true</prop>
</accessoires>
</propriété>
</haricot>
<!-- Configurer le composant UserDao -->
<identifiant du bean="userDao"
>
<!--Injecter la référence SessionFactory-->
<property name="sessionFactory" ref="sessionFactory"/>
</haricot>
<!-- Configurer le composant PhotoDao -->
<identifiant du bean="photoDao"
>
<property name="sessionFactory" ref="sessionFactory"/>
</haricot>
<!-- Configurer le composant de logique métier albumService -->
<identifiant du bean="albumService"
>
<!-- Injecter 2 composants DAO dans le composant de logique métier -->
<property name="userDao" ref="userDao"/>
<nom de la propriété="photoDao" ref="photoDao"/>
</haricot>
<!-- Configurez le gestionnaire de transactions local d'Hibernate, utilisez la classe HibernateTransactionManager -->
<!-- Cette classe implémente l'interface PlatformTransactionManager, qui est une implémentation spécifique pour Hibernate -->
<identifiant du bean="transactionManager"
>
<!-- Lors de la configuration d'HibernateTransactionManager, vous devez injecter une référence à SessionFactory -->
<property name="sessionFactory" ref="sessionFactory"/>
</haricot>
<!-- Configurer l'aspect transaction Bean et spécifier le gestionnaire de transactions -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!-- Utilisé pour configurer la sémantique détaillée des transactions-->
<tx:attributs>
<!-- Toutes les méthodes commençant par 'get' sont en lecture seule -->
<tx:method name="get*" read-only="true"/>
<!-- D'autres méthodes utilisent les paramètres de transaction par défaut -->
<tx:nom de la méthode="*"/>
</tx:attributs>
</tx:conseil>
<aop:config>
<!-- Configurer un pointcut pour qu'il corresponde à toutes les méthodes exécutées par toutes les classes se terminant par Impl sous le package lee -->
<aop:pointcut id="leeService"
expression="exécution(* com.b510.album.service.impl.*Impl.*(..))"/>
<!-- Spécifier pour appliquer l'aspect transaction txAdvice au point d'entrée leeService -->
<aop:advisor conseil-ref="txAdvice"
pointcut-ref="leeService"/>
</aop:config>
</haricots>
fonction réinitialiser()
{
// Effacez les deux zones de texte sur une seule ligne de l'utilisateur et passez
$("#utilisateur").val("");
$("#pass").val("");
}
//Passer à la boîte de dialogue d'enregistrement
fonction changeRegist()
{
//Masquer les deux boutons de connexion
$("#loginDiv").hide("500");
//Afficher deux boutons pour l'inscription
$("#registDiv").show("500");
}
//Fonction pour gérer la connexion de l'utilisateur
fonction proLogin()
{
//Récupère les valeursdes deux zones de texte utilisateur et passe
var utilisateur = $.trim($("#user").val());
var pass = $.trim($("#pass").val());
si (utilisateur == null || utilisateur == ""
|| passer == nul|| passer == "")
{
alert("Vous devez saisir votre nom d'utilisateur et votre mot de passe avant de pouvoir vous connecter");
renvoie faux ;
}
autre
{
//Envoyer une requête POST asynchrone à proLogin
$.post("proLogin", $('#user,#pass').serializeArray()
, nul , "script");
}
}
//Fonction qui gère l'enregistrement des utilisateurs
fonctionregistre()
{
//Récupère les valeursdes deux zones de texte utilisateur et passe
var utilisateur = $.trim($("#user").val());
var pass = $.trim($("#pass").val());
if (utilisateur == null || utilisateur == "" || pass == null || pass =="")
{
alert("Vous devez saisir votre nom d'utilisateur et votre mot de passe avant de vous inscrire");
renvoie faux ;
}
autre
{
//Envoyer une requête POST asynchrone à proRegist
$.post("proRegist", $('#user,#pass').serializeArray()
, nul , "script");
}
}
//Vérifie si le nom d'utilisateur est disponible
fonction validateName()
{
//Obtenir la valeur de la zone de texte utilisateur
var utilisateur = $.trim($("#user").val());
si (utilisateur == null || utilisateur == "")
{
alert("Vous n'avez pas encore saisi votre nom d'utilisateur !");
renvoie faux ;
}
autre
{
//Envoyer une requête POST asynchrone à validateName
$.post("validateName", $('#user').serializeArray()
, nul , "script");
}
}
// Obtenez périodiquement des photos de l'utilisateur actuel et de la page actuelle
fonction onLoadHandler()
{
//Envoyer une requête GET asynchrone à getPhoto
$.getScript("getPhoto");
//Exécutez à nouveau cette méthode après avoir spécifié 1 seconde
setTimeout("onLoadHandler()", 1000);
}
//afficher les photos
fonction showImg (nom de fichier)
{
$.getScript("showImg?img=" + fileName);
// document.getElementById("show").src="uploadfiles/" + fileName + "?now=" + new Date();
// $("#show").attr("src" , "uploadfiles/" + fileName);
}
//Fonction pour gérer le tournage des pages
fonction turnPage (drapeau)
{
$.getScript("turnPage?turn=" + drapeau);
}
//Ouvre la fenêtre de téléchargement
fonction openUpload()
{
$("#uploadDiv").show()
.dialogue(
{
modal : vrai,
redimensionnable : faux,
largeur : 428,
hauteur : 220,
superposition : {opacité : 0,5, arrière-plan : "noir"}
});
}
importer javax.servlet.ServletConfig ;
importer javax.servlet.ServletException ;
importer javax.servlet.http.HttpServlet ;
importer org.springframework.context.ApplicationContext ;
importer org.springframework.web.context.support.WebApplicationContextUtils ;
importer com.b510.album.service.AlbumService ;
/**
*
* @auteur Hongten
*
*/
la classe publique BaseServlet étend HttpServlet {
privé statique final long serialVersionUID = -2041755371540813745L;
AlbumService protégé en tant que ;
//Définissez le constructeur et obtenez une référence au conteneur Spring
public void init (configuration ServletConfig) lance ServletException {
super.init(config);
ApplicationContext ctx = WebApplicationContextUtils
.getWebApplicationContext(getServletContext());
as = (AlbumService) ctx.getBean("albumService");
}
}
importer java.io.IOException ;
importer java.io.PrintWriter ;
importer javax.servlet.ServletException ;
importer javax.servlet.http.HttpServletRequest ;
importer javax.servlet.http.HttpServletResponse ;
importer com.b510.album.exception.AlbumException ;
importer com.b510.album.web.base.BaseServlet ;
/**
*
* @auteur Hongten
*
*/
la classe publique ValidateNameServlet étend BaseServlet {
privé statique final long serialVersionUID = 9038839276327742641L;
service public void (demande HttpServletRequest, réponse HttpServletResponse)
lance IOException, ServletException {
Nom de la chaîne = request.getParameter("user");
réponse.setContentType("text/javascript;charset=GBK");
// Récupère le flux de sortie
PrintWriter out = réponse.getWriter();
essayer {
si (nom != null) {
if (as.validateName(nom)) {
out.println("alert('Félicitations, ce nom d'utilisateur n'a pas encore été utilisé, vous pouvez utiliser ce nom d'utilisateur !');");
} autre {
out.println("alert('Désolé, ce nom d'utilisateur est déjà occupé par quelqu'un d'autre !');");
out.println("$('#user').val('');");
}
} autre {
out.println("alert('Une exception s'est produite lors de la vérification du nom d'utilisateur, veuillez modifier le nom d'utilisateur et réessayer !');");
}
} catch (AlbumException ex) {
out.println("alert('" + ex.getMessage() + "Veuillez modifier votre nom d'utilisateur et réessayer !');");
}
}
}
importer java.io.IOException ;
importer java.io.PrintWriter ;
importer java.util.List ;
importer javax.servlet.ServletException ;
importer javax.servlet.http.HttpServletRequest ;
importer javax.servlet.http.HttpServletResponse ;
importer javax.servlet.http.HttpSession ;
importer com.b510.album.exception.AlbumException ;
importer com.b510.album.vo.PhotoHolder ;
importer com.b510.album.web.base.BaseServlet ;
/**
*
* @auteur Hongten
*
*/
la classe publique TurnPageServlet étend BaseServlet {
privé statique final long serialVersionUID = -5097286750384714951L;
service public void (demande HttpServletRequest, réponse HttpServletResponse)
lance IOException, ServletException {
Chaîne turn = request.getParameter("turn");
Session HttpSession = request.getSession(true);
Nom de la chaîne = (String) session.getAttribute("curUser");
Objet pageObj = session.getAttribute("curPage");
// Si curPage dans HttpSession est null, définit la page actuelle sur la première page
int curPage = pageObj == null 1 : (Entier) pageObj;
réponse.setContentType("text/javascript;charset=GBK");
PrintWriter out = réponse.getWriter();
if (curPage == 1 && turn.equals("-1")) {
out.println("alert('C'est maintenant la première page, impossible de faire avancer la page !')");
} autre {
// Exécute le tournage de page et modifie la valeur de curPage.
curPage += Integer.parseInt(turn);
essayer {
List<PhotoHolder> photos = as.getPhotoByUser(name, curPage);
// Il n'y a aucun enregistrement après avoir tourné la page
si (photos.size() == 0) {
out.println("alert('Aucune photo trouvée après avoir tourné la page, le système reviendra automatiquement à la page précédente')");
//Retour à la page précédente
curPage -= Integer.parseInt(turn);
} autre {
//Mettez le numéro de page que l'utilisateur parcourt dans la HttpSession
session.setAttribute("curPage", curPage);
}
} catch (AlbumException ex) {
out.println("alert('" + ex.getMessage() + "Veuillez réessayer !')");
}
}
}
}
importer java.io.IOException ;
importer java.io.PrintWriter ;
importer javax.servlet.ServletException ;
importer javax.servlet.http.HttpServletRequest ;
importer javax.servlet.http.HttpServletResponse ;
importer javax.servlet.http.HttpSession ;
importer com.b510.album.web.base.BaseServlet ;
/**
*
* @auteur Hongten
*
*/
la classe publique ShowImgServlet étend BaseServlet {
privé statique final long serialVersionUID = 1460203270448078666L;
service public void (demande HttpServletRequest, réponse HttpServletResponse)
lance IOException, ServletException {
Chaîne img = request.getParameter("img");
Session HttpSession = request.getSession(true);
//Mettez l'image que l'utilisateur parcourt dans la HttpSession.
session.setAttribute("curImg", img);
réponse.setContentType("text/javascript;charset=GBK");
// Récupère le flux de sortie
PrintWriter out = réponse.getWriter();
out.println("$('#show').attr('src' , 'uploadfiles/" + img + "');");
}
}
importer java.io.FileOutputStream ;
importer java.io.IOException ;
importer java.io.InputStream ;
importer java.io.PrintWriter ;
importer java.util.Iterator ;
importer java.util.List ;
importer javax.servlet.ServletException ;
importer javax.servlet.http.HttpServletRequest ;
importer javax.servlet.http.HttpServletResponse ;
importer org.apache.commons.fileupload.FileItem ;
importer org.apache.commons.fileupload.FileItemFactory ;
importer org.apache.commons.fileupload.FileUploadException ;
importer org.apache.commons.fileupload.disk.DiskFileItemFactory ;
importer org.apache.commons.fileupload.servlet.ServletFileUpload ;
importer com.b510.album.exception.AlbumException ;
importer com.b510.album.web.base.BaseServlet ;
/**
*
* @auteur Hongten
*
*/
@SuppressWarnings("non coché")
la classe publique ProUploadServlet étend BaseServlet {
privé statique final long serialVersionUID = 642229801989188793L;
service public void (demande HttpServletRequest, réponse HttpServletResponse)
lance IOException, ServletException {
Itérateur iter = null ;
Titre de la chaîne = null ;
réponse.setContentType("text/html;charset=GBK");
// Récupère le flux de sortie
PrintWriter out = réponse.getWriter();
out.println("<script type='text/javascript>'");
essayer {
//Utiliser Uploader pour gérer les téléchargements
Usine FileItemFactory = new DiskFileItemFactory();
ServletFileUpload upload = nouveau ServletFileUpload (usine);
Éléments de la liste = upload.parseRequest(request);
iter = items.iterator();
// Parcours du contenu correspondant à chaque contrôle de formulaire
while (iter.hasNext()) {
Élément FileItem = (FileItem) iter.next();
// Si l'élément est un champ de formulaire normal
si (item.isFormField()) {
Nom de la chaîne = item.getFieldName();
if (nom.equals("titre")) {
titre = item.getString("GBK");
}
}
// S'il s'agit d'un fichier qui doit être téléchargé
autre {
Chaîne utilisateur = (Chaîne) request.getSession().getAttribute(
"curUser");
Chaîne serverFileName = null ;
// renvoie le nom du fichier
String fileName = item.getName();
// Récupère le suffixe du fichier
Chaîne appden = fileName.substring(fileName
.lastIndexOf("."));
// renvoie le type de fichier
Chaîne contentType = item.getContentType();
// Seules les images jpg, gif et png peuvent être téléchargées
si (contentType.equals("image/pjpeg")
|| contentType.equals("image/gif")
|| contentType.equals("image/jpeg")
|| contentType.equals("image/png")) {
Entrée InputStream = item.getInputStream();
serverFileName = String.valueOf (Système
.currentTimeMillis());
Sortie FileOutputStream = nouveau FileOutputStream (
getServletContext().getRealPath("/")
+ "uploadfiles//" + serverFileName
+ annexe);
octet[] tampon = nouvel octet[1024];
int len = 0;
while ((len = input.read(buffer)) > 0) {
sortie.write(buffer, 0, len);
}
input.close();
sortie.close();
as.addPhoto(utilisateur, titre, serverFileName + appden);
réponse.sendRedirect("album.html?resultCode=0");
} autre {
réponse.sendRedirect("album.html?resultCode=1");
}
}
}
} catch (FileUploadException fue) {
fue.printStackTrace();
réponse.sendRedirect("album.html?resultCode=2");
} catch (AlbumException ex) {
ex.printStackTrace();
}
}
}
importer java.io.IOException ;
importer java.io.PrintWriter ;
importer javax.servlet.ServletException ;
importer javax.servlet.http.HttpServletRequest ;
importer javax.servlet.http.HttpServletResponse ;
importer javax.servlet.http.HttpSession ;
importer com.b510.album.exception.AlbumException ;
importer com.b510.album.web.base.BaseServlet ;
/**
*
* @auteur Hongten
*
*/
la classe publique ProRegistServlet étend BaseServlet {
privé statique final long serialVersionUID = -3174994243043815566L;
service public void (demande HttpServletRequest, réponse HttpServletResponse)
lance IOException, ServletException {
Nom de la chaîne = request.getParameter("user");
Chaîne pass = request.getParameter("pass");
réponse.setContentType("text/javascript;charset=GBK");
// Récupère le flux de sortie
PrintWriter out = réponse.getWriter();
essayer {
out.println("$('#user,#pass').val('');");
if (name != null && pass != null && as.registUser(name, pass) > 0) {
Session HttpSession = request.getSession(true);
session.setAttribute("curUser", nom);
out.println("alert('Félicitations, vous vous êtes inscrit avec succès !');");
out.println("$('#noLogin').hide(500);");
out.println("$('#hasLogin').show(500);");
//Appelle la méthode pour obtenir la liste des photos
out.println("onLoadHandler();");
} autre {
out.println("alert('Votre inscription a échoué, veuillez choisir un nom d'utilisateur approprié et réessayer !');");
}
} catch (AlbumException ex) {
out.println("alert('" + ex.getMessage() + "Veuillez modifier votre nom d'utilisateur et réessayer !');");
}
}
}
importer java.io.IOException ;
importer java.io.PrintWriter ;
importer javax.servlet.ServletException ;
importer javax.servlet.http.HttpServletRequest ;
importer javax.servlet.http.HttpServletResponse ;
importer javax.servlet.http.HttpSession ;
importer com.b510.album.exception.AlbumException ;
importer com.b510.album.web.base.BaseServlet ;
/**
*
* @auteur Hongten
*
*/
la classe publique ProLoginServlet étend BaseServlet {
privé statique final long serialVersionUID = -1253530202224049958L;
service public void (demande HttpServletRequest, réponse HttpServletResponse)
lance IOException, ServletException {
Nom de la chaîne = request.getParameter("user");
Chaîne pass = request.getParameter("pass");
réponse.setContentType("text/javascript;charset=GBK");
// Récupère le flux de sortie
PrintWriter out = réponse.getWriter();
essayer {
// Efface le contenu des zones de saisie avec les identifiants de l'utilisateur et passe
out.println("$('#user,#pass').val('');");
if (name != null && pass != null && as.userLogin(name, pass)) {
Session HttpSession = request.getSession(true);
session.setAttribute("curUser", nom);
out.println("alert('Vous vous êtes connecté avec succès !')");
out.println("$('#noLogin').hide(500)");
out.println("$('#hasLogin').show(500)");
//Appelle la méthode pour obtenir la liste des photos
out.println("onLoadHandler();");
} autre {
out.println("alert('Le nom d'utilisateur et le mot de passe que vous avez saisis ne correspondent pas, veuillez réessayer !')");
}
} catch (AlbumException ex) {
out.println("alert('" + ex.getMessage() + "Veuillez modifier votre nom d'utilisateur et votre mot de passe et réessayer !')");
}
}
}
importer java.io.IOException ;
importer java.io.PrintWriter ;
importer javax.servlet.ServletException ;
importer javax.servlet.http.HttpServletRequest ;
importer javax.servlet.http.HttpServletResponse ;
importer javax.servlet.http.HttpSession ;
importer com.b510.album.web.base.BaseServlet ;
/**
*
* @auteur Hongten
*
*/
la classe publique PageLoadServlet étend BaseServlet {
privé statique final long serialVersionUID = 7512001492425261841L;
service public void (demande HttpServletRequest, réponse HttpServletResponse)
lance IOException, ServletException {
réponse.setContentType("text/javascript;charset=GBK");
// Récupère le flux de sortie
PrintWriter out = réponse.getWriter();
Session HttpSession = request.getSession(true);
Nom de la chaîne = (String) session.getAttribute("curUser");
// Si le nom n'est pas nul, cela indique que l'utilisateur s'est connecté
si (nom != null) {
//Masquer l'élément avec l'identifiant noLogin (panneau de connexion utilisateur)
out.println("$('#noLogin').hide()");
//Masquer l'élément avec l'identifiant hasLogin (Panneau de configuration utilisateur)
out.println("$('#hasLogin').show()");
//Appelle la méthode pour obtenir la liste des photos
out.println("onLoadHandler();");
// Supprime l'attribut curImg dans HttpSession
String curImg = (String) session.getAttribute("curImg");
//Réafficher la photo parcourue par l'utilisateur
si (curImg != null) {
out.println("$('#show').attr('src' , 'uploadfiles/" + curImg
+ "');");
}
}
}
}
importer java.io.IOException ;
importer java.io.PrintWriter ;
importer java.util.List ;
importer javax.servlet.ServletException ;
importer javax.servlet.http.HttpServletRequest ;
importer javax.servlet.http.HttpServletResponse ;
importer javax.servlet.http.HttpSession ;
importer com.b510.album.exception.AlbumException ;
importer com.b510.album.vo.PhotoHolder ;
importer com.b510.album.web.base.BaseServlet ;
/**
*
* @auteur Hongten
*
*/
la classe publique GetPhotoServlet étend BaseServlet {
privé statique final long serialVersionUID = -8380695760546582385L;
service public void (demande HttpServletRequest, réponse HttpServletResponse)
lance IOException, ServletException {
Session HttpSession = request.getSession(true);
// Récupère le numéro de page actuel de l'utilisateur actuel et la liste de photos du système à partir de HttpSession
Nom de la chaîne = (String) session.getAttribute("curUser");
Objet pageObj = session.getAttribute("curPage");
// Si curPage dans HttpSession est null, définit la page actuelle sur la première page
int curPage = pageObj == null 1 : (Entier) pageObj;
réponse.setContentType("text/javascript;charset=GBK");
// Récupère le flux de sortie
PrintWriter out = réponse.getWriter();
essayer {
List<PhotoHolder> photos = as.getPhotoByUser(name, curPage);
// Efface l'élément avec l'identifiant de la liste
out.println("var list = $('#list').empty();");
pour (PhotoHolder ph : photos) {
// Ajoutez dynamiquement chaque photo à l'élément avec l'identifiant de la liste
out.println("list.append(/"<div align='center'>"
+ "<a href='javascript:void(0)' onclick=///"showImg('"
+ ph.getFileName() + "');///">" + ph.getTitle()
+ "</a></div>/");");
}
} catch (AlbumException ex) {
out.println("alert('" + ex.getMessage() + "Veuillez réessayer !')");
}
}
}
/**
*
* @auteur Hongten
*
*/
PhotoHolder de classe publique {
//Le nom de la photo
titre de chaîne privé ;
//Le nom du fichier de la photo sur le serveur
nom de fichier de chaîne privé ;
// Constructeur sans paramètres
PhotoHolder public() {
}
// Constructeur pour initialiser toutes les propriétés
public PhotoHolder (titre de la chaîne, nom du fichier de la chaîne) {
this.title = titre ;
this.fileName = fileName;
}
//Les méthodes setter et getter de l'attribut title
public void setTitle (titre de la chaîne) {
this.title = titre ;
}
chaîne publique getTitle() {
renvoie this.title ;
}
//Méthodes Setter et Getter de l'attribut fileName
public void setFileName (String fileName) {
this.fileName = fileName;
}
chaîne publique getFileName() {
renvoie this.fileName ;
}
}
importer java.util.ArrayList ;
importer java.util.List ;
importer com.b510.album.dao.PhotoDao ;
importer com.b510.album.dao.UserDao ;
importer com.b510.album.exception.AlbumException ;
importer com.b510.album.model.Photo ;
importer com.b510.album.model.User ;
importer com.b510.album.service.AlbumService ;
importer com.b510.album.vo.PhotoHolder ;
/**
*
* @auteur Hongten
*
*/
classe publique AlbumServiceImpl implémente AlbumService {
// 2 composants DAO dont dépend le composant de logique métier
privé UserDao ud = null ;
privé PhotoDao pd = null ;
// Injection de dépendances des méthodes setter requises par 2 composants DAO
public void setUserDao (UserDao ud) {
this.ud = ud;
}
public void setPhotoDao (PhotoDao pd) {
ceci.pd = pd;
}
/**
* Vérifiez si la connexion de l'utilisateur a réussi.
*
* Nom @param
* Nom d'utilisateur de connexion
* @param passe
* Mot de passe de connexion
* @return Le résultat de la connexion de l'utilisateur, renvoie vrai en cas de succès, sinon renvoie faux
*/
public boolean userLogin (nom de chaîne, passe de chaîne) {
essayer {
// Utilisez UserDao pour interroger les utilisateurs en fonction du nom d'utilisateur
Utilisateur u = ud.findByName(name);
if (u != null && u.getPass().equals(pass)) {
renvoie vrai ;
}
renvoie faux ;
} catch (Exception ex) {
ex.printStackTrace();
throw new AlbumException("Une exception s'est produite lors du traitement de la connexion de l'utilisateur !");
}
}
/**
* Enregistrez un nouvel utilisateur
*
* Nom @param
* Nom d'utilisateur de l'utilisateur nouvellement enregistré
* @param passe
* Mot de passe pour les utilisateurs nouvellement enregistrés
* @renvoie la clé primaire de l'utilisateur nouvellement enregistré
*/
public int registUser (nom de chaîne, passe de chaîne) {
essayer {
//Créer une nouvelle instance utilisateur
Utilisateur u = nouvel utilisateur ();
u.setName(nom);
u.setPass(pass);
// Conserver l'objet Utilisateur
ud.save(u);
return u.getId();
} catch (Exception ex) {
ex.printStackTrace();
throw new AlbumException("Une exception s'est produite lors de l'enregistrement d'un nouvel utilisateur !");
}
}
/**
* Ajouter des photos
*
* Utilisateur @param
* Utilisateur qui a ajouté une photo
* Titre @param
* Ajoutez un titre à votre photo
* @param nomfichier
* Ajoutez le nom de fichier de la photo sur le serveur
* @return La clé primaire de la photo nouvellement ajoutée
*/
public int addPhoto (utilisateur de chaîne, titre de chaîne, nom de fichier de chaîne) {
essayer {
//Créer une nouvelle instance Photo
Photo p = nouvelle photo ();
p.setTitle(titre);
p.setFileName(fileName);
p.setUser(ud.findByName(user));
// Instance de photo persistante
pd.save(p);
return p.getId();
} catch (Exception ex) {
ex.printStackTrace();
throw new AlbumException("Une exception s'est produite lors de l'ajout de photos !");
}
}
/**
* Obtenez toutes les photos de l'utilisateur en fonction de l'utilisateur
*
* Utilisateur @param
* Utilisateur actuel
* @param pageNon
*Numéro de page
* @return Renvoie les photos appartenant à l'utilisateur et à la page spécifiée
*/
public List<PhotoHolder> getPhotoByUser(String user, int pageNo) {
essayer {
List<Photo> pl = pd.findByUser(ud.findByName(user), pageNo);
List<PhotoHolder> result = new ArrayList<PhotoHolder>();
pour (Photo p : pl) {
result.add(new PhotoHolder(p.getTitle(), p.getFileName()));
}
renvoyer le résultat ;
} catch (Exception ex) {
ex.printStackTrace();
throw new AlbumException("Une exception s'est produite lors de l'interrogation de la liste de photos !");
}
}
/**
* Vérifiez si le nom d'utilisateur est disponible, c'est-à-dire si le nom d'utilisateur existe déjà dans la base de données
*
* Nom @param
* Nom d'utilisateur qui doit être vérifié
* @return Renvoie vrai si le nom d'utilisateur est disponible, sinon renvoie faux.
*/
public boolean validateName (nom de chaîne) {
essayer {
// Interroge l'instance User correspondante en fonction du nom d'utilisateur
Utilisateur u = ud.findByName(name);
si (u != nul) {
renvoie faux ;
}
renvoie vrai ;
} catch (Exception ex) {
ex.printStackTrace();
throw new AlbumException("Une exception s'est produite lors du processus de vérification de l'existence du nom d'utilisateur !");
}
}
}
importer java.util.List ;
importer com.b510.album.vo.PhotoHolder ;
/**
*
* @auteur Hongten
*
*/
interface publique AlbumService {
/**
* Vérifiez si la connexion de l'utilisateur a réussi.
*
* Nom @param
* Nom d'utilisateur de connexion
* @param passe
* Mot de passe de connexion
* @return Le résultat de la connexion de l'utilisateur, renvoie vrai en cas de succès, sinon renvoie faux
*/
boolean userLogin (nom de chaîne, passe de chaîne);
/**
* Enregistrez un nouvel utilisateur
*
* Nom @param
* Nom d'utilisateur de l'utilisateur nouvellement enregistré
* @param passe
* Mot de passe pour les utilisateurs nouvellement enregistrés
* @renvoie la clé primaire de l'utilisateur nouvellement enregistré
*/
int registerUser (nom de chaîne, passe de chaîne);
/**
* Ajouter des photos
*
* Utilisateur @param
* Utilisateur qui a ajouté une photo
* Titre @param
* Ajoutez un titre à votre photo
* @param nomfichier
* Ajoutez le nom de fichier de la photo sur le serveur
* @return La clé primaire de la photo nouvellement ajoutée
*/
int addPhoto (utilisateur de chaîne, titre de chaîne, nom de fichier de chaîne);
/**
* Obtenez toutes les photos de l'utilisateur en fonction de l'utilisateur
*
* Utilisateur @param
* Utilisateur actuel
* @param pageNon
*Numéro de page
* @return Renvoie les photos appartenant à l'utilisateur et à la page spécifiée
*/
List<PhotoHolder> getPhotoByUser(String user, int pageNo);
/**
* Vérifiez si le nom d'utilisateur est disponible, c'est-à-dire si le nom d'utilisateur existe déjà dans la base de données
*
* Nom @param
* Nom d'utilisateur qui doit être vérifié
* @return Renvoie vrai si le nom d'utilisateur est disponible, sinon renvoie faux.
*/
booléen validateName (nom de chaîne);
}
/**
* Classe d'entité photo
*
* @auteur Hongten
*
*/
Photo de classe publique {
//Attribut d'identification
Identifiant entier privé ;
//Le nom de la photo
titre de chaîne privé ;
//Le nom du fichier de la photo sur le serveur
nom de fichier de chaîne privé ;
// Enregistre l'utilisateur à qui appartient la photo
utilisateur utilisateur privé ;
// Constructeur sans paramètres
Photo publique() {
}
// Constructeur pour initialiser toutes les propriétés
Photo publique (ID entier, titre de chaîne, nom de fichier de chaîne, utilisateur) {
this.id = identifiant;
this.title = titre ;
this.fileName = fileName;
this.user = utilisateur ;
}
// Méthodes de setter et d'attribut ID
public void setid (ID entier) {
this.id = identifiant;
}
public entier getID () {
Renvoyez ceci.id;
}
// les méthodes de setter et de getter de l'attribut de titre
Settitle de void public (titre de la chaîne) {
this.title = title;
}
public String getTitle () {
Renvoyez ce.title;
}
// Méthodes de setter et de getter d'attribut de nom de fichier
public void setFileName (String filename) {
this.filename = nom de fichier;
}
public String getFileName () {
Renvoyez ceci.FileName;
}
// Méthodes d'attribut d'utilisateur setter et getter
public void SetUser (utilisateur utilisateur) {
this.user = utilisateur;
}
utilisateur public getuser () {
Renvoyez ce.User;
}
}
import java.util.set;
import java.util.hashset;
/**
* Classe d'entité utilisateur
*
* @auteur Hongten
*
*/
classe publique User {
// Attribut d'identification
ID entier privé;
// le nom d'utilisateur de l'utilisateur
nom de chaîne privé ;
// mot de passe de cet utilisateur
Pass de chaîne privée;
// Utiliser l'ensemble pour enregistrer les photos associées à cet utilisateur
set privé <Photo> Photos = new HashSet <Photo> ();
// Constructeur sans paramètres
Utilisateur public () {
}
// Constructeur pour initialiser toutes les propriétés
Utilisateur public (ID entier, nom de chaîne, pass de chaîne) {
this.id = identifiant;
this.name = nom ;
this.pass = pass;
}
// Méthodes de setter et d'attribut ID
public void setid (ID entier) {
this.id = identifiant;
}
public entier getID () {
Renvoyez ceci.id;
}
// Méthodes de setter et de Getter d'attribut de nom
public void setName (nom de la chaîne) {
this.name = nom ;
}
chaîne publique getName() {
renvoie this.name ;
}
// Méthodes d'attribut de pass
public void setPass (String Pass) {
this.pass = pass;
}
public String getPass () {
Renvoyez ceci.Pass;
}
// attribut méthodes de setter et de getter
public void setphotos (set <Poth> Photos) {
this.photos = photos;
}
Set public <Poth> getphotos () {
Renvoyez ce.photos;
}
}
/**
* Exception personnalisée
*
* @auteur Hongten
*
*/
classe publique AlbumException étend RuntimeException {
Final statique privé long SerialVersionUID = 8050756054850450421L;
// Fournit un constructeur sans paramètre
public albumException () {
}
// Fournit un constructeur avec des paramètres de chaîne
public AlbumException (String msg) {
super (msg);
}
}
importer java.sql.SQLException ;
importer java.util.List ;
import org.hibernate.hibernateException;
import org.hibernate.query;
importer org.hibernate.Session ;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.Support.hibernatedaosupport;
/**
*
* @auteur Hongten
*
*/
@SuppressWarnings ("non contrôlé")
classe publique HongtenhiberNatedaosupport étend HiberNatedaosupport {
/**
* Utilisez des instructions HQL pour la pagination des opérations de requête
*
* @param HQL
* Déclaration HQL à interroger
* Offset @param
* Index du premier enregistrement
* @param pagesize
* Le nombre d'enregistrements à afficher sur chaque page
* @return tous les enregistrements de la page actuelle
*/
Public List FindByPage (Final String HQL, Final Int Offset,
Final int pagesize) {
List list = getHiberNateTemplate (). EeccuteFind (new HiberNateCallback () {
objet public doinhibernate (session de session)
lance HiberNateException, sqlexception {
Liste Result = Session.CreateeQuery (HQL) .SetFirStResult (Offset)
.setMaxResults (PageSize) .List ();
renvoyer le résultat ;
}
});
liste de retour ;
}
/**
* Utilisez des instructions HQL pour la pagination des opérations de requête
*
* @param HQL
* Déclaration HQL à interroger
* Valeur @param
* Si HQL a un paramètre qui doit être transmis, la valeur est le paramètre transmis.
* Offset @param
* Index du premier enregistrement
* @param pagesize
* Le nombre d'enregistrements à afficher sur chaque page
* @return tous les enregistrements de la page actuelle
*/
Liste publique FindByPage (Final String HQL, valeur d'objet final,
Final int offset, final int pagesize) {
List list = getHiberNateTemplate (). EeccuteFind (new HiberNateCallback () {
objet public doinhibernate (session de session)
lance HiberNateException, sqlexception {
Liste Result = Session.CreateeQuery (HQL) .SetParameter (0, valeur)
.setFirStResult (offset) .setMaxResults (pagesize) .list ();
renvoyer le résultat ;
}
});
liste de retour ;
}
/**
* Utilisez des instructions HQL pour la pagination des opérations de requête
*
* @param HQL
* Déclaration HQL à interroger
* valeurs @param
* Si HQL a plusieurs paramètres qui doivent être transmis, les valeurs sont le tableau de paramètres transmis.
* Offset @param
* Index du premier enregistrement
* @param pagesize
* Le nombre d'enregistrements à afficher sur chaque page
* @return tous les enregistrements de la page actuelle
*/
Liste publique FindByPage (Final String HQL, Final Object [] Valeurs,
Final int offset, final int pagesize) {
List list = getHiberNateTemplate (). EeccuteFind (new HiberNateCallback () {
objet public doinhibernate (session de session)
lance HiberNateException, sqlexception {
Query Query = Session.CreateeQuery (HQL);
pour (int i = 0; i <valeurs.length; i ++) {
query.setParameter (i, valeurs [i]);
}
List result = query.setFirStResult (offset) .setMaxResults (
pagesize) .list ();
renvoyer le résultat ;
}
});
liste de retour ;
}
}
importer java.util.List ;
import com.b510.album.dao.photodao;
Import com.b510.album.enhance.hongtenhibernatedaosupport;
import com.b510.album.model.photo;
import com.b510.album.model.user;
/**
*
* @auteur Hongten
*
*/
@SuppressWarnings ("non contrôlé")
La classe publique Photodaohibernate étend les outils HongtenhiberNatedaosupport
Photodao {
/**
* Chargez l'instance photo en fonction de l'attribut d'identification
*
* ID @param
* La valeur d'attribut d'identité de l'instance photo qui doit être chargée
* @return l'instance photo correspondant à l'attribut d'identification spécifié
*/
Photo publique Get (ID entier) {
return (photo) getHiberNateTemplate (). get (photo.class, id);
}
/**
* Persister l'instance photo spécifiée
*
* @param photo
* Instance de photo qui doit être persistée
* @return la valeur d'attribut d'identité après que l'instance photo a persisté
*/
entier public sauve (photo photo) {
return (entier) getHiberNateTemplate (). Save (photo);
}
/**
* Modifier l'instance photo spécifiée
*
* @param photo
* Instance photo qui doit être modifiée
*/
Mise à jour du public (photo photo) {
GETHIBERNATETÉTÉ (). Update (Photo);
}
/**
* Supprimer l'instance photo spécifiée
*
* @param photo
* Instance photo qui doit être supprimée
*/
public void supprimer (photo photo) {
GETHIBERNATETÉTÉ (). Delete (photo);
}
/**
* Supprimer l'instance photo basée sur l'attribut d'identification
*
* ID @param
* La valeur d'attribut d'identification de l'instance photo qui doit être supprimée
*/
public void delete (ID entier) {
GETHIBERNATETÉTÉ (). Delete (get (id));
}
/**
* Interroger toutes les instances photo
*
* @return toutes les instances photo dans la base de données
*/
Liste publique <Photo> findall () {
return (list <moth>) getHiberNateTemplate (). find ("From Photo");
}
/**
* Requête des photos appartenant aux utilisateurs spécifiés et effectuez un contrôle de pagination
*
* utilisateur @param
* Interroger l'utilisateur dont appartient la photo
* @param pageno
* Page spécifiée à interroger
* @return la photo interrogée
*/
Public List <Photo> findByUser (utilisateur utilisateur, int pageno) {
int offset = (pageno - 1) * page_size;
// Renvoie les résultats de la requête de pagination
return (list <photo>) findBypage ("From Photo B Where B.User =?", Utilisateur,
offset, page_size);
}
}
importer java.util.List ;
import com.b510.album.dao.userdao;
Import com.b510.album.enhance.hongtenhibernatedaosupport;
import com.b510.album.model.user;
/**
*
* @auteur Hongten
*
*/
@SuppressWarnings ("non contrôlé")
Classe publique Userdaohibernate étend Hongtenhibernatedaosupport Ioutils
UserDao {
/**
* Chargez l'instance utilisateur basée sur l'attribut d'identification
*
* ID @param
* La valeur d'attribut d'identité de l'instance utilisateur qui doit être chargée
* Instance utilisateur @return correspondant à l'attribut d'identification spécifié
*/
utilisateur public get (ID entier) {
return (utilisateur) getHiberNateTemplate (). get (user.class, id);
}
/**
* Persister l'instance utilisateur spécifiée
*
* utilisateur @param
* Instance utilisateur qui doit être persistée
* @return la valeur d'attribut d'identité après que l'instance utilisateur a persisté
*/
public Integer Save (utilisateur utilisateur) {
return (entier) getHiberNateTemplate (). Save (utilisateur);
}
/**
* Modifier l'instance utilisateur spécifiée
*
* utilisateur @param
* L'instance utilisateur qui doit être modifiée
*/
Public void Update (utilisateur utilisateur) {
GETHIBERNATETÉTÉ (). Update (utilisateur);
}
/**
* Supprimer l'instance utilisateur spécifiée
*
* utilisateur @param
* Instance utilisateur qui doit être supprimée
*/
public void delete (utilisateur utilisateur) {
GETHIBERNATETÉTÉ (). Delete (utilisateur);
}
/**
* Supprimer l'instance utilisateur en fonction de l'attribut d'identification
*
* ID @param
* La valeur d'attribut d'identification de l'instance utilisateur qui doit être supprimée
*/
public void delete (ID entier) {
GETHIBERNATETÉTÉ (). Delete (get (id));
}
/**
* Interroger toutes les instances utilisateur
*
* @return toutes les instances utilisateur dans la base de données
*/
Liste publique <User> findall () {
return (list <ser utilisateur>) getHiberNateTemplate (). Rechercher ("From User");
}
/**
* Trouvez des utilisateurs en fonction du nom d'utilisateur
*
* Nom @param
* Le nom d'utilisateur de l'utilisateur à trouver
* @return l'utilisateur trouvé
*/
public utilisateur findByName (nom de chaîne) {
List <ser utilisateur> users = (list <ser utilis
"de l'utilisateur u où nous
if (utilisateurs! = null && utilisateurs.size () == 1) {
return users.get (0);
}
renvoie null ;
}
}
importer java.util.List ;
import com.b510.album.model.photo;
import com.b510.album.model.user;
/**
* Interface Photodao
*
* @auteur Hongten
*
*/
Interface publique Photodao {
// utilise des constantes pour contrôler le nombre de photos affichées sur chaque page
Final int page_size = 8;
/**
* Chargez l'instance photo en fonction de l'attribut d'identification
*
* ID @param
* La valeur d'attribut d'identité de l'instance photo qui doit être chargée
* @return l'instance photo correspondant à l'attribut d'identification spécifié
*/
Photo Get (ID entier);
/**
* Persister l'instance photo spécifiée
*
* @param photo
* Instance de photo qui doit être persistée
* @return la valeur d'attribut d'identité après que l'instance photo a persisté
*/
Entier entier (photo photo);
/**
* Modifier l'instance photo spécifiée
*
* @param photo
* Instance photo qui doit être modifiée
*/
Mise à jour vide (photo photo);
/**
* Supprimer l'instance photo spécifiée
*
* @param photo
* Instance photo qui doit être supprimée
*/
vide supprimer (photo photo);
/**
* Supprimer l'instance photo basée sur l'attribut d'identification
*
* ID @param
* La valeur d'attribut d'identification de l'instance photo qui doit être supprimée
*/
void Delete (INTER ID);
/**
* Interroger toutes les instances photo
*
* @return toutes les instances photo dans la base de données
*/
List <moth> findall ();
/**
* Requête des photos appartenant aux utilisateurs spécifiés et effectuez un contrôle de pagination
*
* utilisateur @param
* Interroger l'utilisateur dont appartient la photo
* @param pageno
* Page spécifiée à interroger
* @return la photo interrogée
*/
List <photo> findByUser (utilisateur utilisateur, int pageno);
}
importer java.util.List ;
import com.b510.album.model.user;
/**
* Interface Userdao
*
* @auteur Hongten
*
*/
Interface publique UserDao {
/**
* Chargez l'instance utilisateur basée sur l'attribut d'identification
*
* ID @param
* La valeur d'attribut d'identité de l'instance utilisateur qui doit être chargée
* Instance utilisateur @return correspondant à l'attribut d'identification spécifié
*/
User Get (ID INTEGER);
/**
* Persister l'instance utilisateur spécifiée
*
* utilisateur @param
* Instance utilisateur qui doit être persistée
* @return la valeur d'attribut d'identité après que l'instance utilisateur a persisté
*/
Integer Save (utilisateur utilisateur);
/**
* Modifier l'instance utilisateur spécifiée
*
* utilisateur @param
* L'instance utilisateur qui doit être modifiée
*/
void Update (utilisateur utilisateur);
/**
* Supprimer l'instance utilisateur spécifiée
*
* utilisateur @param
* Instance utilisateur qui doit être supprimée
*/
void delete (utilisateur utilisateur);
/**
* Supprimer l'instance utilisateur en fonction de l'attribut d'identification
*
* ID @param
* La valeur d'attribut d'identification de l'instance utilisateur qui doit être supprimée
*/
void Delete (INTER ID);
/**
* Interroger toutes les instances utilisateur
*
* @return toutes les instances utilisateur dans la base de données
*/
List <ser user> findall ();
/**
* Trouvez des utilisateurs en fonction du nom d'utilisateur
*
* Nom @param
* Le nom d'utilisateur de l'utilisateur à trouver
* @return l'utilisateur trouvé
*/
Utilisateur findByName (nom de chaîne);
}
Étant donné que le projet semble relativement grand après avoir ajouté le package JAR, le package JAR est annulé ici.
Ce qui suit est la pièce jointe : ajax_jquery_album_jb51net.rar (téléchargement du code source)