【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,一经查实,立即删除!

相关文章

Linux学习笔记7-SPI的应用和ICM-26068

和IIC类似&#xff0c;我也会针对一个使用SPI通信的芯片ICM-26068来写它的驱动&#xff0c;从而学习SPI通信的应用。 SPI通信的基本原理在单片机中已经详细学习过了&#xff0c;我认为需要理解的是它的全双工&#xff0c;即在同一时间内既可以从主机发送数据到从机&#xff0c;…

「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软件无法完全…

qt 定时器用法

在qt开发中&#xff0c;定时器是我们经常用到的。我们接下来说一下定时器的三种用法&#xff0c;需要注意的是定时器事件是在主线程中触发的&#xff0c;因此在处理耗时操作时应特别小心&#xff0c;以避免阻塞应用程序的事件循环。 1. 三种定时器使用 1.1 QObject的定时器 …

HTTPS双向认证

HTTPS双向认证和普通的HTTPS认证在安全性和验证方式上有所区别。 安全性&#xff1a; 普通的HTTPS认证&#xff08;单向认证&#xff09;只验证服务器的身份&#xff0c;客户端的身份没有得到验证&#xff0c;因此安全性相对较低。HTTPS双向认证则不仅需要服务器进行身份验证&a…

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

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

【数据挖掘】国科大苏桂平老师数据库新技术课程作业 —— 第一次作业

1 设关系 r r r 和 s s s 如下&#xff1a; r ( A B C ) a 2 b 3 c 2 a 2 b 1 c 1 a 2 b 2 c 1 a 1 b 1 c 2 s ( B C D ) b 1 c 1 d 1 b 2 c 1 d 1 b 2 c 2 d 1 \begin{array}{c} r&(A & B & C) \\ &\;\;a_2 & b_3 & c_2\; \\ &\;\;a_2 & …

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,就可以…

新零售时代:直销与分销的善用与融合

随着互联网技术的不断发展&#xff0c;零售业正在经历一场前所未有的变革。传统的实体店销售模式已经无法满足消费者对于购物体验的需求&#xff0c;而电子商务的兴起也使得线上销售成为一种新的消费趋势。在这场变革中&#xff0c;直销和分销这两种销售模式也逐渐凸显出其重要…

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;然后逐渐往中间逼…

剑指 Offer(第2版)面试题 19:正则表达式匹配

剑指 Offer&#xff08;第2版&#xff09;面试题 19&#xff1a;正则表达式匹配 剑指 Offer&#xff08;第2版&#xff09;面试题 19&#xff1a;正则表达式匹配解法1&#xff1a;递归解法2&#xff1a;动态规划 剑指 Offer&#xff08;第2版&#xff09;面试题 19&#xff1a;…

【链表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…

天梯赛的善良(Python)

题目描述 天梯赛的善良 天梯赛是个善良的比赛。善良的命题组希望将题目难度控制在一个范围内&#xff0c;使得每个参赛的学生都有能做出来的题目&#xff0c;并且最厉害的学生也要非常努力才有可能得到高分。 于是命题组首先将编程能力划分成了 1 0 6 10^6 106 个等级&…