ajax+struts2实现验证用户名是否已经被注册
2017-06-23 17:52
218 查看
1.数据库相关操作没有使用hibernate框架(还没看完),使用了最基础的代码,但是运用了DAO设计模式。
在这个模式中DAO主要完成数据的操作,客户端依靠DAO接口进行操作,服务端要将接口进行具体实现。DAO的主要组成由以下几个部分组成。1、DatabaseConnection:专门负责数据库打开与关闭操作的类。
2、VO:主要由属性、setter、getter方法,VO类中的属性与数据表中的字段相对应。每一个VO对象相当于表中的一条记录。
3、DAO接口:主要定义数据库操作的接口,定义数据库的原子性操作,如增删改,按ID查询。
4、Impl:DAO的具体实现类,完成具体的数据库操作,但是不负责数据库的打开和关闭,接口类的名称首字母用“I”,表示其是一个接口。
5、Proxy:代理实现类。主要完成数据库的打开和关闭,并调用Impl类对象(真实对象类)的操作,之所以增加代理类是为了以后的拓展,如果一个程序可以A-B,那么中间最好加一个过渡,使用A-C-B的形式,可以有效减少程序的耦合度,使开发结构更加清晰。
6、Factory:工厂类,通过工厂类取得一个DAO的实例化对象,编写工厂类也是为了降低代码的耦合度,工厂类产生实例的方法通常是静态函 数,这样一来就可以通过工厂类名直接生成实例。
具体代码就不予展示了,展示实现验证用户名是否存在的核心代码核心代码:
User:
package com.bpf.test.vo; public class User { private String username; private String password; private String sex; private String email; private String phoneNumber; public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
UserDAOImpl:
存在返回ture
package com.bpf.test.impl;
import java.sql.*;
import com.bpf.test.dao.*;
import com.bpf.test.vo.*;
public class UserDAOImpl implements UserDAO {
private Connection conn = null;
private PreparedStatement pstmt = null;
public UserDAOImpl(Connection conn) {
// TODO Auto-generated constructor stub
this.conn = conn;
}
@Override
public boolean hasRegistered(User user) throws Exception {
// TODO Auto-generated method stub
String username = user.getUsername();
boolean hasRegisteredFlag = false;
String sql = "SELECT * FROM userinfo Where username = '"+username+"'";
this.pstmt = this.conn.prepareStatement(sql);//预编译
ResultSet rs = pstmt.executeQuery();
if(rs.next()){
hasRegisteredFlag = true;
}
this.pstmt.close();
return hasRegisteredFlag;
}
}
UserDAOProxy:
package com.bpf.test.proxy; import com.bpf.test.dao.*; import com.bpf.test.dbconn.*; import com.bpf.test.impl.*; import com.bpf.test.vo.*; public class UserDAOProxy implements UserDAO { private DataBaseConnection dbc = null; private UserDAO userDAOImpl = null; public UserDAOProxy() throws Exception { // TODO Auto-generated constructor stub this.dbc = new DataBaseConnection(); this.userDAOImpl = new UserDAOImpl(this.dbc.getConnection());//实例化真实类 } @Override public boolean hasRegistered(User user) throws Exception { // TODO Auto-generated method stub boolean flag = false; try{ flag = userDAOImpl.hasRegistered(user); }catch(Exception e){ throw e; }finally{ dbc.close(); } return flag; } }
UserDAOFactory:
package com.bpf.test.factory; import com.bpf.test.dao.*; import com.bpf.test.proxy.*; public class DAOFactory { public static UserDAO getUserDAOInstance() throws Exception { //取得DAO接口实例 return new UserDAOProxy(); //取得代理类的实例 } }
Check(action):
使用模型驱动可以直接把用户表单封装到实体类中,用户名存在就返回ture到ajax
package com.bpf.checked; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.bpf.test.dao.UserDAO; import com.bpf.test.factory.DAOFactory; import com.bpf.test.vo.User; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class Check extends ActionSupport implements ModelDriven<User> { private HttpServletRequest request = ServletActionContext.getRequest(); private HttpServletResponse response = ServletActionContext.getResponse(); private HttpSession session = request.getSession(); private UserDAO userDAOProxy = null; private User user = new User(); @Override public User getModel() { // TODO Auto-generated method stub return user; } //验证用户名是否已经被注册 public String registerCheck() throws IOException{ PrintWriter out = response.getWriter(); try{ userDAOProxy = DAOFactory.getUserDAOInstance(); }catch(Exception e){ e.printStackTrace(); } try{ boolean flag = userDAOProxy.hasRegistered(user); out.print(String.valueOf(flag)); }catch(Exception e){ e.printStackTrace(); } return NONE; } }
struts.xml:
<?xml version="1.0" encoding="UTF-8"?> <!-- 引入DTD约束 --> <!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.i18n.encoding" value="UTF-8"></constant> <package name="myProject" extends="struts-default" namespace="/"> <action name="check_*" class="com.bpf.checked.Check" method="{1}"> </action> </package> </struts>
注册页面部分代码:
使用了bootstrap相应式框架
<div class="form-group" id="div1"> <label class="sr-only" for="form-first-name">First name</label> <input type="text" name="username" placeholder="用户名..." class="form-first-name form-control" id="username"
aria-describedby="inputSuccess2Status" onblur="registerCheck()" onfocus="remove()"> </div>
ajax代码:
若存在则为div1添加一个类:has-error 效果是会产生一个警示红框 输入框失去焦点时验证,获得焦点时移除该效果
function registerCheck() { http_request = new XMLHttpRequest(); var url = "check_registerCheck?username=" + $("#username").val(); http_request.onreadystatechange = function () { if (http_request.readyState == 4 && http_request.status == 200) { var s = http_request.responseText; if (s == "true") { $("#div1").addClass("has-error"); } } } http_request.open("POST", url, true); http_request.send(); } function remove() { $("#div1").removeClass("has-error"); }
效果:
表中记录:
相关文章推荐
- Jquery与ajax结合实现验证用户名(邮箱是否)已经被注册过
- Ajax验证用户名是否已经注册(Servlet实现)
- 应用ajax实现检测注册用户名是否已经存在
- ajax实现验证用户名是否已经存在(struts2)
- PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
- ajax实现注册页面动态验证用户名是否已注册,不必提交即可验证。
- Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
- AJAX 实现用户名是否已经被注册
- PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
- 使用Ajax实现用户名是否已经存在的验证
- jQuery 验证表单用户名是否已经被注册
- PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
- 毕业设计(十)---用DWR实现 代替AJAX 用户注册检测用户名是否已经存在
- 毕业设计(十)---用DWR实现 代替AJAX 用户注册检测用户名是否已经存在
- ajax实现注册页面动态验证用户名是否已注册,不必提交即可验证
- ajax实现验证用户名是否已经存在(struts2)
- PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
- Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
- Asp.net 利用Jquery Ajax实现(验证用户名是否存)用户注册
- 应用ajax实现检测注册用户名是否已经存在