最近學習了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()        {              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>
因為是使用的是struts2架構所以struts2裡面加上如下代碼:因為資料是採用接送傳輸的所以要寫成extends="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;//前台傳來的資料usernamepublic 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();}}}
Hibernate的cfg和hbm代碼就不用貼出來了!