struts 2+Ajax+jqueryを使用してユーザー名が登録されていることを確認

4609 ワード

推荐阅读:JQuery+Ajax+Struts 2+Hibernateフレームワーク统合完全な登录登录を実现
ユーザモジュールにおけるユーザ登録要件については、通常、ユーザ名が登録されているか否かの検証が行われるが、今日はちょうどこの要件が書かれており、詳細なコードと発生した問題を貼り付ける.struts 2+ajaxを使用する場合、通常はjsonタイプのデータを返しますが、上記の例のように、後続の判断に役立つ1と0を返したいだけです.jsonタイプを返す必要はありません.text文字列を返すだけでいいです.
regist.jsp(ここでは部分のみ):</strong></span></p>
<div class="jb51code">
<pre class="brush:js;">
<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>");13;
}
//利用不可
else if (data == "0") {
$this.after("<font color='red'>ユーザー名が登録されています!</font>");13;
}
//サーバエラー
else {
alert(「サーバーエラー!」13;
}
});
} else {
$(this).val("");
$this.focus();
}
});
})
ここではJqueryを使いました.post(url,args,function(data){..})関数はajax要求を指定urlに提出し、パラメータargsを携帯し、最後にコールバック関数で要求を処理して結果dataを返す.
UserAction:

public class UserAction extends ActionSupport implements ModelDriven{
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;
}
} 


注意:ここではModelDrivenでフォームデータを取得し、ajaxを使用するときにuserNiName(ニックネーム)を直接伝えたので、UserActionにプライベート文字列変数userNiNameを追加し、setメソッドを設定しました.結局値が伝わらずnullが伝わってきたので、プライベート変数を削除してuser.を直接使いました.getUserNiName()を直接取得すると入手できます.切记
UserService(省略).
Userクラス(省略).
UserDao:

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 list = (List) 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:







/WEB-INF/jspForUser/login.jsp

text/html
inputStream



 

注意resultラベルではtype=「stream」です.
最后に、私はデバッグの时に出力文を使うことに惯れていますが、出力文を追加するたびにTomcatを再开する必要があります.そこでインターネットの方式を参考にして、Tmocatのインストールディレクトリの下でconf->server.xmlでラベルの下に以下のコードを追加すると、クラス(細かい修正)を変更できるようになり、サーバを再起動する必要はありません.


 

特に注意が必要なのは、Tomcatでこの項目をアンインストールした後、必ず戻ってこのラベルを削除することです.
struts 2+Ajax+jqueryを使用してユーザー名が登録されているかどうかを検証します.