使用hibernate3+struts2+ajax+Jquery实现无刷新登录和退出

来源:互联网 发布:vb进度条控件在哪 编辑:程序博客网 时间:2024/06/05 17:53

             ---------------使用Ajax实现登录-------

             ---------------使用Ajax实现登录-------

      目录在最后

1:导入Json相关包                         2jsp实现登录框

3js方法使用Jquery+Json实现Ajax提交数据

4创建action ,service,编写相应登录方法;      5配置struts.xml

6验证登录效果   7实现退出       8验证退出效果;

 

 

Jsp页面:包含jquey+ajax

 

<%@ page contentType="text/html; charset=UTF-8"%>

<!-- 使用Struts2标签 -->

<%@ taglib prefix="s" uri="/struts-tags" %>

<!-- 保证路径的正确性 -->

<%

String path = request.getContextPath();

%>

<!-- 引用Jquery,版本1.8.2 -->

<script type="text/javascript" src="<%=path%>/js/jquery-1.8.2.js"></script>

<script type="text/javascript">

//登录

function doLogin(type) {//type可写可不写(--最好写)

 var name =  $('#loginName').attr('value');//获得输入用户用   语法$(#id)attr(name|properties|key,value|fn);注意类型

var pw = $('#loginPassword').attr('value');//获得输入密码

var url = 'login.action?user.username='+name+'&user.password='+pw; //传值多个用&分隔

if (name != null && name!='' && pw != null && pw!='') {

$.ajax({

url: url,

type:"post",

dataType: "json",

async: false,

beforeSend: function(data) {

$("#loginButton").attr("disabled"true);//发送前隐藏点击登录

},

success: function(data) {

if(data.user!=null){//当信息不为空时将信息返回给页面

 $("#msg").html(" <br>");  

var html = "欢迎   "+data.user.username+"   <label class='ui-green'><input type='button' name='search' value='退   出' onclick='document.location=\"logout.action\"'/></label>";

$("#topLoginDiv").html(html);

}else{

$("#msg").html(data.msg);

$("#msg").css("color","red");//设置错误信息颜色(红色)

}

$("#loginButton").attr("disabled"false);//隐藏取消(点击登录有效)

}

});

}else{

alert("请输入用户名或密码!");

}

</script>

<div id="header" class="wrap">

<div id="logo"><img src="<%=path%>/img/logo.gif" /></div>

<div >

<div id="msg" align="center"> <br></div>

</div>

 

<div align="right">

<div id="topLoginDiv" style="displayinline">

用户名: <s:textfield name="user.name" id="loginName" required="true" size="15"/>

   码: <s:password name="user.password"  id="loginPassword" required="true"size="15"/>

<label class="ui-green">

<input type="button" name="loginButton" id="loginButton"  value="登录" onclick="doLogin();" />

</label>

<label class="ui-green">

<input type='button' value='注册' />

</label>

</div>

<div style="displayinline">

<label class="ui-green">

<input type="button" name="search" value="发布信息" />

</label>

</div>

</div>

</div>

 

 

 

Web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

  <display-name>test</display-name>

  <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

  <!-- struts2 过滤所有Actionq请求-->

  <filter>

    <filter-name>struts2</filter-name>

    <filter-class>

   org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter    <!-- 2.0以上版本 -->

   </filter-class>

  </filter>

  <filter-mapping>

    <filter-name>struts2</filter-name>

    <url-pattern>/*</url-pattern>

  </filter-mapping>

</web-app>

 

 

 

 

 

 

 

 

 

 

 

 

 

-----Struts.xml----2.3可以改为2.1

<?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>

<constant name="struts.devMode" value="true" />

<constant name="struts.ui.theme" value="simple"/>

    <package name="house-json" extends="json-default">

     <action name="login" class="com.pb.web.action.UserAction" method="login">

     <result type="json"></result>

     <result name="login" type="json"></result>

     </action>

    </package>

    

    <package name="house-manage" extends="json-default">

     <action name="logout" class="com.pb.web.action.UserAction" method="logout">

     <result>/pages/manage.jsp</result>

     </action>

    </package>

</struts>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

------package com.pb.util;

 

public abstract  class Constant {

public static int PAGE_START = 0;// 默认起始页

public static int PAGE_COUNT = 3;// 默认每页记录数

public static String LOGIN_USER = "LOGIN_USER";// 登录用户

public static String UPLOAD_PATH = "/upload";// 默认上传文件目录

}

 

 

package com.pb.web.action;

 

-----------UserAction------------

//不要忘记set/get方法

package com.pb.web.action;

 

import java.util.Map;

 

import com.pb.base.action.BaseAction;

import com.pb.entity.HouseUser;

import com.pb.service.IUserService;

import com.pb.service.impl.UserServiceImpl;

import com.pb.util.Constant;

 

public class UserAction extends BaseAction {

 

private static final long serialVersionUID = 1L;

private IUserService service = new UserServiceImpl();

private HouseUser user;

private String msg;

/**

 * 登录

 * @return

 */

public String login(){

if(user!=null){

Map<String,Object> map = service.login(user);

user =(HouseUser)map.get("user");

if(user!=null){

session.put(Constant.LOGIN_USER,user);

msg = "true";

return SUCCESS;

}else{

msg = (String)map.get("msg");

}

}

return LOGIN;

}

/**

 * 退出

      清除sessionuser

      返回原页面

 * @return

 */

public String logout(){

session.remove(Constant.LOGIN_USER);

return SUCCESS;

}

 

public HouseUser getUser() {

return user;

}

 

public void setUser(HouseUser user) {

this.user = user;

}

 

public String getMsg() {

return msg;

}

 

public void setMsg(String msg) {

this.msg = msg;

}

}

 

 

