AJAX+JAVA用户登陆注册验证的实现代码
发布于 2020-6-18|
复制链接
摘记: 需求
通过ajax异步刷新页面验证用户输入的账号密码是否在数据库中存在。技术栈
JS ..
需求通过ajax异步刷新页面验证用户输入的账号密码是否在数据库中存在。技术栈
JSP+Servlet+Oracle具体代码
JSP部分:
```java
Insert title here
function createXMLHttpRequest() {
try {
xmlHttp = new XMLHttpRequest();//除了ie之外的其他浏览器使用ajax
} catch (tryMS) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");//ie浏览器适配
} catch (otherMS) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//ie浏览器适配
} catch (failed) {
xmlHttp = null;
}
}
}
return xmlHttp;
}
//提交请求
var xmlHttp;
function checkUserExists() {
var u = document.getElementById("uname");
var username = u.value;
if (username == "") {
alert("请输入用户名");
u.focus();
return false;
}
//访问字符串
var url = "loginServlet";
//创建核心xmlhttprequest组件
xmlHttp = createXMLHttpRequest();
//设置回调函数
xmlHttp.onreadystatechange = proessRequest;
//初始化核心组件
xmlHttp.open("post", url, true);
//设置请求头
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
//发送请求
xmlHttp.send("uname="+username);
}
//回调函数
function proessRequest() {
if (xmlHttp.status==200 && xmlHttp.readyState == 4) {
var b = xmlHttp.responseText;//得到服务端的输出结果
if (b=="true") {
document.getElementById("alert").innerHTML = "用户名已经存在!";
}else {
document.getElementById("alert").innerHTML = "用户名可以使用!";
}
}
}
请输入用户名:
```
这里没有用Dao层,直接用servlet和service层进行验证。
下面是service下JDBC查询的代码:
```java
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.stx.service.User;
import com.stx.service.ConnectionManager;
public class ajaxService {
public boolean searchUser (String uname) {
//jdbc查询用户名是否存在
boolean isFalse = false;
Connection connection = null;
Statement stmt = null;
ResultSet rs = null;
connection = ConnectionManager.getConnection();
try {
stmt = connection.createStatement();
String sql = "select * from user_b where uname='"+uname+"'";//sql语句
rs = stmt.executeQuery(sql);
isFalse=rs.next();
} catch (SQLException e) {
e.printStackTrace();
} finally {
ConnectionManager.closeResultSet(rs);
ConnectionManager.closeStatement(stmt);
ConnectionManager.closeConnection(connection);
}
return isFalse;
}
}
```
JDBC连接代码:
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ConnectionManager {
private final static String DRIVER_CLASS = "oracle.jdbc.OracleDriver";
private final static String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
private final static String DBNAME = "ibook";
private final static String PASSWORD = "qwer";
public static Connection getConnection() {
Connection connection = null;
try {
Class.forName(DRIVER_CLASS);
connection = DriverManager.getConnection(URL, DBNAME, PASSWORD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
public static void closeResultSet(ResultSet rs) {
try {
if (rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void closeConnection(Connection connection) {
try {
if (connection != null && !connection.isClosed())
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void closeStatement(Statement stmt) {
try {
if (stmt != null)
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
关于user类:
```java
public class User {
private String uname;
public User() {
super();
}
public User(String uname) {
super();
this.uname = uname;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
```
关于控制层servlet:
```java
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.stx.service.ajaxService;
/**
* Servlet implementation class loginServlet
*/
public class loginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private ajaxService ajaxService = new ajaxService();
/**
* @see HttpServlet#HttpServlet()
*/
public loginServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String uname = request.getParameter("uname");//获取到输入的用户名
boolean isUname = ajaxService.searchUser(uname);//调用service中的查询方法
response.setCharacterEncoding("UTF-8");//设置字符编码
PrintWriter out = response.getWriter();
out.print(isUname);
out.flush();
out.close();//关闭资源
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
```