>웹 프론트엔드 >JS 튜토리얼 >사용자 이름이 등록되었는지 확인하려면 struts2+Ajax+jquery를 사용하세요_jquery

사용자 이름이 등록되었는지 확인하려면 struts2+Ajax+jquery를 사용하세요_jquery

WBOY
WBOY원래의
2016-05-16 15:10:021088검색

권장 도서: JQuery+Ajax+Struts2+Hibernate 프레임워크 통합을 통해 완전한 로그인 등록 달성

사용자 모듈의 사용자 등록 요구 사항과 관련하여 일반적으로 사용자 이름이 등록되었는지 확인해야 합니다. 오늘은 이 요구 사항을 작성하고 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> 
여기에서는 Jquery.post(url,args,function(data){..}) 함수를 사용하여 지정된 URL에 Ajax 요청을 제출하고 매개변수 args를 전달하며 마지막으로 콜백 함수를 사용하여 결과 데이터를 요청하고 반환합니다.


사용자 작업:

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;
}
} 

참고: 여기서는 ModelDriven 메서드를 사용하여 양식 데이터를 가져오고, ajax를 사용할 때 userNiName(닉네임)이 직접 전달되므로 UserAction에 비공개 문자열 변수 userNiName을 추가하고 set 메서드를 설정했습니다. 값을 전달할 수 없고 null이 전달되었기 때문에 private 변수를 삭제한 다음 user.getUserNiName()을 사용하여 직접 가져왔습니다.


UserService(생략).


사용자 클래스(생략).


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<User> list = (List<User>) this.getHibernateTemplate().find("select u from User u where u.userNiName=&#63;", userNiName);
if(list!=null&&list.size()>0){
System.out.println("list:"+list.get(0));
return list.get(0);
}
return null;
}
}

struts.xml:

<&#63;xml version="1.0" encoding="UTF-8" &#63;>
<!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"을 확인하세요.


마지막으로 디버깅할 때 출력문을 사용하는 게 익숙했는데, 출력문을 추가할 때마다 톰캣을 재시작해야 하는데 그게 너무 귀찮아서 온라인 방법을 참고해서 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에서 프로젝트를 제거한 후 다시 돌아와서 이 라벨을 삭제해야 한다는 점에 유의하는 것이 중요합니다.

편집자가 사용자 이름이 등록되었는지 확인하기 위해 struts2+Ajax+jquery를 사용한 지식을 소개하겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.