使用Ajax完成注册和登录

简介

完成用户的登录和注册,以及个人信息的查询,并使用Ajax向后端提交JSON格式的数据。AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。而JSON是一种轻量级的数据交换格式, 易于人阅读和编写,同时也易于机器解析和生成。

实现

控制器

@Autowired注解负责完成服务层成员变量的自动装配。
@RequestBody注解负责将前端发送过来的JSON数据封装到用户对象之中,以方便后端获取数据。
@ResponseBody注解负责给前端返回JSON数据对象。

package com.qj.web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.qj.model.User;
import com.qj.model.UserInfo;
import com.qj.service.UserInfoService;
import com.qj.service.UserService;

@Controller
@RequestMapping("/user1")
public class UserController1 {

	@Autowired
	private UserService userService;
	@Autowired
	private UserInfoService userInfoService;

	@ResponseBody
	@RequestMapping("/login")
	public User login(@RequestBody User user) {
		String name = user.getUserName();
		String password = user.getUserPassword();
		User user1 = userService.selectByName(name);
		// 判断用户是否存在
		if (user1 != null) {
			// 判断密码是否相等
			if (password.equals(user1.getUserPassword())) {
				return user1;
			}
		}
		return null;
	}

	@ResponseBody
	@RequestMapping("/register")
	public User register(@RequestBody User user) {
		User user1 = userService.selectByName(user.getUserName());
		// 判断用户是否已经注册
		if (user1 == null) {
			int i = userService.insert(user);
			// 判断用户是否注册成功
			if (i > 0) {
				UserInfo userInfo = user.getUserInfo();
				int id = user.getUserId();
				userInfo.setUserId(id);
				// 添加用户信息
				int i1 = userInfoService.insert(userInfo);
				if (i1 > 0) {
					return user;
				}
			}
		} else {
			// 如果用户已经注册,直接返回数据
			return user1;
		}
		return null;
	}

	@ResponseBody
	@RequestMapping("/show")
	public User show(String userName) {
		// 查询用户
		User user = userService.selectByName(userName);
		System.out.println(user);
		if (user != null) {
			return user;
		}
		return null;
	}
}

登录

得到输入框内的登录信息,并将其转换为JSON字符串,并使用Ajax提交用户登录信息,最终得到后端响应给前端的验证结果。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录页面</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js" ></script>
<script>
	function login() {
		// 获取用户名和密码
		var name = $("#name").val();
		var password = $("#password").val();
		$.ajax({
			url : "user1/login",
			type : "post",
			// data表示发送的数据
			data : JSON.stringify({
				userName : name,
				userPassword : password
			}),
			// 定义发送请求的数据格式为JSON字符串
			contentType : "application/json;charset=UTF-8",
			//定义回调响应的数据格式为JSON字符串,该属性可以省略
			dataType : "json",
			//成功响应的结果
			success : function(data) {
				if (data != null) {
					location.href = "show.html";
				}
			}
		});
	}
</script>
</head>
<body>
	<form>
		姓名:<input type="text" id="name" /> <br>
		密码:<input type="password" id="password" /><br> 
		<input type="button" value="确定" onclick="login()" />&nbsp;&nbsp;&nbsp; 
		<input type="reset" value="取消" />
	</form>
</body>
</html>
注册

注册与登录类似。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册页面</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
	function register(){
		var name = $("#name").val();
		var password = $("#password").val();
		var phone = $("#phone").val();
		var address = $("#address").val();
		$.ajax({
			type : "post",
			url : "user1/register",
			data : JSON.stringify({userName : name, userPassword : password, userInfo : {userPhone : phone, userAddress: address }}),
			contentType : "application/json;charset=utf-8",
			dataType : "json",
			success : function(data){
				if (data != null){
					alert("注册成功!");
					location.href="login.html";
				}
			}
		});
	}
</script>
</head>
<body>
	<form>
		姓名:<input type="text" id="name" /> <br> 
		密码:<input type="password" id="password" /> <br> 
		电话:<input type="text" id="phone" /> <br> 
		地址:<input type="text" id="address" /> <br>
		<input type="button" value="确定" onclick="register()"/>&nbsp;&nbsp;&nbsp; 
		<input type="reset" value="取消" />
	</form>
