【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;@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {// 设置请求的字符编码为UTF-8request.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.mzph.cn/news/204364.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「C++」哈希表的实现(unordered系底层)

&#x1f4bb;文章目录 &#x1f4c4;前言哈希表概念哈希函数 哈希冲突闭散列开散列 &#x1f4d3;总结 &#x1f4c4;前言 unordered系列的关联式容器之所以效率比较高,是因为其底层使用了哈希结构&#xff0c;使其在查找上的时间复杂度几乎减低到了 O ( 1 ) O(1) O(1)。 哈希…

企业ERP软件定制开发的重点|app小程序网站建设

企业ERP软件定制开发的重点|app小程序网站建设 随着企业信息化程度的不断提高&#xff0c;企业资源计划&#xff08;ERP&#xff09;软件成为了现代企业管理的重要工具。然而&#xff0c;由于不同企业的业务流程、组织结构和管理模式各异&#xff0c;现有的通用ERP软件无法完全…

基于若依的ruoyi-nbcio的flowable流程管理系统增加服务任务和我的抄送功能

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 1、增加一个状态字段 wf_copy增加下面两个字段 就用未读已读来区分 2、前端 api接口增加如下&#xff…

IDEA检查项目的jdk版本需要看的地方

IDEA检查项目的jdk版本需要看的地方 1、检查项目结构&#xff0c;如下图所示选择即可 选择了之后打开了如下界面&#xff1a; 下面的三张图全部都要检查选择jdk8的版本 2、进入设置&#xff0c;如下所示&#xff1a; 进入之后&#xff0c;根据下图&#xff0c;挨个选择&#xf…

「海蓝色」海关可视化监管平台,助力海关体系实现规范化程序管理

海关监管是国家对进出境货物、旅客和邮件进行检查和控制的重要机构&#xff0c;其职责是保障国家的安全和经济利益。海关监管的核心目标是防止非法进出境活动&#xff0c;包括走私、偷逃税款等行为。海关监管通过检查和核实货物的品质、数量和价值&#xff0c;确保货物符合相关…

SMART PLC编码器角度测量

编码器角度测量在倒立摆摆杆角度测量上的应用请参考下面文章链接: https://rxxw-control.blog.csdn.net/article/details/131443657https://rxxw-control.blog.csdn.net/article/details/131443657线性模式下编码器旋转圈数和单圈计数值测量可以查看下面文章: https://rxxw…

C语言实现植物大战僵尸(完整版)

实现这个游戏需要Easy_X 这个在我前面一篇C之番外篇爱心代码有程序教你怎么下载&#xff0c;大家可自行查看 然后就是需要植物大战僵尸的素材和音乐&#xff0c;需要的可以在评论区 首先是main.cpp //开发日志 //1导入素材 //2实现最开始的游戏场景 //3实现游戏顶部的工具栏…

关于pycharm代码误删,本地历史恢复

关于pycharm代码误删&#xff0c;本地历史恢复 1.工作中或多或少的出现代码误删&#xff0c;或者其他原因导致我们的辛辛苦苦写的码子没了&#xff0c;一定很着急。 2.我们点击工作目录文件夹或者是项目内鼠标右击&#xff0c;找到local history 然后选择show history,就可以…

Python3+RIDE+RobotFramework自动化测试框架搭建过程详解

一、Python安装 最新版Python下载地址&#xff1a;https://www.python.org/ 根据操作系统选择对应版本制品下载安装即可&#xff0c;本机用的是Windows x86-64 executable installer。 注意事项&#xff1a; 安装完成后检查下环境变量&#xff0c;默认会配置好&#xff0c;可…

算法初阶双指针+C语言期末考试之编程题加强训练

双指针 常⻅的双指针有两种形式&#xff0c;⼀种是对撞指针&#xff0c;⼀种是左右指针。 对撞指针&#xff1a;⼀般⽤于顺序结构中&#xff0c;也称左右指针。 • 对撞指针从两端向中间移动。⼀个指针从最左端开始&#xff0c;另⼀个从最右端开始&#xff0c;然后逐渐往中间逼…

【链表Linked List】力扣-2 两数相加

目录 题目描述 解题过程 题目描述 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 …

JVM GUI可视化监控及诊断工具

工具既述 使用命令行工具或组合能帮您获取目标Java应用性能相关的基础信息&#xff0c;但它们存在下列局限&#xff1a; 无法获取方法级别的分析数据&#xff0c;如方法间的调用关系、各方法的调用次数和调用时间等&#xff08;这对定位应用性能瓶颈至关重要&#xff09;。要…

决战排序之巅(一)

决战排序之巅 插入排序直接插入排序 void InsertSort(int* arr, int n)希尔排序 void ShellSort(int* arr, int n)测试插入排序测试函数 void verify(int* arr, int n)测试 InsertSort测试 ShellSort测试速度 InsertSort & ShellSort 选择排序直接选择排序 void SelectSort…

初试Jakarta EE项目 - Servlet + JSP

文章目录 一、Jakarta EE概述二、Servlet概述&#xff08;一&#xff09;Servlet的概念&#xff08;二&#xff09;Servlet的工作原理&#xff08;三&#xff09;Servlet的特点1、独立性2、灵活性3、生命周期管理 &#xff08;四&#xff09;Servlet的应用场景&#xff08;五&a…

从零开始,利用ChatGPT学会写作的完整指南

文章目录 前言了解ChatGPT访问OpenAI平台使用ChatGPT进行简单的对话定义写作主题逐步生成文章段落添加个性化和细节编辑和润色反复修改直至满意 图书推荐内容简介作者简介获取方式 前言 在数字时代&#xff0c;人工智能技术日益成熟&#xff0c;为我们提供了全新的学习和创作机…

Linux CentOS本地部署SQL Server数据库结合cpolar内网穿透实现公网访问

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;数据结构、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 安装sql server二. 局域网测试连接三. 安装cpolar内网穿透四. 将sqlserver映射…

AI报告专题:创造性和生成式人工智能

今天分享的AI系列深度研究报告&#xff1a;《AI报告专题&#xff1a;创造性和生成式人工智能》。 &#xff08;报告出品方&#xff1a;Capgemini&#xff09; 报告共计&#xff1a;64页 AI一代 生成式人工智能 (AI)正在迅速改变我们与技术的交互方式&#xff0c;使机器能够创…

基于ssm在线医疗服务系统论文

摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管理就很关键。因此医疗服务信息的…

Linux---逻辑卷管理

本章主要介绍逻辑卷的管理。 了解什么是逻辑卷创建和删除逻辑卷扩展逻辑卷缩小逻辑卷逻辑卷快照的使用 前面介绍了分区的使用&#xff0c;如果某个分区空间不够&#xff0c;想增加空间是非常困难的。所以&#xff0c;建议尽可能使用逻辑卷而非普通的分区&#xff0c;因为逻辑卷…

贪心算法及相关题目

贪心算法概念 贪心算法是指&#xff0c;在对问题求解时&#xff0c;总是做出在当前看来是最好的选择。也就是说&#xff0c;不从整体最优上加以考虑&#xff0c;算法得到的是在某种意义上的局部最优解 。 贪心算法性质&#xff08;判断是否可以使用贪心算法&#xff09; 1、贪…