layui使用html+servlet+ajax实现登录验证
我们一般使用的都是form表单提交到Servlet来实现前端和后端的交互的。这次我使用的是ajax提交数据,实现登录操作。
首先我们需要的是一套layui模板,这里用到layui的js和css界面。
第一步自己建立数据表,这里只需要username 和password。我使用的是主要使用的是mysql。
这边是我的工程目录,来看一下我的目录结构吧。

这里就主要写一下servlet和前端html的交互。
Servlet
login.java
package com.Serlvet; import com.Bean.User;
import com.Dao.mannger;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter; @WebServlet(name ="login", value = "/login")
public class login extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String action=request.getParameter("action");//action'是html传来的一个字段
if(action.equals("doLogin")){
doLogin(request,response);
}
}
protected void doLogin(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");//设置相应的文本类型
response.setContentType("text/html;charset=utf-8");//设置响应类型,并防止中文乱码
String username = request.getParameter("username");
String password = request.getParameter("password");
String fangshi = request.getParameter("fangshi");
mannger dao = new mannger();//dao层对象
User student = new User();//实体类对象
User admin = new User();//实体类对象
student.setUsername(username);//获取前端传来的数据
student.setPassword(password);
admin.setUsername(username);
admin.setPassword(password);
int i = 0;
if ("0".equals(fangshi)) { //判断登录方式
i = dao.loginstu(student); //执行登录操作
if (i==0) {
request.setAttribute("msg", "用户名或者密码错误");
System.out.println("用户名或者密码错误");
response.getWriter().print("error"); //响应ajax的data值,
} else {
System.out.println("ok");
response.getWriter().print("ok");//响应ajax的data值,成功则进响应到前端
request.getSession().setAttribute("student", student.getUsername());
System.out.println("登陆成功");
}
}
else if ("1".equals(fangshi)) {
i = dao.loginadmin(admin);
System.out.println(i);
if (i == 0) {
request.setAttribute("msg", "用户名或者密码错误");
System.out.println("用户名或者密码错误");
response.getWriter().print("error"); //响应ajax的data值,
} else {
System.out.println("ok");
response.getWriter().print("ok");//响应ajax的data值,成功则进响应到前端
request.getSession().setAttribute("student", student.getUsername());
System.out.println("登陆成功");
}
}
}
}
dao层,这个代码是封装的一些进行数据库操作的方法。
mannger.java
package com.Dao;
import com.Bean.User;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.Util.utils;
public class mannger {
public int registerstu(User stu){
int i=0;
try {
Connection connection = utils.getConnection();
String sql = "insert into stuuser(username,password,email,name,tel,gender,birthday) values(?,?,?,?,?,?,?)";
PreparedStatement ps = null;
ps = connection.prepareStatement(sql);
ps.setString(1,stu.getUsername());
ps.setString(2, stu.getPassword());
ps.setString(3,stu.getEmail());
ps.setString(4,stu.getName());
ps.setString(5, stu.getTel());
ps.setString(6, stu.getGengder());
ps.setString(7, stu.getBirthday());
i = ps.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return i;
}
public int registeradimn(User admin){
int i=0;
try {
Connection connection = utils.getConnection();
String sql = "insert into adminuser(username,password,email,name,tel,gender,birthday) values(?,?,?,?,?,?,?)";
PreparedStatement ps = null;
ps = connection.prepareStatement(sql);
ps.setString(1,admin.getUsername());
ps.setString(2, admin.getPassword());
ps.setString(3,admin.getEmail());
ps.setString(4,admin.getName());
ps.setString(5, admin.getTel());
ps.setString(6, admin.getGengder());
ps.setString(7, admin.getBirthday());
i = ps.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return i;
}
public int loginstu(User stu){
int i = 1;
try {
Connection connection = utils.getConnection();
String sql="select * from stuuser where username=? and password=?";
PreparedStatement ps = null;
ps = connection.prepareStatement(sql);
ps.setString(1,stu.getUsername());
ps.setString(2, stu.getPassword());
ResultSet rs = ps.executeQuery();
if(rs.next()==false){
i = 0;
}
rs.close();
ps.close();
connection.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return i;
}
public int loginadmin(User admin){
int i = 1;
try {
Connection connection = utils.getConnection();
String sql="select * from adminuser where username=? and password=?";
PreparedStatement ps = null;
ps = connection.prepareStatement(sql);
ps.setString(1,admin.getUsername());
ps.setString(2, admin.getPassword());
ResultSet rs = ps.executeQuery();
if(rs.next()==false){
i = 0;
}
rs.close();
ps.close();
connection.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return i;
}
}
下面是界面
login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>后台管理-登陆</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="Access-Control-Allow-Origin" content="*">
<meta name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
<link rel="stylesheet" href="WebContent/layui/css/layui.css"
media="all">
<!--[if lt IE 9]>
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<style>
body {
background-image: url("WebContent/layuimini/images/bg.jpg");
height: 100%;
width: 100%;
} #container {
height: 100%;
width: 100%;
} input:-webkit-autofill {
-webkit-box-shadow: inset 0 0 0 1000px #fff;
background-color: transparent;
} .admin-login-background {
width: 300px;
height: 300px;
position: absolute;
left: 50%;
top: 40%;
margin-left: -150px;
margin-top: -100px;
} .admin-header {
text-align: center;
margin-bottom: 20px;
color: #ffffff;
font-weight: bold;
font-size: 40px
} .admin-input {
border-top-style: none;
border-right-style: solid;
border-bottom-style: solid;
border-left-style: solid;
height: 50px;
width: 300px;
padding-bottom: 0px;
} .admin-input::-webkit-input-placeholder {
color: #a78369
} .layui-icon-username {
color: #a78369 !important;
} .layui-icon-username:hover {
color: #9dadce !important;
} .layui-icon-password {
color: #a78369 !important;
} .layui-icon-password:hover {
color: #9dadce !important;
} .admin-input-username {
border-top-style: solid;
border-radius: 10px 10px 0 0;
} .admin-input-verify {
border-radius: 0 0 10px 10px;
} .admin-button {
margin-top: 20px;
font-weight: bold;
font-size: 18px;
width: 300px;
height: 50px;
border-radius: 5px;
background-color: #a78369;
border: 1px solid #d8b29f
} .admin-icon {
margin-left: 260px;
margin-top: 10px;
font-size: 30px;
} i {
position: absolute;
} .admin-captcha {
position: absolute;
margin-left: 205px;
margin-top: -40px;
}
</style>
</head>
<body>
<div id="container">
<div></div>
<div class="admin-login-background">
<div class="admin-header">
<span>login</span>
</div>
<form class="layui-form" >
<div>
<i class="layui-icon layui-icon-username admin-icon"></i> <input
type="text"
name="username"
id="username"
placeholder="请输入用户名"
autocomplete="off"
class="layui-input admin-input admin-input-username" >
</div>
<div>
<i class="layui-icon layui-icon-password admin-icon"></i> <input
type="password"
name="password"
id="password"
placeholder="请输入密码"
autocomplete="off"
class="layui-input admin-input" >
</div>
<div class="layui-form-item">
<div class="layui-show-sm-inline">
<select name="fangshi" id="fangshi" >
<option value="0">学生</option>
<option value="1" selected>管理员</option>
</select>
</div>
</div>
<button type="button" class="layui-btn admin-button" id="login" >登 陆</button>
<br><br>
</form>
<div class="layui-col-md-offset7">没有账户?
<a href="register.html" class="layui-btn-warm">注 册</a>
</div> </div>
</div>
<script src="WebContent/layui/layui.all.js" charset="utf-8"></script>
<script>
layui.use([ 'form','jquery','layer' ], function() {
var form = layui.form,
layer = layui.layer,
$= layui.jquery;
form.render();//这句一定要加,占坑
$("#login").click(function(){
var $1 = $.trim($("#username").val());
var $2 = $.trim($("#password").val());
var $3 = $.trim($("#fangshi").val());
if($1 == ''){
layer.msg('用户名不能为空',function() {time:2000});
return false;
}
if($2 == ''){
layer.msg('密码不能为空',function() {time:2000});
return false;
}
$.ajax({
url:'login?action=doLogin',//发出请求
type:'post',
data:{"username":$1,"password":$2,"fangshi":$3}, success:function (data) {
console.log(data)
if(data=="ok"){//ok说明登录成功
layer.msg('登陆成功!',function() {time:2000})
window.location.href="layui-doc-master/web/demo/admin.html";//然后跳转到你系统的主界面
}else if(data=="error"){
layer.msg('用户名或密码错误!',function() {time:2000});
}
}
});
});
});
</script>
</body>
</html>
实现效果

如果有什么问题,欢迎交流!欢迎交流!欢迎交流!
layui使用html+servlet+ajax实现登录验证的更多相关文章
- 2-功能1:基于用户认证组件和Ajax实现登录验证(图片验证码)
1.登录页面的设计 (1)label标签的id属性 label标签的id属性,点击label标记,相当于点击了input框 bootstarp样式 class="form-group&quo ...
- jdbc+servlet+jsp实现登录验证
基础知识准备:sql的增删改查. 新增:insert into 表名称(字段名.....)values(字段名....). 修改:update 表名称 set 字段名="新值" ...
- 使用ajax登录验证,第一次点击登录按钮无反应,第二次点击才能正常运行。
问题描述: 使用ajax进行登录验证时,第一次点击登录按钮无反应,第二次点击才能进去. 解决方法: 原来的代码 <form action="" method="po ...
- BBS-基于用户认证组建和Ajax实现登陆验证
功能1: 基于用户认证组件和Ajax实现登录验证(图片验证码) 总结: 1 一次请求伴随多次请求 2 PIL 3 session存储 4 验证码刷新 步骤: 1.配置静态文件夹 settings.py ...
- 前端 ajax 改写登录界面
SSM 整合项目开发到一个阶段,想慢慢地把前台框架等技术引入进来 突然碰到一个困惑好久的问题: ajax 替换原本 form 表单 post 提交登录: 一直 404 错误,心塞.... 最后发现原来 ...
- 基于ajax 的 几个例子 session ,ajax 实现登录,验证码 ,实现ajax表单展示
headers: {"X-CSRFToken": $("[name='csrfmiddlewaretoken']").val()},data:$(". ...
- 01- ajax, 登录验证,json数据,文件上传
1.ajax简介 1.向服务器发送请求的途径 # 向服务器发送请求的途径 1. 浏览器地址栏,默认get请求 2. form表单: get请求 post请求 3. a标签,默认get请求 4. Aja ...
- 使用 jQuery Ajax 异步登录,并验证用户输入信息(maven)
使用 jQuery Ajax 异步登录,并验证用户输入信息(maven) 本篇内容: (1)上一篇是使用同步的请求实现登录,并由 Servlet 决定登陆后下一步做哪些事情,本篇使用 jQuery A ...
- 11月10日上午ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库
1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...
随机推荐
- oracle基础安全配置
1.oracle中用户密码复杂度配置 1)查看参数 select limit from dba_profiles where resource_name='PASSWORD_VERIFY_FUNCTI ...
- dev分支和release是什么
master(主分支) 存在一条主分支(master).所有用户可见的正式版本,都从master发布(也是用于部署生产环境的分支,确保master分支稳定性).主分支作为稳定的唯一代码库,不做任何开发 ...
- Cartography Tools(制图工具)
制图工具 1.制图优化 # Process: 分散标记 arcpy.DisperseMarkers_cartography("", "", "EXPA ...
- 题解 2020.10.24 考试 T4 模板
题目传送门 题目大意 有一个 \(n\) 个点组成的树,有 \(m\) 次操作,每次将 \(1\to x\) 的路径上每个点都加入一个颜色为 \(c\) 的小球.但是每个点都有大小限制,即小球个数超过 ...
- 2020.11.1--pta阶梯练习赛补题
7-5 古风排版 中国的古人写文字,是从右向左竖向排版的.本题就请你编写程序,把一段文字按古风排版. 输入格式: 输入在第一行给出一个正整数N(<),是每一列的字符数.第二行给出一个长度不超过1 ...
- Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战
一. 前言 [APP 移动端]Spring Security OAuth2 手机短信验证码模式 [微信小程序]Spring Security OAuth2 微信授权模式 [管理系统]Spring Se ...
- Coursera Deep Learning笔记 序列模型(二)NLP & Word Embeddings(自然语言处理与词嵌入)
参考 1. Word Representation 之前介绍用词汇表表示单词,使用one-hot 向量表示词,缺点:它使每个词孤立起来,使得算法对相关词的泛化能力不强. 从上图可以看出相似的单词分布距 ...
- 第2次 Beta Scrum Meeting
本次会议为Beta阶段第2次Scrum Meeting会议 会议概要 会议时间:2021年5月31日 会议地点:「腾讯会议」线上进行 会议时长:0.5小时 会议内容简介:对完成工作进行阶段性汇报:对下 ...
- seata序列化日期类型出错
一.背景 最近在整合seata的过程中,发现如果业务表中存在 datetime 的数据类型,那么在分布式事务中,修改这个字段的值时,会出现如下错误.此处提供2种解决方案. com.fasterxml. ...
- 2021.9.12考试总结[NOIP模拟51]
T1 茅山道术 仔细观察发现对于每个点只考虑它前面第一个与它颜色相同的点即可. 又仔细观察发现对一段区间染色后以这个区间内点为端点的区间不能染色. 于是对区间右端点而言,区间染色的贡献为遍历到区间左端 ...