Java Web 开发基础介绍
Java学习资料
Java学习资料
Java学习资料
一、引言
在当今数字化时代,Web 应用无处不在。Java 凭借其强大的功能、良好的跨平台性和丰富的开发框架,成为 Web 开发领域的热门选择之一。Java Web 开发允许开发者构建动态、交互式的 Web 应用程序,广泛应用于电子商务、社交网络、企业信息系统等众多领域。本文将介绍 Java Web 开发的基础知识,帮助初学者快速入门。
二、Java Web 开发环境搭建
2.1 JDK(Java Development Kit)
JDK 是 Java 开发的基础,它包含了 Java 编译器、Java 虚拟机(JVM)等必要工具。首先需要从 Oracle 官网或 OpenJDK 官网下载适合自己操作系统的 JDK 版本,然后进行安装。安装完成后,配置系统环境变量,将 JDK 的 bin 目录添加到 PATH 环境变量中,以便系统能够找到 Java 相关命令。
2.2 应用服务器
应用服务器用于部署和运行 Java Web 应用程序。常见的 Java 应用服务器有 Apache Tomcat、Jetty、WebLogic 等。其中,Tomcat 是一个开源、轻量级的应用服务器,非常适合初学者使用。从 Apache Tomcat 官网下载合适的版本,解压后即可使用。启动 Tomcat 服务器,通过浏览器访问 http://localhost:8080,如果能看到 Tomcat 的欢迎页面,说明服务器安装和启动成功。
2.3 集成开发环境(IDE)
IDE 可以提高开发效率,常见的 Java Web 开发 IDE 有 Eclipse、IntelliJ IDEA 等。以 IntelliJ IDEA 为例,下载并安装社区版或旗舰版。在 IDE 中配置 JDK 和 Tomcat 服务器,以便后续创建和运行 Java Web 项目。
三、Java Web 项目结构
3.1 Web 项目目录结构
一个典型的 Java Web 项目通常具有以下目录结构:
WebProject
├── src
│ └── main
│ ├── java # 存放 Java 源代码
│ ├── resources # 存放配置文件
│ └── webapp
│ ├── WEB-INF
│ │ ├── web.xml # Web 应用的配置文件
│ │ └── classes # 存放编译后的 Java 类文件
│ │ └── lib # 存放项目依赖的 JAR 包
│ └── index.jsp # 项目的首页
3.2 各目录和文件的作用
src/main/java:用于存放 Java 源代码,通常包含 Servlet、JavaBean 等类。
src/main/resources:存放项目的配置文件,如数据库连接配置文件、日志配置文件等。
src/main/webapp:是 Web 应用的根目录,包含了 Web 页面、静态资源(如 CSS、JavaScript、图片等)。
WEB-INF:是一个受保护的目录,客户端无法直接访问其中的文件。web.xml 是 Web 应用的核心配置文件,用于配置 Servlet、过滤器、监听器等。classes 目录存放编译后的 Java 类文件,lib 目录存放项目依赖的 JAR 包。
四、Servlet 基础
4.1 Servlet 概念
Servlet 是 Java Web 开发中的核心组件,它是运行在服务器端的小程序,用于处理客户端的请求并生成响应。Servlet 可以接收来自客户端的 HTTP 请求,如 GET、POST 请求,然后根据请求的内容进行相应的处理,最后将处理结果以 HTTP 响应的形式返回给客户端。
4.2 创建和配置 Servlet
创建一个 Servlet 类,需要继承 javax.servlet.http.HttpServlet 类,并覆盖 doGet() 或 doPost() 方法,分别处理 GET 和 POST 请求。以下是一个简单的 Servlet 示例:
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;public class HelloServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.setContentType("text/html;charset=UTF-8");PrintWriter out = resp.getWriter();out.println("<html>");out.println("<body>");out.println("<h1>Hello, Servlet!</h1>");out.println("</body>");out.println("</html>");}
}
在 web.xml 中配置该 Servlet:
<servlet><servlet-name>HelloServlet</servlet-name><servlet-class>com.example.HelloServlet</servlet-class>
</servlet>
<servlet-mapping><servlet-name>HelloServlet</servlet-name><url-pattern>/hello</url-pattern>
</servlet-mapping>
4.3 访问 Servlet
将项目部署到 Tomcat 服务器,启动服务器后,在浏览器中访问 http://localhost:8080/WebProject/hello,即可看到 Servlet 输出的页面。
五、JSP 基础
5.1 JSP 概念
JSP(JavaServer Pages)是一种动态网页技术,它允许在 HTML 页面中嵌入 Java 代码。JSP 页面在服务器端被编译成 Servlet,然后由 Servlet 引擎执行。JSP 结合了 HTML 的静态页面设计和 Java 的动态处理能力,使得开发者可以方便地创建动态 Web 页面。
5.2 JSP 语法
JSP 页面包含 HTML 代码和 JSP 标签、表达式、脚本片段等。以下是一个简单的 JSP 示例:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><title>JSP 示例</title>
</head>
<body><h1>当前时间:<%= new java.util.Date() %></h1>
</body>
</html>
在这个示例中,<%@ page … %> 是 JSP 指令,用于设置页面的属性;<%= … %> 是 JSP 表达式,用于输出表达式的值。
5.3 JSP 与 Servlet 的关系
JSP 本质上就是 Servlet,JSP 页面在第一次被访问时会被服务器编译成 Servlet 类,然后由 Servlet 引擎执行。JSP 更侧重于页面的显示,而 Servlet 更侧重于业务逻辑的处理。在实际开发中,通常将业务逻辑放在 Servlet 中处理,将页面显示逻辑放在 JSP 中实现。
六、JavaBean 基础
6.1 JavaBean 概念
JavaBean 是一种遵循特定编程规范的 Java 类,通常用于封装数据。JavaBean 具有以下特点:
必须有一个无参的构造方法。
所有属性都使用 private 修饰,通过公有的 getter 和 setter 方法来访问和修改属性值。
6.2 JavaBean 示例
public class User {private String username;private int age;public User() {}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
6.3 JavaBean 在 JSP 中的使用
在 JSP 页面中可以使用 jsp:useBean、jsp:setProperty 和 jsp:getProperty 标签来使用 JavaBean。例如:
<jsp:useBean id="user" class="com.example.User" scope="request" />
<jsp:setProperty name="user" property="username" value="John" />
<jsp:setProperty name="user" property="age" value="25" />
<h1>用户名:<jsp:getProperty name="user" property="username" /></h1>
<h1>年龄:<jsp:getProperty name="user" property="age" /></h1>
七、总结
Java Web 开发是一个庞大而复杂的领域,本文介绍了 Java Web 开发的基础知识,包括开发环境搭建、项目结构、Servlet、JSP 和 JavaBean 等。掌握这些基础知识是进一步学习和开发 Java Web 应用的关键。随着技术的不断发展,Java Web 开发也涌现出了许多优秀的框架和工具,如 Spring、Spring Boot、MyBatis 等,初学者可以在掌握基础知识的基础上,逐步学习和使用这些框架,提高开发效率和质量。
相关文章:
Java Web 开发基础介绍
Java学习资料 Java学习资料 Java学习资料 一、引言 在当今数字化时代,Web 应用无处不在。Java 凭借其强大的功能、良好的跨平台性和丰富的开发框架,成为 Web 开发领域的热门选择之一。Java Web 开发允许开发者构建动态、交互式的 Web 应用程序&#x…...
Android Studio:视图绑定的岁月变迁(2/100)
一、博文导读 本文是基于Android Studio真实项目,通过解析源码了解真实应用场景,写文的视角和读者是同步的,想到看到写到,没有上帝视角。 前期回顾,本文是第二期。 private Unbinder mUnbinder; 只是声明了一个 接口…...
LabVIEW春节快乐
尊敬的LabVIEW开发者与用户朋友们: 灵蛇舞动辞旧岁,春风送暖贺新年!值此癸巳蛇年新春佳节来临之际,向每一位深耕LabVIEW开发领域的伙伴致以最诚挚的祝福:愿您与家人在新的一年里平安顺遂、阖家幸福,事业如…...
rewrite规则
NGINX 中 rewrite最后的标记含义: flag标记有: last 相当于Apache里的[L]标记,表示完成rewrite,匹配完,再向下匹配。地址栏会显示跳转后的地址 break 终止匹配, 不再匹配后面的rewrite规则,地址栏会显示跳…...
Android车机DIY开发之学习篇(七)NDK交叉工具构建
Android车机DIY开发之学习篇(七)NDK交叉工具构建 1.ubuntu安装GCC sudo apt-get update sudo apt-get install gcc g sudo gcc --version sudo g --version 2.测试GCC VSCODE中新建Hello.c编译 #include <stdio.h> int main(void) { printf(“Hello, this is a progr…...
【初/高中生讲机器学习】0. 本专栏 “食用” 指南——写在一周年之际⭐
创建时间:2025-01-27 首发时间:2025-01-29 最后编辑时间:2025-01-29 作者:Geeker_LStar 你好呀~这里是 Geeker_LStar 的人工智能学习专栏,很高兴遇见你~ 我是 Geeker_LStar,一名高一学生,热爱计…...
虚幻基础11:坐标计算旋转计算
能帮到你的话,就给个赞吧 😘 文章目录 坐标line startget actor rotationget forward vector 旋转计算 坐标 ue中通常使用向量计算坐标。 line start 起始坐标点。 get actor rotation 获取旋转值: 当前角色朝向 get forward vector 获…...
Rust:Rhai脚本编程示例
当然,以下是一个简单的Rhai脚本编程示例,展示了如何在Rust中使用Rhai执行脚本。 首先,你需要确保你的Rust项目中包含了rhai库。你可以在你的Cargo.toml文件中添加以下依赖项: [dependencies] rhai "0.19" # 请检查最…...
关于el-table翻页后序号列递增的组件封装
需求说明: 项目中经常会用到的一个场景,表格第一列显示序号(1、2、3...),但是在翻页后要递增显示序号,例如10、11、12(假设一页显示10条数据),针对这种情况,封…...
【深度学习】softmax回归
softmax回归 回归可以用于预测多少的问题。 比如预测房屋被售出价格,或者棒球队可能获得的胜场数,又或者患者住院的天数。 事实上,我们也对分类问题感兴趣:不是问“多少”,而是问“哪一个”: 某个电子邮…...
设计模式-建造者模式、原型模式
目录 建造者模式 定义 类图 优缺点 角色 建造者模式和工厂模式比较 使用案例 原型模式 定义 类图 优缺点 应用场景 应用类型 浅克隆 深克隆 建造者模式 定义 将一个复杂的对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,…...
【Redis】List 类型的介绍和常用命令
1. 介绍 Redis 中的 list 相当于顺序表,并且内部更接近于“双端队列”,所以也支持头插和尾插的操作,可以当做队列或者栈来使用,同时也存在下标的概念,不过和 Java 中的下标不同,Redis 支持负数下标&#x…...
三个不推荐使用的线程池
线程池的种类 其实看似这么多的线程池,都离不开ThreadPoolExecutor去创建,只不过他们是简化一些参数 newFixedThreadPool 里面全是核心线程 有资源耗尽的风险,任务队列最大长度为Integer.MAX_VALUE,可能会堆积大量的请求ÿ…...
mybatis(78/134)
前天学了很多,关于java的反射机制,其实跳过了new对象,然后底层生成了字节码,创建了对应的编码。手搓了一遍源码,还是比较复杂的。 <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE …...
Progressive Pretext Task Learning for Human Trajectory Prediction | 文献翻译
祥龙回首留胜景,金蛇起舞贺新程。 概述 行人轨迹预测是一项旨在预测行人未来位置的任务,它通常涵盖了从短期到长期的整个时间范围内的轨迹。然而,现有的研究试图通过单一、统一的训练范式来解决整个轨迹预测问题,往往忽视了行人轨…...
54.数字翻译成字符串的可能性|Marscode AI刷题
1.题目 问题描述 小M获得了一个任务,需要将数字翻译成字符串。翻译规则是:0对应"a",1对应"b",依此类推直到25对应"z"。一个数字可能有多种翻译方法。小M需要一个程序来计算一个数字有多少种不同的…...
【数据结构】_链表经典算法OJ(力扣版)
目录 1. 移除链表元素 1.1 题目描述及链接 1.2 解题思路 1.3 程序 2. 反转链表 2.1 题目描述及链接 2.2 解题思路 2.3 程序 3. 链表的中间结点 3.1 题目描述及链接 3.2 解题思路 3.3 程序 1. 移除链表元素 1.1 题目描述及链接 原题链接:203. 移除链表…...
【Linux】统计文本中每行指定位置出现的字符串的次数
统计文本中每行指定位置出现的字符串的次数 假定情景 某些项目,会把某个特定事件记录到Log中并且落盘(保持到硬盘)。基于落盘后的日志,要统计这些日志里产生该特定事件的次数 统计脚本 可以写一个sh脚本,来解析某个…...
【赵渝强老师】K8s中Pod探针的ExecAction
在K8s集群中,当Pod处于运行状态时,kubelet通过使用探针(Probe)对容器的健康状态执行检查和诊断。K8s支持三种不同类型的探针,分别是:livenessProbe(存活探针)、readinessProbe&#…...
商品信息管理自动化测试
目录 前言 一、思维导图 二、代码编写 1.在pom.xml文件中添加相关依赖 2.自动化代码编写 三、代码测试 小结 前言 1. 针对商品信息管理项目进行测试,商品信息管理项目主要有商品列表页、部门列表页、员工列表页,主要功能:对商品信息的…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