--------------serviceImpl中------

package com.pb.service.impl;

 

import java.util.HashMap;

import java.util.List;

import java.util.Map;

 

import com.pb.dao.IUserDao;

import com.pb.dao.impl.UserDaoImpl;

import com.pb.entity.HouseUser;

import com.pb.service.IUserService;

 

public class UserServiceImpl implements IUserService {

private IUserDao dao = new UserDaoImpl();

@Override

public Map<String, Object> login(HouseUser user) {

Map<String, Object> map = new HashMap<String, Object>();

//

List list = dao.findByProperty("HouseUser","username",user.getUsername());

if(list !=null && list.size()>0){//用户名存在

HouseUser loginUser = (HouseUser)list.get(0);

if(user.getPassword()!=null 

&& user.getPassword().trim().equals(loginUser.getPassword()))

      {

map.put("user",loginUser);

}else{

//添加提示信息:用户名或密码不正确

map.put("msg","用户名或密码不正确");

}

}else{

//添加提示信息:用户名不存在

map.put("msg","用户名不存在");

}

return map;

}

 

}

 

 

 

 

 

------------从数据库获取数据----------------

 

package com.pb.base.dao.impl;

 

import java.lang.reflect.ParameterizedType;

import java.util.ArrayList;

import java.util.List;

 

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.hibernate.Query;

import org.hibernate.Session;

import org.hibernate.Transaction;

 

import com.pb.base.dao.IBaseDao;

import com.pb.util.HibernateSessionFactory;

import com.pb.util.Page;

//应用泛型-----棍据类对象不同---操作不同的类

public class BaseDaoImpl<T> implements IBaseDao<T> {

private Log log = LogFactory.getLog(this.getClass());

private Class<T> entityClass;

 

    @SuppressWarnings("unchecked")

public BaseDaoImpl() {

   /*getClass()--当前类(BaseDaoImpl)

     * .getGenericSuperclass()) --得到当前类的父类

     * getActualTypeArguments() --的参数T;<T>

     * java.lang.reflect.ParameterizedType

     * */

    entityClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];

    }

    

public Session getSession() {

return HibernateSessionFactory.getSession();

}

public void closeSession(){

HibernateSessionFactory.closeSession();

}

/**

 * 根据对象名和对象属性查询数据

 * @param className   --对应持久类---〉对象数据库表

 * @param propertyName  --属性

 * @param value       ----值

 * @return 实体对象列表

 */

@SuppressWarnings("unchecked")

public List<T> findByProperty(String className,String propertyName, Object value) {

log.debug("finding "+className+" instance with property: " + propertyName + ", value: " + value);//调试信息

try {

String hql = "FROM "+className+" as o WHERE o."+propertyName+" = ?";

Query queryObject = getSession().createQuery(hql);

queryObject.setParameter(0, value);

return queryObject.list();

} catch (RuntimeException re) {

log.error("find by property name failed", re);

throw re;

} finally{

closeSession();

}

}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

--------------持久类和-----------

package com.pb.entity;

 

 

