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个处 ...
随机推荐
- Jenkins REST API 实例
背景: Jenkins具有丰富的插件生态,足以满足我们日常工作的需求,但如果我们想通过具体的Jenkins任务直接对外提供服务,而不想将内部的具体实现对外暴露(否则,需添加对应的用户权限,通过页 ...
- Server Tools(服务器工具)
服务器工具 1.发布 # Process: MXD 转 Web 地图 arcpy.MXDToWebMap_server("", "", "" ...
- FastAPI 学习之路(十)请求体的字段
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- Python ThreadPoolExecutor 线程池导致内存暴涨
背景 在有200W的任务需要取抓取的时候,目前采用的是线程池去抓取,最终导致内存暴涨. 原因 Threadpoolexcutor默认使用的是无界队列,如果消费任务的速度低于生产任务,那么会把生产任务无 ...
- MeteoInfo-Java解析与绘图教程(五)
MeteoInfo-Java解析与绘图教程(五) 最近太忙了,终于有时间继续写了,上文说到了基本上的绘图方法,但缺少色阶呈现,一般图叠加着地图上,后端不需要管色阶,但也要注意web页面色阶和我们的生成 ...
- 解决VS2015安装后stdio.h ucrtd.lib等文件无法识别问题,即include+lib环境变量配置
转载自:http://blog.csdn.net/carl_qi/article/details/51171280 今天突然想在windows上装个 VS2015 玩玩,结果遇到了如下bug: 安装完 ...
- T-SQL——关于XML类型
目录 0. 将结果集转化为XML格式 1. 列值拼接为字符串 2. 字符串转换为列值 3. 一些说明 参考 志铭-2021年10月23日 10:43:21 0. 将结果集转化为XML格式 测试数据 I ...
- vue基础-组件&插槽
组件 组件化的意义:封装(复用,把逻辑隐藏起来,提高可维护性),快速开发(搭积木) 约定:我们通常把那些除了HTML标签以外的自定义组件,才称为'组件',结论是,我们说"父组件"& ...
- Shiro反序列化的检测与利用
1. 前言 Shiro 是 Apache 旗下的一个用于权限管理的开源框架,提供开箱即用的身份验证.授权.密码套件和会话管理等功能. 2. 环境搭建 环境搭建vulhub 3. 如何发现 第一种情况 ...
- Vue3+Typescript+Node.js实现微信端公众号H5支付(JSAPI v3)教程--各种填坑
----微信支付文档,不得不说,挺乱!(吐槽截止) 功能背景 微信公众号中,点击菜单或者扫码,打开公众号中的H5页面,进行支付. 一.技术栈 前端:Vue:3.0.0,typescript:3.9.3 ...