当前位置: 首页 > article >正文

【Java基础系列】JavaWeb入门

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 一.基础介绍
      • 1.什么是 javaWeb?
      • 2.JavaWeb 组件和技术
      • 3.什么是 Tomcat?
    • 二.基础准备
      • 1.新建项目
      • 2.设置项目信息
      • 3.web 支持
      • 4.web application 支持
      • 5.添加依赖
      • 6.Add As Library
    • 三.业务代码
      • 1.业务层
      • 2.数据层
      • 3.数据库脚本
    • 四.jsp 页面
      • 1.index 页面
      • 2.登录页面
      • 3.登录成功页面
      • 4.失败页面
    • 五.配置 tomcat
      • 1.本机安装 tomcat
      • 2.配置 tomcat
      • 3.启动项目
      • 4.访问项目

一.基础介绍

1.什么是 javaWeb?

JavaWeb 是一种使用 Java 编程语言开发 Web 应用程序的技术体系。它是建立在 Java 平台上的一组技术和规范,用于创建动态、交互性和可扩展的 Web 应用程序。JavaWeb 通常涉及到使用 Java Servlet、JavaServer Pages(JSP)、JavaBeans、Enterprise JavaBeans(EJB)等技术。

JavaWeb 技术的使用使开发者能够构建功能强大、可维护和可扩展的 Web 应用程序。这些应用程序可以在各种 Web 服务器上运行,并能够与数据库、其他 Web 服务以及其他企业级系统进行交互。

2.JavaWeb 组件和技术

以下是一些 JavaWeb 中常用的关键组件和技术:

  1. Java Servlet: Java Servlet 是在服务器端执行的 Java 程序,用于处理 Web 请求和生成动态的 Web 内容。它们通常被用于处理表单提交、用户身份验证等任务。

  2. JavaServer Pages(JSP): JSP 是一种在 HTML 页面中嵌入 Java 代码的技术,用于简化动态 Web 页面的创建。JSP 页面可以包含 Java 代码、HTML 标签和特定的 JSP 标签。

  3. JavaBeans: JavaBeans 是可重用的 Java 组件,用于在 JavaWeb 应用程序中实现业务逻辑和数据管理。它们通常被用于封装和管理应用程序中的数据。

  4. Enterprise JavaBeans(EJB): EJB 是一种服务器端组件模型,用于构建分布式的企业级应用程序。它提供了一种规范,定义了组件之间的交互方式,包括事务管理、安全性等。

  5. Java Database Connectivity(JDBC): JDBC 是 Java 用于与数据库交互的 API。在 JavaWeb 应用程序中,通过 JDBC 可以实现与数据库的连接、查询和更新操作。

  6. JavaServer Faces(JSF): JSF 是 Java 的一个 Web 应用程序框架,用于简化用户界面的开发。它提供了一组组件和标签,使得构建用户界面更加容易。

3.什么是 Tomcat?

Apache Tomcat(通常简称为 Tomcat)是一个开源的、轻量级的 Java Servlet 容器,也可以作为一个独立的 Web 服务器运行。它是 Apache 软件基金会的一个项目,用于实现和提供 Java Servlet 和 JavaServer Pages(JSP)技术的开发和部署环境。

以下是一些关键特点和功能:

  1. Servlet 容器: Tomcat 充当 Java Servlet 的容器,负责管理和执行 Servlet 程序。Servlet 是在服务器端运行的 Java 程序,用于处理 Web 请求和生成动态的 Web 内容。

  2. JSP 容器: Tomcat 还作为 JSP 容器,支持执行 JavaServer Pages。JSP 是一种在 HTML 页面中嵌入 Java 代码的技术,用于简化动态 Web 页面的开发。

  3. 独立 Web 服务器: 虽然 Tomcat 最初是设计用于运行 Servlet 和 JSP,但它也可以作为一个独立的 Web 服务器使用。它支持基本的 HTTP 服务,并且可以处理静态内容。

  4. 开源: Tomcat 是一个开源项目,这意味着它的源代码是公开可用的,并且开发者可以自由地使用、修改和分发它。

  5. 可扩展性: Tomcat 具有良好的可扩展性,支持通过插件(如 Valve 和 Realm)扩展其功能。这使得开发者可以根据应用程序的需求进行定制和扩展。

  6. 跨平台: Tomcat 是跨平台的,可以在多种操作系统上运行,包括 Windows、Linux 和 macOS 等。

