# 一.基础介绍
# 1.什么是 javaWeb?
JavaWeb 是一种使用 Java 编程语言开发 Web 应用程序的技术体系。它是建立在 Java 平台上的一组技术和规范,用于创建动态、交互性和可扩展的 Web 应用程序。JavaWeb 通常涉及到使用 Java Servlet、JavaServer Pages(JSP)、JavaBeans、Enterprise JavaBeans(EJB)等技术。
JavaWeb 技术的使用使开发者能够构建功能强大、可维护和可扩展的 Web 应用程序。这些应用程序可以在各种 Web 服务器上运行,并能够与数据库、其他 Web 服务以及其他企业级系统进行交互。
# 2.JavaWeb 组件和技术
以下是一些 JavaWeb 中常用的关键组件和技术:
Java Servlet: Java Servlet 是在服务器端执行的 Java 程序,用于处理 Web 请求和生成动态的 Web 内容。它们通常被用于处理表单提交、用户身份验证等任务。
JavaServer Pages(JSP): JSP 是一种在 HTML 页面中嵌入 Java 代码的技术,用于简化动态 Web 页面的创建。JSP 页面可以包含 Java 代码、HTML 标签和特定的 JSP 标签。
JavaBeans: JavaBeans 是可重用的 Java 组件,用于在 JavaWeb 应用程序中实现业务逻辑和数据管理。它们通常被用于封装和管理应用程序中的数据。
Enterprise JavaBeans(EJB): EJB 是一种服务器端组件模型,用于构建分布式的企业级应用程序。它提供了一种规范,定义了组件之间的交互方式,包括事务管理、安全性等。
Java Database Connectivity(JDBC): JDBC 是 Java 用于与数据库交互的 API。在 JavaWeb 应用程序中,通过 JDBC 可以实现与数据库的连接、查询和更新操作。
JavaServer Faces(JSF): JSF 是 Java 的一个 Web 应用程序框架,用于简化用户界面的开发。它提供了一组组件和标签,使得构建用户界面更加容易。
# 3.什么是 Tomcat?
Apache Tomcat(通常简称为 Tomcat)是一个开源的、轻量级的 Java Servlet 容器,也可以作为一个独立的 Web 服务器运行。它是 Apache 软件基金会的一个项目,用于实现和提供 Java Servlet 和 JavaServer Pages(JSP)技术的开发和部署环境。
以下是一些关键特点和功能:
Servlet 容器: Tomcat 充当 Java Servlet 的容器,负责管理和执行 Servlet 程序。Servlet 是在服务器端运行的 Java 程序,用于处理 Web 请求和生成动态的 Web 内容。
JSP 容器: Tomcat 还作为 JSP 容器,支持执行 JavaServer Pages。JSP 是一种在 HTML 页面中嵌入 Java 代码的技术,用于简化动态 Web 页面的开发。
独立 Web 服务器: 虽然 Tomcat 最初是设计用于运行 Servlet 和 JSP,但它也可以作为一个独立的 Web 服务器使用。它支持基本的 HTTP 服务,并且可以处理静态内容。
开源: Tomcat 是一个开源项目,这意味着它的源代码是公开可用的,并且开发者可以自由地使用、修改和分发它。
可扩展性: Tomcat 具有良好的可扩展性,支持通过插件(如 Valve 和 Realm)扩展其功能。这使得开发者可以根据应用程序的需求进行定制和扩展。
跨平台: Tomcat 是跨平台的,可以在多种操作系统上运行,包括 Windows、Linux 和 macOS 等。
由于其轻量级、灵活性和开源性质,Tomcat 被广泛用于 JavaWeb 应用程序的开发和部署。它通常与其他 Java 技术(如 Java EE 或 Spring 框架)一起使用,以构建完整的企业级 Web 应用程序。
# 二.基础准备
# 1.新建项目
打开 IDEA,单击“New Project”或者通过 File–>new–>Project,在弹出的对话框中输入项目名称,其它的默认选择,点击 finish 按钮
# 2.设置项目信息
# 3.web 支持
为项目添加 Web 框架支持,右键单击创建的项目,点击 Add Framework Support,在弹出的对话框中勾选 Web Application(4.0)及 Create web.xml 复选框,单击“OK”按钮,完成添加。
# 4.web application 支持
# 5.添加依赖
添加依赖包,右键单击 WEB-INF 文件夹,在弹出的对话框中选择 New–>Directory 命令,创建 lib 文件夹。
mysql-connector-j-8.2.0.jar 是 mysql 相关的连接包,如果不需要 mysql,可以不要这个包
servlet-api.jar servlet 依赖包
servlet-api.jar
# 6.Add As Library
在 servlet-api.jar 文件上右击鼠标,选择 Add As Library,将 jar 包添加到 Library 中
# 三.业务代码
# 1.业务层
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
// 设置请求的字符编码为UTF-8
request.setCharacterEncoding("UTF-8");
// 获取页面上输入的用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
// 调用 DBOperator 类来验证用户
boolean userExists = DBOperator.setUserInfo(username, password);
// 设置响应内容类型
response.setContentType("text/html;charset=UTF-8");
if (userExists) {
request.getSession().setAttribute("username", username);
response.sendRedirect("success.jsp");
} else {
request.getSession().setAttribute("username", username);
response.sendRedirect("fail.jsp");
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 2.数据层
public class DBOperator {
/**
* JDBC连接数据库的相关信息
*/
private static final String JDBC_URL = "jdbc:mysql://localhost:3306/student_system_db";
private static final String JDBC_USER = "root";
private static final String JDBC_PASSWORD = "123456";
/**
* 验证用户信息的方法
*
* @param username
* @param password
* @return
*/
public static boolean setUserInfo(String username, String password) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
// 加载JDBC驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立数据库连接
connection = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);
// 使用预编译语句查询用户信息
String query = "SELECT * FROM student WHERE username = ? AND password = ?";
preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, username);
preparedStatement.setString(2, password);
// 执行查询
resultSet = preparedStatement.executeQuery();
// 如果查询结果非空,则表示用户存在
return resultSet.next();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
return false;
} finally {
try {
if (resultSet != null) {
resultSet.close();
}
if (preparedStatement != null) {
preparedStatement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# 3.数据库脚本
CREATE
database student_system_db;
use
student_system_db;
CREATE TABLE student_system_db.student
(
id char(10),
username nvarchar(8),
password char(20)
);
INSERT INTO student_system_db.student
(id, username, password)
VALUES ('190504582', '公孙丽', 'gs123')
, ('330504422', '王翰', 'wang24')
;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 四.jsp 页面
# 1.index 页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>首页</title>
</head>
<body>
首页
</body>
</html>
2
3
4
5
6
7
8
9
# 2.登录页面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login Page</title>
</head>
<body>
<h2>Login Page</h2>
<form action="LoginServlet" method="post" accept-charset="UTF-8">
Username: <input type="text" name="username"><br>
Password: <input type="password" name="password"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 3.登录成功页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>登录成功</title>
</head>
<body>
<h2>登录成功!欢迎 <%= session.getAttribute("username") %>!</h2>
</body>
</html>
2
3
4
5
6
7
8
9
10
# 4.失败页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>登录失败</title>
</head>
<body>
<h2>登录失败,用户名 <%= session.getAttribute("username") %> 不存在,请重新登录。</h2>
</body>
</html>
2
3
4
5
6
7
8
9
10
# 五.配置 tomcat
# 1.本机安装 tomcat
# 2.配置 tomcat
# 3.启动项目
# 4.访问项目
通过访问如下页面可以到达登录页面
http://localhost:8080/webProject_war_exploded/Login.jsp