一、写在开头
项目中所使用的ui设计,都依据个人爱好设计,各位小伙伴可以根据需要自行设计
一个项目专注的应该是逻辑的实现,逻辑业务的实现占据项目的70%以上,具体写代码的时间20%左右即可
实在不知道ui如何写的小伙伴,可以尝试使用ai,像文心一言、千问等等。编写一个简单的html结构和css样式不在话下
在文章的最末尾,我会为大家演示如何使用ai为我们编写css样式和html结构。
二、项目开始
1)项目的主入口(index.html)
如你所见,我将需要用到的几个登录入口放在index.html页面中,在不打开服务器的情况下也可以看见,每一个入口使用用a标签实现跳转,跳转到指定的jsp页面或者servlet处理过后的jsp页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>首页</title>
<style>
*{
margin: 0;
padding: 0;
}
body{
background-color: #f4f4f4;
}
.container{
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.container p{
font-size: 25px;
}
.container .box{
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.box {
margin-top: 10px;
border: 1px solid #ccc;
padding: 30px;
}
.box-item{
width: 150px;
height: 25px;
line-height: 25px;
background-color: #2980b9;
margin: 10px 0;
text-align: center;
font-size: 20px;
}
.box-item a{
text-decoration: none;
color: white;
}
</style>
</head>
<body>
<div class="container">
<h1>欢迎来到图书管理系统</h1>
<p>请选择你要查询的选项:</p>
<div class="box">
<div class="box-item">
<a href="index.jsp">图书查询</a>
</div>
<div class="box-item">
<a href="BorrowServlet">借阅记录查询</a>
</div>
<div class="box-item">
<a href="login.jsp">点击登录</a>
</div>
<div class="box-item">
<a href="loginVIP.jsp">管理员登录</a>
</div>
<div class="box-item">
<a href="register.jsp">点击注册</a>
</div>
</div>
</div>
</body>
</html>
这里,我的设想是,用户在未登录的情况下,可以使用图书查询和借阅记录查询,其余的需要登录才能看到
2)点击登录按钮(login.jsp)
点击 登录按钮,跳转到上面的页面,上图的代码样式如下
jsp页面结构
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图书管理——登录</title>
<link rel="stylesheet" href="css/should.css"/>
</head>
<body>
<div class="login-container">
<div class="login-form">
<h2>图书管理系统</h2>
<form action="LoginServlet" method="post">
<div class="input-group">
<label for="username">用户名</label>
<input type="text"
id="username"
name="username"
placeholder="请输入用户名"
required
/>
</div>
<div class="input-group">
<label for="password">密码</label>
<input
placeholder="请输入密码"
type="password"
id="password"
name="password"
required
/>
</div>
<button type="submit">登录</button>
<a href="register.jsp">没有账号?点击注册</a>
<a href="loginVIP.jsp" >点击使用管理员账号登录</a>
</form>
</div>
</div>
<c:if test="${not empty errorString}">
<script>alert('${errorString}');</script>
</c:if>
</body>
</html>
如果用户登录失败,我们应该给出提示,我这里只做简单的alert弹窗提示,小伙伴们可以封装一个提示框组件
使用到的css样式
/* 基础样式 */
*{
margin: 0;
padding: 0;
}
body {
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background: url("../images/bg.jpg") no-repeat ;
background-size: cover;
}
/* 登录容器样式 */
.login-container {
width: 400px;
border: 2px solid #3498db;
border-radius: 10px;
padding: 2rem;
}
/* 表单标题 */
.login-form h2 {
text-align: center;
color: #3498db;
margin-bottom: 2rem;
}
/* 输入框组样式 */
.input-group {
margin-bottom: 1.5rem;
}
.input-group label {
display: block;
margin-bottom: 0.5rem;
}
.input-group input {
width: 100%;
padding: 0.8rem;
border: 1px solid #ddd;
border-radius: 5px;
}
/* 提交按钮样式 */
button {
width: 106%;
padding: 0.6rem;
border: none;
border-radius: 5px;
background-color: #3498db;
color: white;
cursor: pointer;
font-size: 1rem;
}
button:hover {
background-color: #2980b9;
}
a{
margin-top: 0.3rem;
text-decoration: none;
margin-left: 20px !important;
}
3)管理员登录入口(loginVIP.jsp)
jsp页面结构和css样式与登录入口一致,改一下相应的文字即可
4)注册入口(register.jsp)
jsp页面结构
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图书管理——注册</title>
<link rel="stylesheet" href="css/should.css" />
<style>
.login-container{
width: 600px;
}
.input-group{
display: inline-block;
}
.input-group input{
width: 80%;
}
button{
width: 100%;
}
</style>
</head>
<body>
<div class="login-container">
<div class="login-form">
<h2>图书管理系统</h2>
<form action="RegisterServlet" method="post">
<div class="input-group">
<label for="username">用户名</label>
<input type="text"
id="username"
name="username"
placeholder="请输入用户名"
required
/>
</div>
<div class="input-group">
<label for="password">密码</label>
<input
placeholder="请输入密码"
type="password"
id="password"
name="password"
required
/>
</div>
<div class="input-group">
<label for="name">真实姓名</label>
<input
placeholder="请输入真实姓名"
type="text"
id="name"
name="name"
required
max="10"
/>
</div>
<div class="input-group">
<label for="id_car">身份证号</label>
<input
placeholder="请输入身份证号"
type="text"
id="id_car"
name="id_car"
required
max="18"
/>
</div>
<div class="input-group">
<label for="phone_num">手机号码</label>
<input
max="11"
placeholder="请输入手机号码"
type="text"
id="phone_num"
name="phone_num"
required
/>
</div>
<button type="submit">注册</button>
<a href="login.jsp">已有账号?点击返回</a>
</form>
</div>
</div>
<c:if test="${not empty errorString}">
<script>alert('${errorString}');</script>
</c:if>
</body>
</html>
css样式
/* 基础样式 */
*{
margin: 0;
padding: 0;
}
body {
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background: url("../images/bg.jpg") no-repeat ;
background-size: cover;
}
/* 登录容器样式 */
.login-container {
width: 400px;
border: 2px solid #3498db;
border-radius: 10px;
padding: 2rem;
}
/* 表单标题 */
.login-form h2 {
text-align: center;
color: #3498db;
margin-bottom: 2rem;
}
/* 输入框组样式 */
.input-group {
margin-bottom: 1.5rem;
}
.input-group label {
display: block;
margin-bottom: 0.5rem;
}
.input-group input {
width: 100%;
padding: 0.8rem;
border: 1px solid #ddd;
border-radius: 5px;
}
/* 提交按钮样式 */
button {
width: 106%;
padding: 0.6rem;
border: none;
border-radius: 5px;
background-color: #3498db;
color: white;
cursor: pointer;
font-size: 1rem;
}
button:hover {
background-color: #2980b9;
}
a{
margin-top: 0.3rem;
text-decoration: none;
margin-left: 20px !important;
}
5)图书查询入口(index.jsp)
jsp页面结构
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图书管理系统</title>
<link rel="stylesheet" href="css/index.css"/>
</head>
<body>
<div class="header">图书管理系统</div>
<a class="login-btn" href="login.jsp">点击登录</a>
<div class="search-container">
<form action="notLoginResultServlet" method="get">
<label>
<input type="text" name="book-name" class="search-input" placeholder="请输入搜索的图书名称"/>
</label>
<button class="search-btn" type="submit">搜索</button>
</form>
</div>
</body>
</html>
css样式
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f5f5f5;
}
.header {
background-color: #2980b9;
color: white;
padding: 1rem;
text-align: center;
font-size: 24px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.login-btn {
position: absolute;
top: 1rem;
right: 1rem;
background-color: skyblue;
color: white;
border: none;
border-radius: 5px;
padding: 0.5rem 1rem;
cursor: pointer;
}
.search-container {
display: flex;
justify-content: center;
align-items: center;
height: calc(100vh - 200px);
}
.search-input {
width: 400px;
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
font-size: 16px;
}
.search-btn {
background-color: #2980b9;
color: white;
border: none;
border-radius: 5px;
padding: 10px 15px;
cursor: pointer;
margin-left: 10px;
}
a{
text-decoration: none !important;
}
.active{
color: cyan;
}
6)借阅记录查询入口(BorrowServlet)
这里与别处不同的地方在于,此入口先跳转到servlet处理,拿到数据中的数据,在跳转到jsp页面
jsp结构和css样式我将在下一节当中与图书查询一起讲解
这里的逻辑处理基本类型,大家只要明白一个地方,照葫芦画瓢即可
三、最后
为实在不会写样式的小伙伴演示如何通过ai来编写
下面我们拿千问举例
我们在项目会大量使用到分页器组件,大家如果不会写的话,看下面的演示
比如说我想要一个分页器组件,就可以这么说
注意
为什么和小伙伴们说这个呢,可以看到的是,ai可以大大提高我们的生产效率,复杂的css样式其实很消耗大家的精力,使用ai可以将这部分精力减少,让我们专注业务逻辑的实现。
当然,写在ai的能力还没有办法实现非常复杂的业务,但是假以时日,通过训练,ai的能力会有很大的提高,我们能做的就是不断提高我们的技术水平,把ai当成工具