</body>
</html>
信息查询显示

通过查询用户名,将得到的用户信息以JSON字符串的形式显示在页面中。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户页面</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js" ></script>
<script>
	function show(){
		var userName= $("#userName").val();
		$.ajax({
			type : "get",
			url : "user1/show?userName="+userName,
			dataType : "json",
			success : function(data){
				if (data != null){
					//将用户信息显示在页面中
					var newData = JSON.stringify(data,null,4);
					var show = document.getElementById('show');
					show.innerHTML=newData;
				}
			}
		});
	}
</script>
</head>
<body>
	<form>
		<input type="text" id="userName" />
		<input value="查询" type="button" onclick="show()"/>
	</form>
	<pre><code id="show">显示用户信息</code></pre>
</body>
</html>

总结

相比于表单提交数据,Ajax对于用户的使用体验有良好的把控。比如,在登录场景中,使用Ajax可以实时的对用户的登录信息进行验证,当用户密码错误,只需更正密码即可;而使用表单提交数据,因为页面的跳转和数据的验证都是在后端进行。当用户信息错误,页面相当于进行了刷新,原本已经填写好的其他正确信息都已清空,只得重新填写,浪费时间,没有良好的用户体验。

  • 16
    点赞
  • 148
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Ajax登录注册完整代码: HTML文件: ``` <!DOCTYPE html> <html> <head> <title>Ajax Login and Registration</title> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <script src="js/script.js"></script> </head> <body> <h1>Ajax Login and Registration</h1> <div id="login"> <h2>Login Form</h2> <form id="login-form" method="post"> <label for="login-username">Username:</label> <input type="text" id="login-username" name="username" required> <label for="login-password">Password:</label> <input type="password" id="login-password" name="password" required> <input type="submit" value="Login"> <div id="login-message"></div> </form> </div> <div id="register"> <h2>Registration Form</h2> <form id="register-form" method="post"> <label for="register-username">Username:</label> <input type="text" id="register-username" name="username" required> <label for="register-password">Password:</label> <input type="password" id="register-password" name="password" required> <label for="register-confirmpassword">Confirm Password:</label> <input type="password" id="register-confirmpassword" name="confirmpassword" required> <input type="submit" value="Register"> <div id="register-message"></div> </form> </div> </body> </html> ``` JavaScript文件: ``` $(document).ready(function() { // Login Form $("#login-form").submit(function(event) { event.preventDefault(); var username = $("#login-username").val(); var password = $("#login-password").val(); $.ajax({ url: "login.php", type: "POST", data: { username: username, password: password }, success: function(data) { if (data == "success") { window.location = "dashboard.php"; } else { $("#login-message").html("Invalid username or password."); } } }); }); // Registration Form $("#register-form").submit(function(event) { event.preventDefault(); var username = $("#register-username").val(); var password = $("#register-password").val(); var confirmpassword = $("#register-confirmpassword").val(); if (password != confirmpassword) { $("#register-message").html("Passwords do not match."); return; } $.ajax({ url: "register.php", type: "POST", data: { username: username, password: password }, success: function(data) { if (data == "success") { window.location = "dashboard.php"; } else { $("#register-message").html("Username already exists."); } } }); }); }); ``` PHP文件:(login.php) ``` <?php session_start(); // Check if user is already logged in if (isset($_SESSION["username"])) { echo "success"; exit; } // Check if form is submitted if (isset($_POST["username"]) && isset($_POST["password"])) { // Check if username and password are correct if ($_POST["username"] == "admin" && $_POST["password"] == "password") { $_SESSION["username"] = $_POST["username"]; echo "success"; exit; } else { echo "error"; exit; } } ?> ``` PHP文件:(register.php) ``` <?php session_start(); // Check if user is already logged in if (isset($_SESSION["username"])) { echo "success"; exit; } // Check if form is submitted if (isset($_POST["username"]) && isset($_POST["password"])) { // Check if username already exists if ($_POST["username"] == "admin") { echo "error"; exit; } // Register user $_SESSION["username"] = $_POST["username"]; echo "success"; exit; } ?> ``` 注意:这些代码只是为了演示Ajax登录注册的基本原理,实际上需要进行一些安全性的改进,例如密码加密和输入验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值