Maison >interface Web >js tutoriel >Utilisez struts2+Ajax+jquery pour vérifier si le nom d'utilisateur a été enregistré_jquery
Lecture recommandée : Intégration du framework JQuery+Ajax+Struts2+Hibernate pour obtenir une inscription de connexion complète
Concernant les exigences d'enregistrement des utilisateurs dans le module utilisateur, il est généralement nécessaire de vérifier si le nom d'utilisateur a été enregistré. Je viens d'écrire cette exigence aujourd'hui et de publier le code détaillé et les problèmes rencontrés lors de l'utilisation de struts2+ajax . renverra des données de type json, mais comme dans l'exemple ci-dessus, nous espérons uniquement renvoyer un 1 et un 0 pour faciliter le jugement ultérieur. Il n'est pas nécessaire de renvoyer le type json, il suffit de renvoyer une chaîne de texte
.
regist.jsp (seule la partie 3f1c4e4b6b16bbbd69b2ee476dc4f83a est fournie ici) :
<script type="text/javascript"> $(function() { $("#userNiName").blur(function() { var val = $(this).val(); val = $.trim(val); var $this = $(this); if (val != "") { //把当前节点后面的所有 font 兄弟节点删除 $this.nextAll("font").remove(); var url = "user_checkName"; var args = { "userNiName" : val, "time" : new Date() }; $.post(url, args, function(data) { //表示可用 if (data == "1") { $this.after("<font color='green'>用户名可用!</font>"); } //不可用 else if (data == "0") { $this.after("<font color='red'>用户名已被注册!</font>"); } //服务器错误 else { alert("服务器错误!"); } }); } else { $(this).val(""); $this.focus(); } }); }) </script>
Ici, j'utilise la fonction Jquery.post(url,args,function(data){..}) pour soumettre une requête ajax à l'URL spécifiée, et porter les paramètres args, et enfin utiliser une fonction de rappel pour traiter le demander et renvoyer les données de résultat.
Actionutilisateur :
public class UserAction extends ActionSupport implements ModelDriven<User>{ private User user=new User(); private UserService userService; private InputStream inputStream; public InputStream getInputStream() { return inputStream; } //检验用户昵称是否存在 public String checkName() throws UnsupportedEncodingException{ System.out.println("进入ajax检验"); String userNiName=user.getUserNiName(); if(userService.findUserByName(userNiName)==null){ inputStream=new ByteArrayInputStream("1".getBytes("UTF-8")); }else{ inputStream=new ByteArrayInputStream("0".getBytes("UTF-8")); } return "ajax_succ"; } @Override public User getModel() { return user; } public void setUserService(UserService userService) { this.userService = userService; } }
Remarque : ici, j'utilise la méthode ModelDriven pour obtenir les données du formulaire, et lors de l'utilisation d'ajax, un userNiName (surnom) est directement transmis, j'ai donc ajouté une variable de chaîne privée userNiName dans UserAction et défini la méthode set. la valeur n'a pas pu être transmise et ce qui a été transmis était une valeur nulle, j'ai donc supprimé la variable privée, puis j'ai utilisé user.getUserNiName() pour l'obtenir directement
.
UserService (omis).
Classe d'utilisateur (omise).
UtilisateurDao :
package com.wang.shop.user.dao; import java.util.List; import org.springframework.orm.hibernate4.support.HibernateDaoSupport; import com.wang.shop.user.entity.User; public class UserDao extends HibernateDaoSupport{ /** * 通过用户昵称查询User * @param userNiName * @return */ public User findUserByName(String userNiName){ List<User> list = (List<User>) this.getHibernateTemplate().find("select u from User u where u.userNiName=?", userNiName); if(list!=null&&list.size()>0){ System.out.println("list:"+list.get(0)); return list.get(0); } return null; } }
struts.xml :
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="shop" namespace="/" extends="struts-default"> <!-- UserAction --> <action name="user_*" class="userAction" method="{1}"> <result name="regist_succ">/WEB-INF/jspForUser/login.jsp</result> <result type="stream" name="ajax_succ"> <param name="contentType">text/html</param> <param name="inputStream">inputStream</param> </result> </action> </package> </struts>
Notez que dans la balise de résultat, tapez="stream".
Enfin, d'ailleurs, j'ai l'habitude d'utiliser des instructions de sortie lors du débogage, mais chaque fois que j'ajoute une instruction de sortie, je dois redémarrer Tomcat, ce qui est très ennuyeux. J'ai donc fait référence à la méthode en ligne et mis conf-. >server dans le répertoire d'installation de Tmocat En ajoutant le code suivant sous la balise f7e6dec31ab1a0471d06c55afaca8d77 dans le .xml, vous pouvez modifier la classe (modifications mineures) sans redémarrer le serveur :
<!--docBase就是你的项目工程所在的全路径,path就是写你的项目名,reloadable="true",可以自动重新加载修改过的class文件--> <Context debug="0" docBase="D:\Tomcat 7.0\webapps\SSH_shop01" path="/SSH_shop01" reloadable="true" />
Il est important de noter qu'après avoir désinstallé le projet dans Tomcat, vous devez revenir et supprimer cette étiquette
.L'éditeur vous fera découvrir l'utilisation de struts2+Ajax+jquery pour vérifier si le nom d'utilisateur a été enregistré. J'espère que cela vous sera utile !