ホームページ >ウェブフロントエンド >jsチュートリアル >struts2+Ajax+jquery を使用してユーザー名が登録されているかどうかを確認する_jquery
推奨読書: 完全なログイン登録を実現するための JQuery+Ajax+Struts2+Hibernate フレームワークの統合
user モジュールのユーザー登録要件に関しては、通常、ユーザー名が登録されているかどうかを確認する必要があります。今日、この要件を書き、 struts2+ajax を使用するときに発生する問題の詳細を投稿しました。は json 型のデータを返しますが、上記の例と同様に、後の判断を容易にするために 1 と 0 のみを返すようにします。json 型を返す必要はなく、テキスト文字列を返すだけです。
regist.jsp (ここでは 3f1c4e4b6b16bbbd69b2ee476dc4f83a 部分のみが提供されています):
<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>
ユーザーアクション:
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; } }
UserService(省略).
ユーザークラス(省略)。
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; } }
<?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>結果タグでは、type="stream" であることに注意してください。
最後に、ちなみに、私はデバッグ時に出力ステートメントを使用することに慣れていますが、出力ステートメントを追加するたびに Tomcat を再起動する必要があり、非常に面倒なので、オンラインの方法を参照して conf- を追加しました。 >server を Tmocat インストール ディレクトリに追加します。xml の f7e6dec31ab1a0471d06c55afaca8d77 タグの下に次のコードを追加すると、サーバーを再起動せずにクラスを変更できます。
<!--docBase就是你的项目工程所在的全路径,path就是写你的项目名,reloadable="true",可以自动重新加载修改过的class文件--> <Context debug="0" docBase="D:\Tomcat 7.0\webapps\SSH_shop01" path="/SSH_shop01" reloadable="true" />Tomcat でプロジェクトをアンインストールした後、戻ってこのラベルを削除する必要があることに注意してください。