public class HouseUser implements java.io.Serializable {

private static final long serialVersionUID = -4357515988015534310L;

 

// Fields

private Integer id;

private String password;

private String telephone;

private String username;

private String isadmin;

private String realname;

 

// Constructors

/** default constructor */

public HouseUser() {

}

 

/** minimal constructor */

public HouseUser(Integer id) {

this.id = id;

}

 

/** full constructor */

public HouseUser(Integer id, String password, String telephone,

String username, String isadmin, String realname) {

this.id = id;

this.password = password;

this.telephone = telephone;

this.username = username;

this.isadmin = isadmin;

this.realname = realname;

}

 

// Property accessors

 

public Integer getId() {

return this.id;

}

 

public void setId(Integer id) {

this.id = id;

}

 

public String getPassword() {

return this.password;

}

 

public void setPassword(String password) {

this.password = password;

}

 

public String getTelephone() {

return this.telephone;

}

 

public void setTelephone(String telephone) {

this.telephone = telephone;

}

 

public String getUsername() {

return this.username;

}

 

public void setUsername(String username) {

this.username = username;

}

 

public String getIsadmin() {

return this.isadmin;

}

 

public void setIsadmin(String isadmin) {

this.isadmin = isadmin;

}

 

public String getRealname() {

return this.realname;

}

 

public void setRealname(String realname) {

this.realname = realname;

}

}

 

 

--------配置文件----------

 

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

    <class name="com.pb.entity.HouseUser" table="HOUSE_USER">

        <id name="id" type="java.lang.Integer">

            <column name="ID" precision="9" scale="0" />

            <generator class="sequence" >

             <param name="sequence">HOUSE_USER_ID</param>

            </generator>

        </id>

        <property name="password" type="java.lang.String">

            <column name="PASSWORD" length="50" />

        </property>

        <property name="telephone" type="java.lang.String">

            <column name="TELEPHONE" length="15" />

        </property>

        <property name="username" type="java.lang.String">

            <column name="USERNAME" length="50" />

        </property>

        <property name="isadmin" type="java.lang.String">

            <column name="ISADMIN" length="5" />

        </property>

        <property name="realname" type="java.lang.String">

            <column name="REALNAME" length="50" />

        </property>

    </class>

</hibernate-mapping>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                         目录

使用Ajax实现登录--步骤-------------------------------1

执行流程图-----------------------------------------1

Jsp页面:包含jquey+ajax ---------------------------------------2

          ----------------------------------------------------3

web.xml-----------------------------------------------4

 

Struts.xml-----------------------------------------------5

 

Constant(定义所有常量的工具类)---------------------------------6

UserAction--------------------------------------------------6

      登录和退出的方法-----------------------------------------7

 

serviceImpl------------------------------------------------8

数据库获取数据List<T> findByProperty

(String className,String propertyName, Object value)----------10

 

持久类-------HouseUser-----------------------11

(持久类名)HouseUser+hbm.xml------------------------13

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xml

 

 

 

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Jsp页面:包含jquey+ajax

 

<%@ page contentType="text/html; charset=UTF-8"%>

<!-- 使用Struts2标签 -->

<%@ taglib prefix="s" uri="/struts-tags" %>

<!-- 保证路径的正确性 -->

<%

String path = request.getContextPath();

%>

<!-- 引用Jquery,版本1.8.2 -->

<script type="text/javascript" src="<%=path%>/js/jquery-1.8.2.js"></script>

<script type="text/javascript">

//登录

