目录
一.用户登录
需求:用户输入账号和密码,后端进行校验密码是否正确
约定前后端交互接口
接口定义
首页登录
查询登录用户接口
二.前端缓存的处理
三.留言板
约定前后端交互接口
接口定义
1.获取全部留言信息
2.发表新留言
前端代码
3.发生问题如何排除故障
四.企业项目开发流程
摘要:本文系统介绍了四个典型的Web开发实践案例:1)用户登录功能,包括前后端接口设计、Session管理及完整的前后端实现代码;2)前端缓存处理的基本方法;3)留言板系统的完整开发流程,涵盖接口定义、数据存储和前端交互;4)企业级项目开发的标准流程。文章通过具体的代码示例和接口设计,为初学者提供了从需求分析到功能实现的完整参考。
一.用户登录
需求:用户输入账号和密码,后端进行校验密码是否正确

约定前后端交互接口
需求分析
对于后端开发人员而言,不涉及前端页面的展示,只需要提供两个功能
接口定义
首页登录
1.校验接口
请求参数
| 参数名 | 类型 | 是否必须 | 备注 |
| userName | String | 是 | 校验登录的账号 |
| passWord | String | 是 | 校验登录的密码 |
响应数据
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class UserController {
@RequestMapping("/login")
public Boolean login(String userName,String passWord){
if(!StringUtils.hasLength(userName)||!StringUtils.hasLength(passWord)){
return false;
}
if("admin".equals(userName)&&"admin".equals(passWord)){
return true;
}
return false;
}
}
测试接口




查询登录用户接口
请求参数:
无
响应数据:
@RequestMapping("/getLoginUser")
public String getLoginUSer(HttpSession session){
return session.getAttribute("username").toString();
}
测试

前端代码
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head>
<body>
<h1>用户登录</h1>
用户名:<input name="userName" type="text" id="userName"><br>
密码:<input name="password" type="password" id="password"><br>
<input type="button" value="登录" onclick="login()">
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
function login() {
$.ajax({
type:"post",
url:"/user/login",
data:{
"userName":$("#userName").val(),
"passWord":$("#password").val()
},
success:function(result){
if(result){
location.href="/index.html"
}else{
alert("账号或密码错误")
}
}
});
}
</script>
</body>
</html>

页面跳转的三种方式:
以上写法通常把"window"省略
调整首页代码
首页代码比较简单,只显示当前登录用户即可
当前登录用户需要从后端获取,并显示到前端
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>用户登录首页</title>
</head>
<body>
登录人: <span id="loginUser"></span>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
$.ajax({
type:"get",
url:"/user/getLoginUser",
success:function(result){
$("#loginUser").text(result)
}
});
</script>
</body>
</html>
Session存在内存中,如果不做任何处理,默认服务器重启.Session数据就丢失了
二.前端缓存的处理

三.留言板
需求:
界面如下图所示

约定前后端交互接口
需求分析
后端需要提供两个服务
1.提交留言:用户输入留言信息之后,后端需要把留言信息保存起来
2.展示留言:页面展示时,需要从后端获取到所有的留言信息
接口定义
1.获取全部留言信息
请求:
get
/message/getList
响应:JSON格式
[
{ "from": "⿊猫",
"to": "⽩猫",
"message": "喵" },
{ "from": "⿊狗",
"to": "⽩狗",
"message": "汪" },
//… ]
@RequestMapping("/getList")
public List<message> getList(){
return list;
}
2.发表新留言
请求:body也为JSON格式
响应
@RequestMapping("/publish")
public Boolean publish(@RequestBody message data){
if(StringUtils.hasLength(data.getMessage())
&&StringUtils.hasLength(data.getTo())
&&StringUtils.hasLength(data.getFrom())){
list.add(data);
return true;
}
return false;
}
前端代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>留言板</title>
<style>
.container {
width: 350px;
height: 300px;
margin: 0 auto;
/* border: 1px black solid; */
text-align: center;
}
.grey {
color: grey;
}
.container .row {
width: 350px;
height: 40px;
display: flex;
justify-content: space-between;
align-items: center;
}
.container .row input {
width: 260px;
height: 30px;
}
#submit {
width: 350px;
height: 40px;
background-color: orange;
color: white;
border: none;
margin: 10px;
border-radius: 5px;
font-size: 20px;
}
</style>
</head>
<body>
<div class="container">
<h1>留言板</h1>
<p class="grey">输入后点击提交, 会将信息显示下方空白处</p>
<div class="row">
<span>谁:</span> <input type="text" name="" id="from">
</div>
<div class="row">
<span>对谁:</span> <input type="text" name="" id="to">
</div>
<div class="row">
<span>说什么:</span> <input type="text" name="" id="say">
</div>
<input type="button" value="提交" id="submit" onclick="submit()">
<!– <div>A 对 B 说: hello</div> –>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
$.ajax({
type: "get",
url: "/message/getList",
success: function (messages) {
// for (let index = 0; index < messages.length; index++) {
// const element = messages[index];
// }
for (let msg of messages) {
let divE = "<div>" + msg.from + "对" + msg.to + "说:" + msg.message + "</div>";
//3. 把节点添加到页面上
$(".container").append(divE);
}
}
});
function submit() {
//1. 获取留言的内容
var from = $('#from').val();
var to = $('#to').val();
var say = $('#say').val();
if (from == '' || to == '' || say == '') {
return;
}
//调用后端, 存储信息
$.ajax({
type: "post",
url: "/message/publish",
contentType: "application/json",
data: JSON.stringify({
from: from,
to: to,
message: say
}),
success: function (result) {
if (result) {
//2. 构造节点
var divE = "<div>" + from + "对" + to + "说:" + say + "</div>";
//3. 把节点添加到页面上
$(".container").append(divE);
//4. 清空输入框的值
$('#from').val("");
$('#to').val("");
$('#say').val("");
} else {
alert("添加留言失败");
}
}
});
}
</script>
</body>
</html>

3.发生问题如何排除故障

四.企业项目开发流程
1)方案设计(概要设计,详细设计,数据库设计,接口设计)
2)方案review
3)开发
4)自测
3.提测
4.联调
5.上线




