권장 도서: 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>
사용자 작업:
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; } }
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=?", 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>
<!--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를 사용한 지식을 소개하겠습니다.