Jquery、ajaxとstruts 2+Hybernateクエリデータベースはユーザー名が存在するかどうかを確認します.


<div class=「itey-blog-content-contain」style=「font-size:14 px」>
最近ajaxの非同期呼出しとリフレッシュ技術を勉強しました.実践しました.他の人の方法を参考にして、自分の考えに参加したら、次のようなものがあります.
まずフロントのjspページです.
jqueryのpost方法についてはこれを見に行ってもいいです.詳しく書きました.http://www.itivy.com/jquery/archive/2011/7/6/jquery-get-post-getjson-ajax.html
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'register.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	
	<script type="text/javascript" src="jquery-1.9.1.js"></script>//  Jquery 
	
	 <script type="text/javascript">  
	 
    	jQuery(function()
    	{  
        	$("#username").blur(function()//              blur   
        {  
            var username= $.trim($("#username").val());    
           $.post("checkusername.action",{username:username},function(date,state)
        	{
        	   if(date.result=="ok")
        	   {
        	   		$("#span1").html("<font color="red">       </font>");
        	   		document.getElementById("submit").removeAttribute("disabled");
        	   		
        	   }else
        	   {
        		   $("#span1").html("<font color="red">        </font>");
        		   document.getElementById("submit").disabled = "true";
        	    }
        		   
        	   //alert(date.result);     ,    
        	
        	return false;},'json');  
        });
    });   
    </script>  
	
  </head>
  
  <body>
   	<form action="savePerson.action" method="post" >
   	 
   	 username:<input type="text" name="username" size="20" id="username">
   	 <span id="span1"></span>
   	   <br>
   	 
   	 password:<input type="password" name="password" size="20"><br>
   	 age: <input type="text" name="age" size="20"><br>
   	 
   	 <input type="submit" value="  " id="submit"  disabled="disabled">
   	 
   	
   	 
   	 
   	 
   
   </form>
   
  </body>
</html>
 struts 2のフレームを使っていますので、struts 2には下記のコードが付けられています.データは送迎で送りますので、extens="json-default"と書きます.
<package name="strutsjson" extends="json-default">  
        <action name="checkusername"
         class="com.liumin.action.CheckUsername"  method="CheckPerson">  
             <result type="json"></result>  
        </action>  
</package>
 actionのコードは以下の通りです.
package com.liumin.action;

import java.util.List;

import com.liumin.model.Person;
import com.liumin.service.impl.CheckService;
import com.opensymphony.xwork2.ActionSupport;

public class CheckUsername extends ActionSupport
{
	private String username;//       username

	public String getUsername()
	{
		return username;
	}
	public void setUsername(String username)
	{
		this.username = username;
	}
	private String result; 
	
	public String getResult()
	{
		return result;
	}
	public void setResult(String result)
	{
		this.result = result;
	}

	public String CheckPerson() throws Exception
	{
		CheckService checkService = new CheckService();
		
		String str="select * from person where username='"+username+"'" ;//  sql  
	    List<Person> list=(List<Person>)checkService.getUser(str);//    

	    if(list.isEmpty())//      ,  list    ?
		{
	    	     this.result = "ok";	 
		}else
		{
	             this.result = "no";
		}
        return SUCCESS;
	}
}
 serviceとdao層の私が書いたのは、
package com.liumin.service.impl;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.liumin.model.Person;
import com.liumin.util.HibernateUtil;

public class CheckService
{
	@SuppressWarnings("unchecked")
	public List<Person> getUser(String str)
	{
		Session session = HibernateUtil.openSession();
		Transaction tx = session.beginTransaction();
		List<Person> list = null;
		try
		{
			list = session.createSQLQuery(str).addEntity(Person.class).list();//    
			tx.commit();
		}
		catch (Exception e)
		{
			if (null != tx)
			{
				tx.rollback();
			}
		}
		finally
		{
			HibernateUtil.close(session);
		}
		return list;
	}
}
 utilの中のデータは以下の通りです.
package com.liumin.util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil
{
	private static SessionFactory sessionFactory;

	static
	{
		try
		{
			sessionFactory = new Configuration().configure().buildSessionFactory();
		}
		catch (Exception ex)
		{
			ex.printStackTrace();
		}
	}
	
	public static Session openSession()
	{
		Session session = sessionFactory.openSession();
		
		return session;
	}
	
	public static void close(Session session)
	{
		if(null != session)
		{
			session.close();
		}
	}
}
 Hbernateのcfgとhbmコードは貼り出さなくてもいいです.