由于其轻量级、灵活性和开源性质,Tomcat 被广泛用于 JavaWeb 应用程序的开发和部署。它通常与其他 Java 技术(如 Java EE 或 Spring 框架)一起使用,以构建完整的企业级 Web 应用程序。

二.基础准备

1.新建项目

打开 IDEA,单击“New Project”或者通过 File–>new–>Project,在弹出的对话框中输入项目名称,其它的默认选择,点击 finish 按钮

image-20231207134542931

2.设置项目信息

image-20231207134915490

3.web 支持

为项目添加 Web 框架支持,右键单击创建的项目,点击 Add Framework Support,在弹出的对话框中勾选 Web Application(4.0)及 Create web.xml 复选框,单击“OK”按钮,完成添加。

image-20231207135046260

4.web application 支持

image-20231207134943926

5.添加依赖

添加依赖包,右键单击 WEB-INF 文件夹,在弹出的对话框中选择 New–>Directory 命令,创建 lib 文件夹。

mysql-connector-j-8.2.0.jar 是 mysql 相关的连接包,如果不需要 mysql,可以不要这个包

servlet-api.jar servlet 依赖包

servlet-api.jar

image-20231207140130413

6.Add As Library

在 servlet-api.jar 文件上右击鼠标,选择 Add As Library,将 jar 包添加到 Library 中

image-20231207140224711

三.业务代码

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.数据层


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();
            }
        }
    }
}

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')
;

四.jsp 页面

1.index 页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>首页</title>
</head>
<body>
首页
</body>
</html>

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>

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>

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>

五.配置 tomcat

1.本机安装 tomcat

下载地址

image-20231207140421099

2.配置 tomcat

image-20231207135420028

3.启动项目

image-20231207135436921

4.访问项目

通过访问如下页面可以到达登录页面

http://localhost:8080/webProject_war_exploded/Login.jsp

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img


http://www.kler.cn/a/160911.html

相关文章:

  • 中兴光猫修改SN,MAC,修改地区,异地注册,改桥接,路由拨号
  • 基于TI AM62A+FPGA实现FPDLINK III车载摄像头解决方案
  • uniapp(API-Promise 化)
  • 【大数据学习 | HBASE】hbase的读数据流程与hbase读取数据
  • OpenGL 进阶系列07 - 阴影贴图(shadowmap )
  • ARXML汽车可扩展标记性语言规范讲解
  • Linux CentOS本地部署SQL Server数据库结合cpolar内网穿透实现公网访问
  • 编译器和 IR:LLVM IR、SPIR-V 和 MLIR
  • QT linux下使用Qt Creator调试附加进程,加快调试
  • 大量 SVG 图标在 React 中的极速集成与应用
  • Windows精品必备工具,总有一款适合你
  • cesium 融合视频
  • Redis 数据的持久化 RDB、AOF、RDB + AOF、No persistence 各自优缺点
  • 程序员如何开发高级python爬虫?
  • 从零开始,利用ChatGPT学会写作的完整指南
  • idea报错——Access denied for user ‘root‘@‘localhost‘ (using password: YES)
  • 使用xshell连接虚拟机(服务器)
  • 阿里云Arthas使用——通过watch命令查看类的返回值 捞数据出来
  • 用C语言实现链栈的基本操作
  • 封装了一个顺滑嵌套滚动的框架
  • 结构体和链表例题2
  • 浏览器开发者工具使用(F12)
  • Redis中持久化策略RDB与AOF优缺点对比
  • 解锁全球潜力:IT外包解决跨国企业海外分支的IT需求
  • 软件测试外包干了2个月,技术进步2年。。。
  • 云主机存储类型、AZ讲解