function doLogin(type) {//type可写可不写(--最好写)

 var name =  $('#loginName').attr('value');//获得输入用户用   语法$(#id)attr(name|properties|key,value|fn);注意类型

var pw = $('#loginPassword').attr('value');//获得输入密码

var url = 'login.action?user.username='+name+'&user.password='+pw; //传值多个用&分隔

if (name != null && name!='' && pw != null && pw!='') {

$.ajax({

url: url,

type:"post",

dataType: "json",

async: false,

beforeSend: function(data) {

$("#loginButton").attr("disabled"true);//发送前隐藏点击登录

},

success: function(data) {

if(data.user!=null){//当信息不为空时将信息返回给页面

 $("#msg").html(" <br>");  

var html = "欢迎   "+data.user.username+"   <label class='ui-green'><input type='button' name='search' value='退   出' onclick='document.location=\"logout.action\"'/></label>";

$("#topLoginDiv").html(html);

}else{

$("#msg").html(data.msg);

$("#msg").css("color","red");//设置错误信息颜色(红色)

}

$("#loginButton").attr("disabled"false);//隐藏取消(点击登录有效)

}

});

}else{

alert("请输入用户名或密码!");

}

</script>

<div id="header" class="wrap">

<div id="logo"><img src="<%=path%>/img/logo.gif" /></div>

<div >

<div id="msg" align="center"> <br></div>

</div>

 

<div align="right">

<div id="topLoginDiv" style="displayinline">

用户名: <s:textfield name="user.name" id="loginName" required="true" size="15"/>

   码: <s:password name="user.password"  id="loginPassword" required="true"size="15"/>

<label class="ui-green">

<input type="button" name="loginButton" id="loginButton"  value="登录" onclick="doLogin();" />

</label>

<label class="ui-green">

<input type='button' value='注册' />

</label>

</div>

<div style="displayinline">

<label class="ui-green">

<input type="button" name="search" value="发布信息" />

</label>

</div>

</div>

</div>

 

 

 

Web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

  <display-name>test</display-name>

  <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

  <!-- struts2 过滤所有Actionq请求-->

  <filter>

    <filter-name>struts2</filter-name>

    <filter-class>

   org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter    <!-- 2.0以上版本 -->

   </filter-class>

  </filter>

  <filter-mapping>

    <filter-name>struts2</filter-name>

    <url-pattern>/*</url-pattern>

  </filter-mapping>

</web-app>

 

 

 

 

 

 

 

 

 

 

 

 

 

-----Struts.xml----2.3可以改为2.1

<?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>

<constant name="struts.devMode" value="true" />

<constant name="struts.ui.theme" value="simple"/>

    <package name="house-json" extends="json-default">

     <action name="login" class="com.pb.web.action.UserAction" method="login">

     <result type="json"></result>

     <result name="login" type="json"></result>

     </action>

    </package>

    

    <package name="house-manage" extends="json-default">

     <action name="logout" class="com.pb.web.action.UserAction" method="logout">

     <result>/pages/manage.jsp</result>

     </action>

    </package>

</struts>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

------package com.pb.util;

 

public abstract  class Constant {

public static int PAGE_START = 0;// 默认起始页

public static int PAGE_COUNT = 3;// 默认每页记录数

public static String LOGIN_USER = "LOGIN_USER";// 登录用户

public static String UPLOAD_PATH = "/upload";// 默认上传文件目录

}

 

 

package com.pb.web.action;

 

-----------UserAction------------

//不要忘记set/get方法

package com.pb.web.action;

 

import java.util.Map;

 

import com.pb.base.action.BaseAction;

import com.pb.entity.HouseUser;

import com.pb.service.IUserService;

import com.pb.service.impl.UserServiceImpl;

import com.pb.util.Constant;

 

public class UserAction extends BaseAction {

 

private static final long serialVersionUID = 1L;

private IUserService service = new UserServiceImpl();

private HouseUser user;

private String msg;

/**

 * 登录

 * @return

 */

public String login(){

if(user!=null){

Map<String,Object> map = service.login(user);

user =(HouseUser)map.get("user");

if(user!=null){

session.put(Constant.LOGIN_USER,user);

msg = "true";

return SUCCESS;

}else{

msg = (String)map.get("msg");

}

}

return LOGIN;

}

/**

 * 退出

      清除sessionuser

      返回原页面

 * @return

 */

public String logout(){

session.remove(Constant.LOGIN_USER);

return SUCCESS;

}

 

public HouseUser getUser() {

return user;

}

 

public void setUser(HouseUser user) {

this.user = user;

}

 

public String getMsg() {

return msg;

}

 

public void setMsg(String msg) {

this.msg = msg;

}

}

 

 

--------------serviceImpl中------

package com.pb.service.impl;

 

import java.util.HashMap;

import java.util.List;

import java.util.Map;

 

import com.pb.dao.IUserDao;

import com.pb.dao.impl.UserDaoImpl;

import com.pb.entity.HouseUser;

import com.pb.service.IUserService;

 

public class UserServiceImpl implements IUserService {

private IUserDao dao = new UserDaoImpl();

@Override

public Map<String, Object> login(HouseUser user) {

Map<String, Object> map = new HashMap<String, Object>();

//

List list = dao.findByProperty("HouseUser","username",user.getUsername());

if(list !=null && list.size()>0){//用户名存在

HouseUser loginUser = (HouseUser)list.get(0);

if(user.getPassword()!=null 

&& user.getPassword().trim().equals(loginUser.getPassword()))

      {

map.put("user",loginUser);

}else{

//添加提示信息:用户名或密码不正确

map.put("msg","用户名或密码不正确");

}

}else{

//添加提示信息:用户名不存在

map.put("msg","用户名不存在");

}

return map;

}

 

}

 

 

 

 

 

------------从数据库获取数据----------------

 

package com.pb.base.dao.impl;

 

import java.lang.reflect.ParameterizedType;

import java.util.ArrayList;

import java.util.List;

 

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.hibernate.Query;

import org.hibernate.Session;

import org.hibernate.Transaction;

 

