Java快速入门系列-8(Web开发基础)

news2024/11/28 10:48:40

第8章 Web开发基础

    • 8.1 Servlet与JSP
      • 8.1.1 Servlet简介
      • 8.1.2 JSP简介与使用
      • 8.1.3 Servlet与JSP协作
    • 8.2 Web服务器与Tomcat
      • 8.2.1 安装与配置Tomcat
      • 8.2.2 配置与管理Web应用
    • 8.3 MVC设计模式与Java Web应用
      • 8.3.1 MVC原理
      • 8.3.2 MVC在Java Web中的应用
    • 8.4 RESTful API设计与实现
      • 8.4.1 RESTful API设计原则
      • 8.4.2 实现RESTful API
    • 总结

开篇图

8.1 Servlet与JSP

8.1.1 Servlet简介

Servlet是Java平台用于扩展Web服务器功能的组件,通过实现javax.servlet.Servlet接口或继承HttpServlet抽象类来处理客户端HTTP请求并生成响应。Servlet允许开发者编写Java代码来执行复杂的业务逻辑,并根据请求动态生成内容。Servlet生命周期包含了初始化、服务请求和销毁三个阶段。

Servlet实例创建与生命周期

当客户端首次发起匹配到Servlet的请求时,Servlet容器(如Tomcat)会检查是否存在该Servlet的实例。如果不存在,则创建Servlet实例,并调用其init()方法进行初始化。之后,每次请求到来都会调用service()方法,根据请求类型(GET、POST等)选择合适的方法(doGet/doPost等)处理请求。当Web应用关闭时,Servlet容器会调用Servlet的destroy()方法释放资源。

import javax.servlet.*;
import java.io.IOException;

@WebServlet(name = "HelloServlet", urlPatterns = "/hello") // 使用@Servlet注解简化配置
public class HelloServlet extends HttpServlet {
   
    
    @Override
    public void init(ServletConfig config) throws ServletException {
   
        super.init(config);
        // 初始化操作,如加载配置、建立数据库连接等
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
   
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter writer = response.getWriter();
        writer.println("<h1>Hello, World!</h1><p>This is a simple Servlet example.</p>");
    }

    // 对于POST请求同样可重写doPost方法
    // ...
    
    @Override
    public void destroy() {
   
        // 关闭资源,清理工作
    }
}

8.1.2 JSP简介与使用

JavaServer Pages(JSP)是一种基于Java的服务器端脚本技术,允许开发者将静态HTML、CSS、JavaScript与Java代码混合编写在一个文件中。JSP被Web容器解析后转换为Servlet源码并编译执行。

在JSP中,可以通过JSP指令、脚本元素、表达式语言(EL)和自定义标签等方式实现动态内容输出。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1587011.html

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

相关文章

学习R语言第二天

R语言可以做什么 1.数据分析 R语言如何使用 1. 请看我的操作方式 2. 如何获取当前路径 -- 获取当前路径 > getwd() [1] "E:/R/RWorkSpace/day01" -- 修改当前路径 > setwd(dir "E:/R") > getwd() [1] "E:/R" 3.查看当下数据值的信…

计算机毕业设计 工厂车间设备管理系统php+vue.js

该系统是以PHP为主要开发语言&#xff0c;集合MySQL数据库技术构建基于Web的以信息为目标的&#xff0c;动态的交互平台 PHP与Apache&#xff0c;MySQL的组合虽然有着诸多优势&#xff0c;但三种出自不同作者的开源软件要能很好的配合工作&#xff0c;需要很多手工配置&#x…

源码解析HashMap的put方法

前言 HashMap 基于哈希表的 Map 接口实现&#xff0c;其中的值是以 key-value 存储形式存在&#xff0c;即主要用来存放键值对。它的 key、value 都可以为 null&#xff0c;此外&#xff0c;HashMap 中的映射不是有序的。那么本篇文章将从源码的角度来很详细地讲解HashMap中pu…

5G智慧水利数字孪生可视化平台,推进水利行业数字化转型

5G智慧水利数字孪生可视化平台&#xff0c;推进水利行业数字化转型。随着5G技术的快速发展&#xff0c;越来越多的行业开始探索数字化转型的道路。水利行业作为国民经济的重要支柱&#xff0c;也面临着数字化转型的迫切需求。5G智慧水利数字孪生可视化平台作为水利行业数字化转…

微服务-7 Docker

一、镜像、容器、仓库 容器是镜像的实例&#xff0c;仓库中存储着镜像。 二、镜像的操作 三、容器的操作 创建容器停止容器&#xff0c;查看后发现没有了(docker ps 默认只展示没有停止的) docker ps -a (可以展示运行中和停止的镜像)删除容器&#xff1a;(docker rm 不能删除…

LangChain-18 Caching 将回答内容进行缓存 可在内存中或数据库中持久化缓存

背景描述 可以将问答的内容缓存起来&#xff0c;如果是相同的问题&#xff0c;那么将会直接把答案返回去&#xff0c;可以节约费用和计算。 安装依赖 pip install -qU langchain-core langchain-openai编写代码 我们可以通过 InMemoryCache 进行内存缓存 或者 SQLiteCache …

【C++题解】1605. 求一个两位数的个位和十位的和

