3.用户模块:用户名是否存在校验

本文介绍了一种使用Ajax实现实时校验用户名的方法,通过前端JavaScript进行异步请求,结合Struts2、Hibernate等技术在后台进行数据验证及处理。

采用ajax实现用户名是否存在校验

1、用户名后面加入onblur="checkUsername();"

<input type="text" id="username" name="username" class="text" maxlength="20" onblur="checkUsername();">

2、ajax代码

function checkUsername(){
		var username = document.getElementById("username").value;
		if(username!=null && username!=''){
			//1.创建对象
			var xmlhttp;
			if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
			  xmlhttp=new XMLHttpRequest();
			}else{// code for IE6, IE5
			  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
			//2.设置监听
			xmlhttp.onreadystatechange=function(){
		 		if (xmlhttp.readyState==4 && xmlhttp.status==200){
		    		document.getElementById("spanUsername").innerHTML=xmlhttp.responseText;
		    	}
		  	}
			//3.打开链接
			var url = "${pageContext.request.contextPath}/user_findByUsername?time="+new Date().getTime()+"&username=" + username; 
			xmlhttp.open("GET",url,true);

			//4.发送
			xmlhttp.send(null);
		}else{
			document.getElementById("spanUsername").innerHTML="<font color='red'>用户名不能为空</font>";
		}
	}

3、根据上面的user_findByUsername,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">
    	<action name="index" class="indexAction">
    		<result name="index">/WEB-INF/jsp/index.jsp</result>
    	</action>
    	
    	<!-- 用户action -->
    	<action name="user_*" class="userAction" method="{1}">
    		<result name="registPage">/WEB-INF/jsp/regist.jsp</result>
    	</action>
    </package>
</struts>

4、userAction在applicationContext.xml中的配置:

<bean id="userAction" class="cn.xdy.shop.user.action.UserAction" scope="prototype">
	
</bean>
5、校验用户名是否存在要查询数据库,需要创建User.java、User.hbm.xml、UserDao.java、UserService.java

User.java省略

User.hbm.xml代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<class name="cn.xdy.shop.user.vo.User" table="user">
		<id name="uid">
			<generator class="native"/>
		</id>
		<property name="username"/>
		<property name="password"/>
		<property name="name"/>
		<property name="email"/>
		<property name="phone"/>
		<property name="addr"/>
		<property name="state"/>
		<property name="code"/>
	</class>
</hibernate-mapping>

UserDao.java要用到hibernate的模板方法,需要继承HibernateDaoSupport,并且在applicationContext.xml中要配置userDao,如下配置:

<!-- Dao的配置 -->
	<bean id="userDao" class="cn.xdy.shop.user.dao.UserDao">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>

User.hbm.xml需要配置在

<!-- Hibernate的相关信息 -->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<!-- 注入连接池 -->
		<property name="dataSource" ref="dataSource"/>
		<!-- 配置Hibernate的其他的属性 -->
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.format_sql">true</prop>
				<prop key="hibernate.connection.autocommit">false</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
			</props>
		</property>
		<!-- 配置Hibernate的映射文件 -->
		<property name="mappingResources">
			<list>
				<value>cn/xdy/shop/user/vo/User.hbm.xml</value>
			</list>
		</property>
	</bean>

package cn.xdy.shop.user.dao;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import cn.xdy.shop.user.vo.User;

public class UserDao extends HibernateDaoSupport{

	public User findByUsername(String username){
		String hql = "from User where username=?";
		List<User> list = this.getHibernateTemplate().find(hql, username);
		if(list!=null && list.size()>0){
			return list.get(0);
		}
		return null;
	}
}

UserService直接调用UserDao

package cn.xdy.shop.user.service;

import cn.xdy.shop.user.dao.UserDao;
import cn.xdy.shop.user.vo.User;

public class UserService {
	private UserDao userDao;

	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}

	public User findByUsername(String username) {
		return userDao.findByUsername(username);
	}
}

6、UserAction.java

package cn.xdy.shop.user.action;

import java.io.IOException;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import cn.xdy.shop.user.service.UserService;
import cn.xdy.shop.user.vo.User;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class UserAction extends ActionSupport implements ModelDriven<User> {
	private UserService userService;
	private User user = new User();

	public User getModel() {
		return user;
	}

	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	public String registPage() {
		return "registPage";
	}

	/**
	 * 检验用户是否存在
	 * 
	 * @param username
	 * @return
	 * @throws IOException
	 */
	public String findByUsername() throws IOException {
		User existUser = userService.findByUsername(user.getUsername());
		HttpServletResponse response = ServletActionContext.getResponse();
		response.setContentType("text/html;charset=UTF-8");
		if (existUser != null) {
			response.getWriter().println("<font color='red'>用户名已存在</font>");
		} else {
			response.getWriter().println("<font color='green'>用户名可用</font>");
		}
		return NONE;
	}

}

7、applicationContext.xml中加入如下配置

<!-- 用户类的Action -->
	<bean id="userAction" class="cn.xdy.shop.user.action.UserAction" scope="prototype">
		<property name="userService" ref="userService"></property>
	</bean>
	
	<!-- Service的配置 -->
	<bean id="userService" class="cn.xdy.shop.user.service.UserService">
		<property name="userDao" ref="userDao"></property>
	</bean>
	
	<!-- Dao的配置 -->
	<bean id="userDao" class="cn.xdy.shop.user.dao.UserDao">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>

效果图:



android的学生选课系统包含登录,管理员,教师,学生四个界面,根据登录确定具体跳转界面,功能模块是 1.管理员员信息:用户名、密码、性别、年龄、手机号 2.教师信息:用户名、密码、性别、年龄、职称、所属专业 3.学生信息:用户名、密码、性别、年龄、学号、总学分、所属学院 4、学院信晨:学院名称、学院介绍、学院学分限制 5.专业信息:专业名称、系名所履学院 6.课程信息:课程名称、介绍、学分、所厘专业、上课教师、上课人数、上课时段、上课地点、开班人数、已选人数 7.选课信息:课程名称、介绍、学分、所厘专业、上课教师、上课人数、上课时段、上课地点、学生姓名、课程状态 8.登录注册:修改密码,个人信息管理,退出登录 3.2.系统角色 1.管理员:管理员可以看到以上所有模块,管理所有模块信息。 2.教师:教师可以看到学院信息、专业信息,但只能查看;可以查看自己的课程信息;可以查看自己课程的选课信息 3.学生:学生可以查看学院、专业信息;可以对已有的课程进行选课,可以再选课信息模块对已选的课程进行取消。如果某个课程被删除,那么已选该课程的选课信息状态变成已取消, mysql数据库内容为CREATE TABLE admin ( adminId INT AUTO_INCREMENT PRIMARY KEY COMMENT &#39;管理员ID&#39;, username VARCHAR(50) NOT NULL COMMENT &#39;用户名&#39;, password VARCHAR(100) NOT NULL COMMENT &#39;密码&#39;, gender CHAR(1) CHECK (gender IN (&#39;M&#39;, &#39;F&#39;)) COMMENT &#39;性别(M/F)&#39;, age INT COMMENT &#39;年龄&#39;, phone VARCHAR(15) COMMENT &#39;手机号&#39; ); CREATE TABLE teacher ( 总共为四个大界面,登录界面,管理员界面,教师界面,学生界面,根据登录选择身份不同跳转至后面三个界面,根据系统角色中管理员,教师,学生各自具备的能力,此外数据库使用mysql,后端使用spring boot,根据这些功能以及系统角色的能力给出全部的项目结构和具体的代码
最新发布
04-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值