import com.pb.base.dao.IBaseDao;

import com.pb.util.HibernateSessionFactory;

import com.pb.util.Page;

//应用泛型-----棍据类对象不同---操作不同的类

public class BaseDaoImpl<T> implements IBaseDao<T> {

private Log log = LogFactory.getLog(this.getClass());

private Class<T> entityClass;

 

    @SuppressWarnings("unchecked")

public BaseDaoImpl() {

   /*getClass()--当前类(BaseDaoImpl)

     * .getGenericSuperclass()) --得到当前类的父类

     * getActualTypeArguments() --的参数T;<T>

     * java.lang.reflect.ParameterizedType

     * */

    entityClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];

    }

    

public Session getSession() {

return HibernateSessionFactory.getSession();

}

public void closeSession(){

HibernateSessionFactory.closeSession();

}

/**

 * 根据对象名和对象属性查询数据

 * @param className   --对应持久类---〉对象数据库表

 * @param propertyName  --属性

 * @param value       ----值

 * @return 实体对象列表

 */

@SuppressWarnings("unchecked")

public List<T> findByProperty(String className,String propertyName, Object value) {

log.debug("finding "+className+" instance with property: " + propertyName + ", value: " + value);//调试信息

try {

String hql = "FROM "+className+" as o WHERE o."+propertyName+" = ?";

Query queryObject = getSession().createQuery(hql);

queryObject.setParameter(0, value);

return queryObject.list();

} catch (RuntimeException re) {

log.error("find by property name failed", re);

throw re;

} finally{

closeSession();

}

}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

--------------持久类和-----------

package com.pb.entity;

 

 

public class HouseUser implements java.io.Serializable {

private static final long serialVersionUID = -4357515988015534310L;

 

// Fields

private Integer id;

private String password;

private String telephone;

private String username;

private String isadmin;

private String realname;

 

// Constructors

/** default constructor */

public HouseUser() {

}

 

/** minimal constructor */

public HouseUser(Integer id) {

this.id = id;

}

 

/** full constructor */

public HouseUser(Integer id, String password, String telephone,

String username, String isadmin, String realname) {

this.id = id;

this.password = password;

this.telephone = telephone;

this.username = username;

this.isadmin = isadmin;

this.realname = realname;

}

 

// Property accessors

 

public Integer getId() {

return this.id;

}

 

public void setId(Integer id) {

this.id = id;

}

 

public String getPassword() {

return this.password;

}

 

public void setPassword(String password) {

this.password = password;

}

 

public String getTelephone() {

return this.telephone;

}

 

public void setTelephone(String telephone) {

this.telephone = telephone;

}

 

public String getUsername() {

return this.username;

}

 

public void setUsername(String username) {

this.username = username;

}

 

public String getIsadmin() {

return this.isadmin;

}

 

public void setIsadmin(String isadmin) {

this.isadmin = isadmin;

}

 

public String getRealname() {

return this.realname;

}

 

public void setRealname(String realname) {

this.realname = realname;

}

}

 

 

--------配置文件----------

 

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

    <class name="com.pb.entity.HouseUser" table="HOUSE_USER">

        <id name="id" type="java.lang.Integer">

            <column name="ID" precision="9" scale="0" />

            <generator class="sequence" >

             <param name="sequence">HOUSE_USER_ID</param>

            </generator>

        </id>

        <property name="password" type="java.lang.String">

            <column name="PASSWORD" length="50" />

        </property>

        <property name="telephone" type="java.lang.String">

            <column name="TELEPHONE" length="15" />

        </property>

        <property name="username" type="java.lang.String">

            <column name="USERNAME" length="50" />

        </property>

        <property name="isadmin" type="java.lang.String">

            <column name="ISADMIN" length="5" />

        </property>

        <property name="realname" type="java.lang.String">

            <column name="REALNAME" length="50" />

        </property>

    </class>

</hibernate-mapping>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                         目录

使用Ajax实现登录--步骤-------------------------------1

执行流程图-----------------------------------------1

Jsp页面:包含jquey+ajax ---------------------------------------2

          ----------------------------------------------------3

web.xml-----------------------------------------------4

 

Struts.xml-----------------------------------------------5

 

Constant(定义所有常量的工具类)---------------------------------6

UserAction--------------------------------------------------6

      登录和退出的方法-----------------------------------------7

 

serviceImpl------------------------------------------------8

数据库获取数据List<T> findByProperty

(String className,String propertyName, Object value)----------10

 

持久类-------HouseUser-----------------------11

(持久类名)HouseUser+hbm.xml------------------------13

0 0