实现无刷新用户名验证。当用户名文本框失去焦点时,发送请求到服务器,判断用户名是否存在,如果已经存在提示 “用户名已被使用”,如果不存在则提示 “用户名可以使用”。
1.前后端用json交换数据。
2.同时用原生js和jquery库两种方式实现
代码:
(1):registerServlet(负责输入用户名的后端判断、处理)
package Servlet1;
import JDBC1.JDBCDemo1;
import com.fasterxml.jackson.databind.ObjectMapper;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import static java.lang.System.out;
@WebServlet(name = "registerServlet", value = "/registerServlet")
public class registerServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
JDBCDemo1 jdbcDemo1 = new JDBCDemo1();
int count = jdbcDemo1.findInMysql(username);
response.setContentType("text/json");
response.setCharacterEncoding("utf-8");
ObjectMapper mapper = new ObjectMapper();
PrintWriter out= response.getWriter();
if(count!=0){
String resJSON = mapper.writevalueAsString("用户名已被使用");
response.getWriter().write(resJSON);
}else{
count = jdbcDemo1.insertIntoMysql(username);
if(count!=0){
String resJSON = mapper.writevalueAsString("用户名可以使用");
response.getWriter().write(resJSON);
}else{
String resJSON = mapper.writevalueAsString("用户名不可以使用");
response.getWriter().write(resJSON);
}
}
}
}
(2):JDBCDemo1(负责链接数据库并进行用户名的查找及插入)
package JDBC1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCDemo1 {
public int findInMysql(String username){
Connection connection = null;
Statement statement = null;
int count = 0;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String sql = "update stu set username = '"+username+"' where username='"+username+"'";
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbdb", "root", "yyyyy");
statement = connection.createStatement();
count = statement.executeUpdate(sql);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
if(statement!=null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return count;
}
}
public int insertIntoMysql(String username){
Connection connection = null;
Statement statement = null;
int count = 0;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String sql = "insert into stu values('"+username+"','password')";
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbdb", "root", "yyyyy");
statement = connection.createStatement();
count = statement.executeUpdate(sql);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
if(statement!=null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return count;
}
}
}
(3):register(用原生JS实现无刷验证用户名的简单Html界面)
javascript
请输入账号
(4):register2(用JQuery库实现无刷验证用户名的简单Html界面)
ajax
请输入账号
代码运行界面:
1.网页界面
2.输入已被使用的用户名,并使用户名文本框失去焦点
3.输入未被使用的用户名,并使用户名文本框失去焦点
学习内容二:算法学习(高精度加、减、乘、除)1.高精度加法
#include
#include
#include
using namespace std;
vector vector int t=0; if(t) C.push_back(1); int main() 2.高精度减法 #include using namespace std; int cmp(vector vector int main() 3.高精度乘法 #include using namespace std; vector int main() 4.高精度除法 #include using namespace std; vector int main()
{
if(A.size()
for(int i=0;i {
t+=A[i];
if(i
t/=10;
}
return C;
}
{
string a,b;
vector
cin >> a >> b;
for(int i=a.size()-1;i>=0;i--)
A.push_back(a[i]-'0');
for(int i=b.size()-1;i>=0;i--)
B.push_back(b[i]-'0');
vector
for(int i=C.size()-1;i>=0;i--)
printf("%d",C[i]);
return 0;
}
#include
#include
{
if(A.size()!=B.size()) return A.size()>B.size();
for(int i=A.size()-1;i>=0;i--)
if(A[i]!=B[i])
return A[i]>B[i];
return true;
}
{
vector
for(int i=0,t=0;i {
t=A[i]-t;
if(i
C.push_back((t+10)%10);
if(t>=0)
t=0;
else
t=1;
}
while(C.size()>1&&C.back()==0)
C.pop_back();
return C;
}
{
string a,b;
vector
cin >> a >> b;
for(int i=a.size()-1;i>=0;i--)
A.push_back(a[i]-'0');
for(int i=b.size()-1;i>=0;i--)
B.push_back(b[i]-'0');
vector
if(cmp(A,B))
{
C=sub(A,B);
for(int i=C.size()-1;i>=0;i--)
printf("%d",C[i]);
}
else
{
C=sub(B,A);
printf("-");
for(int i=C.size()-1;i>=0;i--)
printf("%d",C[i]);
}
return 0;
}
#include
#include
{
vector
int t=0;
for(int i=0;i {
if(i C.push_back(t%10);
t/=10;
}
while(C.size()>1 && C.back()==0)
C.pop_back();
return C;
}
{
string a;
int b;
vector
cin >> a;
cin >> b;
for(int i=a.size()-1;i>=0;i--)
A.push_back(a[i]-'0');
C = mul(A,b);
for(int i=C.size()-1;i>=0;i--)
printf("%d",C[i]);
return 0;
}
#include
#include
#include
{
vector
r=0;
for(int i=A.size()-1;i>=0;i--)
{
r=r*10+A[i];
C.push_back(r/b);
r%=b;
}
reverse(C.begin(),C.end());
while(C.size()>1&&C.back()==0)
C.pop_back();
return C;
}
{
string a;
int b;
vector
cin >> a >> b;
for(int i=a.size()-1;i>=0;i--)
A.push_back(a[i]-'0');
int r;
C=div(A,b,r);
for(int i=C.size()-1;i>=0;i--)
printf("%d",C[i]);
cout << endl << r << endl;
return 0;
}