问题&#xff1a;1605. 求一个两位数的个位和十位的和 类型&#xff1a;基本运算、拆位求解。 题目描述&#xff1a; 从键盘读入一个两位的整数 n &#xff0c;请求出这个两位整数个位和十位的和是多少&#xff1f; 输入&#xff1a; 一个两位的整数 n 。 输出&#xff1a…

R语言ggplot2绘图学习笔记(基础知识大全)

R语言ggplot2绘图入门笔记 今天分享的内容是在R语言中利用ggplot2进行可视化的入门笔记&#xff0c;适用于初学者了解ggplot2绘图系统。干货满满&#xff0c;建议收藏&#xff01; 首先安装以下R包&#xff1a; install.packages(c("tidyverse", "colorspace&qu…

机器学习-09-图像处理01-理论

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中图像处理技术。 参考 02图像知识 色彩基础知识整理-色相、饱和度、明度、色调 图像特征提取&#xff08;VGG和Resnet特征提取卷积过程详解&#xff09; Python图像处理入门 【人工智能】PythonOpenCV…

PostgreSQL强势崛起,选择它还是MySQL

大家好&#xff0c;关系型数据库&#xff08;RDBMS&#xff09;作为数据管理的基石&#xff0c;自数据仓库兴起之初便扮演着核心角色&#xff0c;并在数据科学的发展浪潮中持续发挥着价值。即便在人工智能和大型语言模型&#xff08;LLM&#xff09;日益成熟的今天&#xff0c;…

【方法】PDF密码如何取消?

对于重要的PDF文件&#xff0c;很多人会设置密码保护&#xff0c;那后续不需要保护了&#xff0c;如何取消密码呢&#xff1f; 今天我们来看看&#xff0c;PDF的两种密码&#xff0c;即“限制密码”和“打开密码”&#xff0c;是如何取消的&#xff0c;以及忘记密码的情况要怎…

2024考研调剂须知

----------------------------------------------------------------------------------------------------- 考研复试科研背景提升班 教你快速深入了解掌握考研复试面试中的常见问题以及注意事项&#xff0c;系统的教你如何在短期内快速提升自己的专业知识水平和编程以及英语…

ArcGIS Desktop使用入门(三)图层右键工具——缩放至图层、缩放至可见

系列文章目录 ArcGIS Desktop使用入门&#xff08;一&#xff09;软件初认识 ArcGIS Desktop使用入门&#xff08;二&#xff09;常用工具条——标准工具 ArcGIS Desktop使用入门&#xff08;二&#xff09;常用工具条——编辑器 ArcGIS Desktop使用入门&#xff08;二&#x…

php-redis windows ,pecl 已经不维护了,解决方案:php 8.2 | 8.3+ redis extension windows

从论坛上pecl 已经不维护了&#xff0c;直接让大家到ci 去下载 https://stackoverflow.com/questions/76496488/redis-dll-not-found-for-php8-2/76496489#76496489 让我们找最新的一次commit &#xff0c;然后又action 构建&#xff0c;再下载&#xff0c;这样的话也好&#…

【STM32嵌入式系统设计与开发】——17ADC(ADC按键应用)

这里写目录标题 STM32资料包&#xff1a; 百度网盘下载链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1mWx9Asaipk-2z9HY17wYXQ?pwd8888 提取码&#xff1a;8888 一、任务描述二、任务实施1、工程文件夹创建2、函数编辑&#xff08;1&#xff09;主函数编辑&#…

DTC 子故障类型说明

在配置cdd的时候&#xff0c;需要知道子故障类型&#xff0c;例如一个DTC &#xff1a;0xC128187, 这个0x87就是子故障类型&#xff0c;是一种常见的故障类型&#xff0c;对手件timeout

微商商城源码小程序好用么?

商城APP作为电子商务行业的重要组成部分&#xff0c;已经成为了人们购物的主要方式之一。为了在竞争激烈的市场中脱颖而出&#xff0c;开发一款专业且思考深度的商城APP方案显得尤为关键。本文将从专业性和思考深度两个方面&#xff0c;探讨商城APP的开发方案。 一、专业性的重…

计算机网络常见面试总结

文章目录 1. 计算机网络基础1.1 网络分层模型1. OSI 七层模型是什么&#xff1f;每一层的作用是什么&#xff1f;2.TCP/IP 四层模型是什么&#xff1f;每一层的作用是什么&#xff1f;3. 为什么网络要分层&#xff1f; 1.2 常见网络协议1. 应用层有哪些常见的协议&#xff1f;2…

jetbrains全家桶历史版本下载(IDEA/PyCharm...)

IDEA&#xff1a; 其他版本 - IntelliJ IDEA (jetbrains.com)https://www.jetbrains.com/zh-cn/idea/download/other.html PyCharm: 其他版本 - PyCharm (jetbrains.com)https://www.jetbrains.com/zh-cn/pycharm/download/other.html Goland: 其他版本 - GoLand (jetbrain…

TQ15EG开发板教程:在MPSOC上运行ADRV9371

首先需要在github上下载两个文件&#xff0c;本例程用到的文件以及最终文件我都会放在网盘里面&#xff0c; 地址放在本文最后。首先在github搜索hdl选择第一个&#xff0c;如下图所示 GitHub网址&#xff1a;https://github.com/analogdevicesinc/hdl/releases 点击releases…