Jsp 我怎样才能注册
我尝试创建我的注册表单页面,并附带它的servlet。但当我尝试注册时,它不起作用。这里的问题是:当Jsp 我怎样才能注册,jsp,servlets,model-view-controller,jstl,Jsp,Servlets,Model View Controller,Jstl,我尝试创建我的注册表单页面,并附带它的servlet。但当我尝试注册时,它不起作用。这里的问题是:当铭文表单开始从该JSP恢复fiels时,它引用null值。请问如何使用此mvc注册?xD JSP 铭文 铭文 地址电子邮件* ${form.erreurs['email']} 通行证* ${form.erreurs['motdepasse']}确认通过日期*伪*${form.erreurs['nom']} 站点web${form.erreurs['siteweb']} 化身 ${form.err
铭文表单
开始从该JSP恢复fiels时,它引用null
值。请问如何使用此mvc注册?xD
JSP
铭文
铭文
地址电子邮件*
${form.erreurs['email']}
通行证*
${form.erreurs['motdepasse']}
确认通过日期*
伪*${form.erreurs['nom']}
站点web${form.erreurs['siteweb']}
化身
${form.erreurs['avatar']}
本地化${form.erreurs['localization']}
描述
${form.erreurs['description']}
${form.resultat}
Servlet
package com.forum.form;
导入java.io.BufferedInputStream;
导入java.io.BufferedOutputStream;
导入java.io.File;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入java.io.InputStream;
导入java.text.simpleDataFormat;
导入java.util.Collection;
导入java.util.Date;
导入java.util.HashMap;
导入java.util.Map;
导入javax.servlet.ServletException;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.Part;
导入org.hibernate.Query;
导入org.hibernate.Session;
导入org.hibernate.Transaction;
导入com.forum.beans.usilisateur;
导入com.forum.dao.usilizateUrdao;
导入com.forum.utils.HibernateUtils;
导入eu.medsea.mimeutil.mimeutil;
公开期末班报名表{
私有静态最终字符串CHAMP_EMAIL=“EMAIL”;
私有静态最终字符串CHAMP_PASS=“motdepasse”;
私有静态最终字符串CHAMP_CONF=“确认”;
私有静态最终字符串CHAMP_NOM=“NOM”;
私有静态最终字符串CHAMP_DESC=“description”;
私有静态最终字符串CHAMP_LOC=“本地化”;
私有静态最终字符串CHAMP_SW=“siteweb”;
公共静态最终字符串CHAMP_IMAGE=“avatar”;
公共静态最终int TAILLE_卫生棉条=10240;//10千欧
公共静态最终字符串CHEMIN=“E:\\Bibliothèque logicielle\\workspace\\projetForum\\WebContent\\images\\bd\\”;
私有字符串结果;
私有静态映射erreurs=newhashmap();
公共字符串getResultat(){
返回结果;
}
公共地图getErreurs(){
返回错误;
}
公共利用者调查机构(HttpServletRequest){
字符串email=getValeurChamp(请求,CHAMP_email);
字符串motDePasse=getValeurChamp(请求,CHAMP_PASS);
字符串确认=getValeurChamp(请求,CHAMP_CONF);
字符串nom=getValeurChamp(请求,CHAMP_nom);
字符串描述=getValeurChamp(请求,CHAMP_DESC);
字符串本地化=getValeurChamp(请求,CHAMP_LOC);
字符串siteweb=getValeurChamp(请求,CHAMP_SW);
字符串image=getValeurChamp(请求,CHAMP_image);
System.out.println(“*************************”+电子邮件+motDePasse+确认+名称
+描述+本地化+网站+图片);
试一试{
验证邮件(电子邮件);
}捕获(例外e){
setErreur(CHAMP_EMAIL,e.getMessage());
}
试一试{
验证通过(motDePasse,确认);
}捕获(例外e){
setErreur(CHAMP_PASS,e.getMessage());
}
试一试{
验证名称(nom);
}捕获(例外e){
setErreur(CHAMP_NOM,e.getMessage());
}
如果(图像!=null)
试一试{
image=validationImage(请求,化学试剂);
}捕获(例外e){
setErreur(CHAMP_IMAGE,e.getMessage());
}
提款机提款机提款机=新提款机(电子邮件、motDePasse、nom、,
本地化、网站、说明);
利用你的头像(图像);
if(erreurs.isEmpty()){
result tat=“铭文成功。”;
创建或更新(利用者,请求);
}否则{
result tat=“Échec de l'铭文。”;
}
归还提款人;
}
私有字符串验证映像(HttpServletRequest请求,字符串chemin)
抛出异常{
/*
*这是一个公式化的冠军形象
*使用la méthode getPart()。
*/
SimpleDataFormat格式化程序=新的SimpleDataFormat(“dd-MM-yyy-HH:MM:ss”);
日期aujourdhui=新日期();
字符串nomFichier=formatter.format(aujourdhui).replace(“,”)
.replace(“/”,“”)。replace(“:”,“”)。replace(“-”,“”);
InputStream contenuficheer=null;
试一试{
Part=request.getPart(CHAMP_图像);
nomFichier=nomFichier+getNomFichier(部分);
/*
*这是一个人人都会选择的方法
*donc d'un champ de type fichier(输入类型=“文件”)。
*/
if(nomFichier!=null&&!nomFichier.isEmpty()){
/*
*互联网浏览器的防虫软件
*费希尔当地机器的神秘性。。。
*
*例如:C:/docsier/sous-docsier/fichier.ext
*
*关于如何选择一个名字等问题
*这是菲舍尔的延伸,也是超高速铁路的延伸。
*/
nomFichier=nomFichier.substring(
nomFichier.lastIndexOf('/')+1.substring(
nomFichier.lastIndexOf('\\')+1);
/*费希尔伯爵杯*/
contenuficheer=part.getInputStream();
/*提取类型MIME du fichier depuis l'InputStream*/
MimeUtil.r
<%@ page pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Inscription</title>
<link type="text/css" rel="stylesheet"
href="<c:url value="/inc/form.css"/>" />
</head>
<body>
<c:import url="/inc/barre.jsp" />
<form method="post" action="<c:url value="/inscription" />" enctype="multipart/form-data">
<fieldset>
<legend>Inscription</legend>
<label for="email">Adresse email <span class="requis">*</span></label>
<input type="text" class="btn" id="email" name="email"
value="<c:out value="${utilisateur.email}"/>" size="20"
maxlength="60" /> <span class="erreur">${form.erreurs['email']}</span>
<br /> <label for="motdepasse">Mot de passe <span
class="requis">*</span></label> <input type="password" class="btn"
id="motdepasse" name="motdepasse" value="" size="20" maxlength="20" />
<span class="erreur">${form.erreurs['motdepasse']}</span> <br /> <label
for="confirmation">Confirmation du mot de passe <span
class="requis">*</span></label> <input type="password" class="btn"
id="confirmation" name="confirmation" value="" size="20"
maxlength="20" /> <br /> <label for="nom">Pseudo <span
class="requis">*</span></label> <input type="text" id="nom" class="btn"
name="nom" value="<c:out value="${utilisateur.nom}"/>" size="20"
maxlength="20" /> <span class="erreur">${form.erreurs['nom']}</span>
<br /> <label for="siteweb">Site-web </label> <input type="text"
class="btn" id="siteweb" name="siteweb" value="" size="20"
maxlength="20" /> <span class="erreur">${form.erreurs['siteweb']}</span>
<br /> <label for="avatar">Avatar </label> <input type="file"
id="avatar" name="avatar" value="<c:out value="${nomFichier}"/>" />
<span class="erreur">${form.erreurs['avatar']}</span><br /> <label
for="localisation">Localisation </label> <input type="text"
class="btn" id="localisation" name="localisation" value="" size="20"
maxlength="20" /> <span class="erreur">${form.erreurs['localisation']}</span><br />
<label for="description">Description </label>
<textarea id="description" name="description" rows="4" cols="50"></textarea>
<span class="erreur">${form.erreurs['description']}</span> <br /> <input
type="submit" value="Inscription" class="sansLabel" /> <input
type="reset" value="Remettre à zéro" /> <br />
<p class="${empty form.erreurs ? 'succes' : 'erreur'}">${form.resultat}</p>
</fieldset>
</form>
</body>
</html>
package com.forum.form;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.Part;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.forum.beans.Utilisateur;
import com.forum.dao.UtilisateurDAO;
import com.forum.utils.HibernateUtils;
import eu.medsea.mimeutil.MimeUtil;
public final class InscriptionForm {
private static final String CHAMP_EMAIL = "email";
private static final String CHAMP_PASS = "motdepasse";
private static final String CHAMP_CONF = "confirmation";
private static final String CHAMP_NOM = "nom";
private static final String CHAMP_DESC = "description";
private static final String CHAMP_LOC = "localisation";
private static final String CHAMP_SW = "siteweb";
public static final String CHAMP_IMAGE = "avatar";
public static final int TAILLE_TAMPON = 10240; // 10 ko
public static final String CHEMIN = "E:\\Bibliothèque logicielle\\workspace\\projetForum\\WebContent\\images\\bd\\";
private String resultat;
private static Map<String, String> erreurs = new HashMap<String, String>();
public String getResultat() {
return resultat;
}
public Map<String, String> getErreurs() {
return erreurs;
}
public Utilisateur inscrireUtilisateur(HttpServletRequest request) {
String email = getValeurChamp(request, CHAMP_EMAIL);
String motDePasse = getValeurChamp(request, CHAMP_PASS);
String confirmation = getValeurChamp(request, CHAMP_CONF);
String nom = getValeurChamp(request, CHAMP_NOM);
String description = getValeurChamp(request, CHAMP_DESC);
String localisation = getValeurChamp(request, CHAMP_LOC);
String siteweb = getValeurChamp(request, CHAMP_SW);
String image = getValeurChamp(request, CHAMP_IMAGE);
System.out.println("*********************"+email + motDePasse + confirmation + nom
+ description + localisation + siteweb + image);
try {
validationEmail(email);
} catch (Exception e) {
setErreur(CHAMP_EMAIL, e.getMessage());
}
try {
validationMotsDePasse(motDePasse, confirmation);
} catch (Exception e) {
setErreur(CHAMP_PASS, e.getMessage());
}
try {
validationNom(nom);
} catch (Exception e) {
setErreur(CHAMP_NOM, e.getMessage());
}
if (image != null)
try {
image = validationImage(request, CHEMIN);
} catch (Exception e) {
setErreur(CHAMP_IMAGE, e.getMessage());
}
Utilisateur utilisateur = new Utilisateur(email, motDePasse, nom,
localisation, siteweb, description);
utilisateur.setAvatar(image);
if (erreurs.isEmpty()) {
resultat = "Succès de l'inscription.";
createORupdate(utilisateur, request);
} else {
resultat = "Échec de l'inscription.";
}
return utilisateur;
}
private String validationImage(HttpServletRequest request, String chemin)
throws Exception {
/*
* Récupération du contenu du champ image du formulaire. Il faut ici
* utiliser la méthode getPart().
*/
SimpleDateFormat formater = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
Date aujourdhui = new Date();
String nomFichier = formater.format(aujourdhui).replace(" ", "")
.replace("/", "").replace(":", "").replace("-", "");
InputStream contenuFichier = null;
try {
Part part = request.getPart(CHAMP_IMAGE);
nomFichier = nomFichier + getNomFichier(part);
/*
* Si la méthode getNomFichier() a renvoyé quelque chose, il s'agit
* donc d'un champ de type fichier (input type="file").
*/
if (nomFichier != null && !nomFichier.isEmpty()) {
/*
* Antibug pour Internet Explorer, qui transmet pour une raison
* mystique le chemin du fichier local à la machine du client...
*
* Ex : C:/dossier/sous-dossier/fichier.ext
*
* On doit donc faire en sorte de ne sélectionner que le nom et
* l'extension du fichier, et de se débarrasser du superflu.
*/
nomFichier = nomFichier.substring(
nomFichier.lastIndexOf('/') + 1).substring(
nomFichier.lastIndexOf('\\') + 1);
/* Récupération du contenu du fichier */
contenuFichier = part.getInputStream();
/* Extraction du type MIME du fichier depuis l'InputStream */
MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.MagicMimeMimeDetector");
Collection<?> mimeTypes = MimeUtil.getMimeTypes(contenuFichier);
/*
* Si le fichier est bien une image, alors son en-tête MIME
* commence par la chaîne "image"
*/
if (mimeTypes.toString().startsWith("image")) {
/* Ecriture du fichier sur le disque */
ecrireFichier(contenuFichier, nomFichier, chemin);
} else {
throw new Exception(
"Le fichier envoyé doit être une image.");
}
}
} catch (IllegalStateException e) {
/*
* Exception retournée si la taille des données dépasse les limites
* définies dans la section <multipart-config> de la déclaration de
* notre servlet d'upload dans le fichier web.xml
*/
e.printStackTrace();
throw new Exception("Le fichier envoyé ne doit pas dépasser 1Mo.");
} catch (IOException e) {
/*
* Exception retournée si une erreur au niveau des répertoires de
* stockage survient (répertoire inexistant, droits d'accès
* insuffisants, etc.)
*/
e.printStackTrace();
throw new Exception("Erreur de configuration du serveur.");
} catch (ServletException e) {
/*
* Exception retournée si la requête n'est pas de type
* multipart/form-data.
*/
e.printStackTrace();
throw new Exception(
"Ce type de requête n'est pas supporté, merci d'utiliser le formulaire prévu pour envoyer votre fichier.");
}
return nomFichier;
}
private void setErreur(String champ, String message) {
erreurs.put(champ, message);
}
private static String getValeurChamp(HttpServletRequest request,
String nomChamp) {
String valeur = request.getParameter(nomChamp);
if (valeur == null || valeur.trim().length() == 0) {
return null;
} else {
return valeur;
}
}
/*
* Méthode utilitaire qui a pour unique but d'analyser l'en-tête
* "content-disposition", et de vérifier si le paramètre "filename" y est
* présent. Si oui, alors le champ traité est de type File et la méthode
* retourne son nom, sinon il s'agit d'un champ de formulaire classique et
* la méthode retourne null.
*/
private static String getNomFichier(Part part) {
/* Boucle sur chacun des paramètres de l'en-tête "content-disposition". */
for (String contentDisposition : part.getHeader("content-disposition")
.split(";")) {
/* Recherche de l'éventuelle présence du paramètre "filename". */
if (contentDisposition.trim().startsWith("filename")) {
/*
* Si "filename" est présent, alors renvoi de sa valeur,
* c'est-à-dire du nom de fichier sans guillemets.
*/
return contentDisposition
.substring(contentDisposition.indexOf('=') + 1).trim()
.replace("\"", "");
}
}
/* Et pour terminer, si rien n'a été trouvé... */
return null;
}
/*
* Méthode utilitaire qui a pour but d'écrire le fichier passé en paramètre
* sur le disque, dans le répertoire donné et avec le nom donné.
*/
private void ecrireFichier(InputStream contenuFichier, String nomFichier,
String chemin) throws Exception {
/* Prépare les flux. */
BufferedInputStream entree = null;
BufferedOutputStream sortie = null;
try {
/* Ouvre les flux. */
entree = new BufferedInputStream(contenuFichier, TAILLE_TAMPON);
sortie = new BufferedOutputStream(new FileOutputStream(new File(
chemin + nomFichier)), TAILLE_TAMPON);
/*
* Lit le fichier reçu et écrit son contenu dans un fichier sur le
* disque.
*/
byte[] tampon = new byte[TAILLE_TAMPON];
int longueur = 0;
while ((longueur = entree.read(tampon)) > 0) {
sortie.write(tampon, 0, longueur);
}
} catch (Exception e) {
throw new Exception(
"Erreur lors de l'écriture du fichier sur le disque.");
} finally {
try {
sortie.close();
} catch (IOException ignore) {
}
try {
entree.close();
} catch (IOException ignore) {
}
}
}
private static void createORupdate(Utilisateur u, HttpServletRequest request) {
Session s = HibernateUtils.getSession();
Transaction tx = s.beginTransaction();
Query q = s
.createQuery("from Utilisateur where Utilisateur_email = :email");
q.setString("email", u.getEmail());
Utilisateur userUpdt = (Utilisateur) q.uniqueResult();
if (userUpdt != null) {
userUpdt.setNom(u.getNom());
userUpdt.setEmail(u.getEmail());
userUpdt.setSiteweb(u.getSiteweb());
userUpdt.setLocalisation(u.getLocalisation());
userUpdt.setDescription(u.getDescription());
s.update(userUpdt);
} else {
SimpleDateFormat formater = new SimpleDateFormat(
"dd-MM-yyyy hh:mm:ss");
Date aujourdhui = new Date();
u.setDateInscrit(formater.format(aujourdhui));
s.persist(u);
}
tx.commit();
}
private void validationEmail(String email) throws Exception {
UtilisateurDAO<Utilisateur, String> ud = new UtilisateurDAO<Utilisateur, String>();
if (ud.findByID(email) != null)
throw new Exception("Adresse mail déjà utilisée.");
else if (email == null || ud.findByID(email) != null
|| !email.matches("([^.@]+)(\\.[^.@]+)*@([^.@]+\\.)+([^.@]+)")) {
throw new Exception("Merci de saisir une adresse mail valide.");
}
}
private void validationMotsDePasse(String motDePasse, String confirmation)
throws Exception {
if (motDePasse != null && confirmation != null) {
if (!motDePasse.equals(confirmation)) {
throw new Exception(
"Les mots de passe entrés sont différents, merci de les saisir à nouveau.");
} else if (motDePasse.length() < 6) {
throw new Exception(
"Les mots de passe doivent contenir au moins 6 caractères.");
}
} else {
throw new Exception(
"Merci de saisir et confirmer votre mot de passe.");
}
}
private static void validationNom(String nom) throws Exception {
UtilisateurDAO<Utilisateur, String> ud = new UtilisateurDAO<Utilisateur, String>();
if (ud.findByNom(nom) != null)
throw new Exception("Nom d'utilisateur déjà utilisée.");
else if (nom == null || nom.length() < 3) {
throw new Exception(
"Le nom d'utilisateur doit contenir au moins 3 caractères.");
}
}
}
package com.forum.servlets;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.forum.beans.Connecte;
import com.forum.beans.Nombres;
import com.forum.beans.Utilisateur;
import com.forum.dao.ConnecteDAO;
import com.forum.dao.NombresDAO;
import com.forum.dao.UtilisateurDAO;
import com.forum.form.InscriptionForm;
public class Inscription extends HttpServlet {
public static final String ATT_USER = "utilisateur";
public static final String ATT_FORM = "form";
public static final String VUE = "/WEB-INF/inscription.jsp";
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
NombresDAO<Nombres, Integer> nd = new NombresDAO<Nombres, Integer>();
SimpleDateFormat formater = new SimpleDateFormat("dd-MM-yyyy");
Date aujourdhui = new Date();
Nombres n = nd.findByDay(formater.format(aujourdhui).replace("-", ""));
if (n == null) {
n = new Nombres(1);
nd.create(n);
} else {
n.setNbvisiteurs(n.getNbvisiteurs() + 1);
nd.update(n);
}
this.getServletContext().getRequestDispatcher(VUE)
.forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
InscriptionForm form = new InscriptionForm();
Utilisateur utilisateur = form.inscrireUtilisateur(request);
Connecte c = new Connecte(utilisateur.getNom());
ConnecteDAO<Connecte, String> cd = new ConnecteDAO<Connecte, String>();
if (cd.findByID(utilisateur.getNom()) != null)
cd.update(c);
else
cd.create(c);
cd.findAll5();
request.setAttribute(ATT_FORM, form);
if (!form.getErreurs().isEmpty()) {
request.setAttribute(ATT_USER, utilisateur);
this.getServletContext().getRequestDispatcher(VUE)
.forward(request, response);
} else {
UtilisateurDAO<Utilisateur, String> ud = new UtilisateurDAO<Utilisateur, String>();
ud.create(utilisateur);
session.setAttribute(ATT_USER, utilisateur);
response.sendRedirect("/projetForum/listforums");
}
}
}