1、使用集合模拟数据库,利用ajax异步提交数据,实现用户注册功能
2、将用户登录功能和用户注册功能结合起来
- LoginServlet类:
public class LoginServlet extends HttpServlet {
//继承的目的就是要请求对象和响应对象
//创建一个公共的集合对象
static ArrayList<User> users = new ArrayList<>();
//现在是类级别地址,存放在方法区内存当中
/**
*
* @param req 请求对象
* @param resp 响应对象
* @throws ServletException
* @throws IOException
*/
@Override
public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String method = req.getParameter("method");
//获取到集合中的用户数据
getUsers();
//空指针异常错误避免方法:非空校验
if(method==null){
System.out.println("method值不存在");
}
else{
if(method.equals("login")){
toLogin(req,resp);
}
else if(method.equals("register")){
toRegister(req,resp);
}
}
}
/**
* 注册的方法
* @param req
* @param resp
*/
public void toRegister(HttpServletRequest req, HttpServletResponse resp) {
String username = req.getParameter("username");
String password = req.getParameter("password");
//测试数据
System.out.println("用户名的值为:"+username);
System.out.println("密码的值为:"+password);
//创建用户对象
User user = new User();
user.setUsername(username);
user.setPassword(password);
//获取集合长度
int size = users.size();
//添加数据
users.add(user);
//获取集合长度
int size2 = users.size();
//校验
if(size2 == size + 1){
try {
resp.getWriter().print("true");
} catch (Exception e) {
e.printStackTrace();
}
}
else{
try {
resp.getWriter().print("false");
} catch (Exception e) {
e.printStackTrace();
}
}
for(User user1 : users){
System.out.println(user1);
}
}
// /**
// * 执行登录的方法
// * @param req
// * @param resp
// */
// public void toLogin(HttpServletRequest req, HttpServletResponse resp) {
// //一定是阿贾克斯的data部分,根据属性接收属性值
// String username = req.getParameter("username");
// String password = req.getParameter("password");
// System.out.println("用户名的值为:"+username+";密码的值为:"+password);
// //不用考虑中文乱码问题
// }
/**
* 用户登录功能
*/
public void toLogin(HttpServletRequest req, HttpServletResponse resp) {
//记得修改访问权限标识符 private -> public
//接收前端传的用户名的值
String username = req.getParameter("username");
//接收前端传的密码的值
String password = req.getParameter("password");
System.out.println("用户名的值为:"+username+";密码的值为:"+password);
//获取容器对象,把相关数据存放在集合当中
// getUsers(); //现放到service函数当中
//定义一个标识,判断输入的用户名和密码是否合法
boolean flag = false;
//遍历集合对象
for(User user:users){
if(user.getUsername().equals(username) && user.getPassword().equals(password)){
//用户名和密码必须都相等才可以登录成功
flag=true;
}
}
if(flag==true){
try {
resp.getWriter().print("true");
} catch (Exception e) {
e.printStackTrace();
}
}
else{
try {
resp.getWriter().print("false");
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 用集合模拟一个容器
*/
public ArrayList<User> getUsers(){//写ArrayList<User>不用强转,写List需要
/*这样写不太规范,因为功能很多,都写在一个方法里不规范。
* 不要把所有功能写在一个方法里
*/
//创建用户对象
User user1 = new User();
user1.setUsername("张三");
user1.setPassword("123456");
User user2 = new User("韩信","qwe123");
User user3 = new User("百里守约","qwe123");
User user4 = new User("百里玄策","434544");
User user5 = new User("李白","ssddd");
User user6 = new User("貂蝉","www111");
User user7 = new User("吕布","30222");
//把用户对象装进容器
users.add(user1);
users.add(user2);
users.add(user3);
users.add(user4);
users.add(user5);
users.add(user6);
users.add(user7);
return users;//测试用
}
}
- register.jsp
<%--
Created by IntelliJ IDEA.
User: nosteglic
Date: 2021/1/3
Time: 16:23
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
//写java代码,因为js底层是java
//定义绝对路径地址
String contextPath = request.getContextPath();
%>
<html>
<head>
<title>注册界面</title>
</head>
<!-- 引入jquery控件 -->
<script src="<%=contextPath%>/jquery/jquery-1.7.2.js"></script>
<script>
function register(){
//判断两次输入的密码是否相同
var password = $("[name='password']").val()
var password2 = $("[name='password2']").val()
if(password == password2){
$.ajax({
//提交到后端的地址
url : "http://localhost:8080/login?method=register",
//提交到后端,实现注册功能
//提交的类型
type : "post",
//提交到后端的数据
data : {
//属性过滤选择器
username:$("[name='username']").val(),
password:$("[name='password']").val(),
},
//回调函数,obj接收参数
success : function (obj){
if(obj){
alert("注册成功");
location.href="http://localhost:8080/jsp/login.jsp"
}
else{
alert("注册失败!有问题请联系管理员!!!")
}
},
//返回的数据类型
dataType : "json"
})
}
else{
alert("两次输入的密码不一致")
}
}
</script>
<body>
<h1 align="center">用户注册界面</h1>
<!-- 通过问号?拼接一个method属性-->
<!-- 表格标签 -->
<table border="1px" bgcolor="pink" align="center">
<tr>
<td>用户名:</td>
<td><input type="text" id="username" name="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td>确认密码:</td>
<td><input type="password" name="password2"></td>
</tr>
<tr>
<td colspan="5" align="center">
<input type="button" value="注册" onclick="register()">
</td>
</tr>
</table>
</body>
</html>
- 其他不变
该博客介绍了如何使用Servlet和Ajax实现用户注册与登录功能。通过在后台创建一个静态ArrayList来模拟数据库,存储User对象。用户注册时,前端通过Ajax异步提交数据,验证并添加到集合中。登录功能则遍历集合,比较用户名和密码,返回登录结果。整个过程涉及到前端Ajax请求、后端Servlet处理以及简单的数据验证。
822

被折叠的 条评论
为什么被折叠?



