JSP技术入门指南【一】利用IDEA从零开始搭建你的第一个JSP系统

JSP技术入门指南【一】利用IDEA从零开始搭建你的第一个JSP系统

Jsp技术入门指南【一】利用IDEA从零开始搭建你的第一个JSP系统


前言

  • 在前面的内容中,我们已经系统学习了 Web 开发的基础技术:从构建网页骨架的 HTML、美化页面的 CSS,到实现服务器端逻辑的 Java Servlet
  • 这些知识为我们打开了动态 Web 开发的大门,让我们能够通过 Servlet 处理客户端请求、操作数据库并返回动态数据。
  • 然而,在 Servlet 中直接拼接 HTML 代码实现页面渲染时,代码往往显得繁琐且难以维护 —— 有没有一种更简洁、更直观的方式,让开发者既能保留 Java 的强大逻辑处理能力,又能像编写 HTML 一样轻松组织页面结构?

JSP(JavaServer Pages)正是为解决这一问题而生

在这里插入图片描述
我的个人主页,欢迎来阅读我的其他文章
https://blog.ZEEKLOG.net/2402_83322742?spm=1011.2415.3001.5343
我的JSP知识文章专栏
欢迎来阅读指出不足
https://blog.ZEEKLOG.net/2402_83322742/category_12950980.html?spm=1001.2014.3001.5482
我的java-servlet知识文章专栏
欢迎来阅读指出不足
https://blog.ZEEKLOG.net/2402_83322742/category_12907265.html?spm=1001.2014.3001.5482

一、什么是JSP

  • JSP(Java Server Pages)是一种基于Java的服务器端技术,用于创建动态网页。
  • 它的本质是Servlet,但相比Servlet,JSP更加简洁易用,更适合开发动态页面。

1.1 JSP是干什么的?

  • JSP主要用于动态渲染页面。
  • 在传统的HTML页面中,内容是静态的,每次访问页面时,显示的内容都不会改变
  • 而JSP页面可以结合Java代码,根据用户的请求动态生成HTML内容

下面我们来看一些代码,后面会详细讲这些代码

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>动态问候语</title></head><body> <% java.util.Calendar cal = java.util.Calendar.getInstance(); int hour = cal.get(java.util.Calendar.HOUR_OF_DAY); String greeting; if (hour >= 6 && hour < 12) { greeting = "早上好!"; } else if (hour >= 12 && hour < 18) { greeting = "下午好!"; } else { greeting = "晚上好!"; } %> <h1><%= greeting %></h1></body></html>

运行结果

在这里插入图片描述

1.2 JSP与Servlet的关系是什么?

  • JSP可以看作是Servlet的扩展。
  • Servlet是一个运行在服务器端的Java程序,用于处理客户端的请求并返回响应
  • JSP页面在运行时会被转换成Servlet代码,然后由Servlet容器(如Tomcat)执行。
  • 这意味着JSP继承了Servlet的强大功能,同时提供了更简洁的语法,让开发者可以更方便地编写动态页面。

二、在Idea中创建第一个JSP系统

在开始前我们需要安装好IDEA以及java-web的环境

接着,右键单击test,找到模板设置

在这里插入图片描述

首先在右上角SE3文件里创建maven模板

在这里插入图片描述


在这里插入图片描述

构建好之后,下面我们将开始构造第一个JSP文件

在这里插入图片描述
在这里插入图片描述
  • 导入里面的库文件,然后应用,确定

找到web文件,新建jsp界面

在这里插入图片描述

继续创建在web下创建lib文件

在这里插入图片描述


在这里插入图片描述

然后在工件里找到web展开型,单击元模块,把test添加进去

在这里插入图片描述


在这里插入图片描述

找到test,添加web项目

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
  • 然后,输入我们的第一个jsp代码,hello jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>Hello JSP</title></head><body><h1>Hello JSP</h1></body></html>

最后运行

在这里插入图片描述

然后,在上面的编辑设置里,部署我们的test工件

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

这就是我们的第一个jsp系统

三、JSP和HTML的差别

3.1 格式区别

HTML是一种静态标记语言,用于定义网页的结构和内容。它的文件扩展名是.html,内容主要是HTML标签,例如<h1><p><div>等。HTML文件的内容是固定的,每次加载页面时都不会改变。

<!DOCTYPEhtml><html><head><title>Hello, HTML</title></head><body><h1>Hello, HTML</h1></body></html>

JSP文件的扩展名是.jsp,它可以在HTML代码中嵌入Java代码。JSP页面的结构与HTML类似,但可以通过<% %><%= %>等标签嵌入Java代码,实现动态内容的生成。例如:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>Hello JSP</title></head><body><h1>Hello JSP</h1></body></html>

3.2 注释区别

  • HTML注释:HTML注释使用<!---->包裹,例如<!-- 这是一个HTML注释 -->。HTML注释不会被浏览器解析,也不会显示在页面上。
  • JSP注释:JSP注释分为两种:
    • HTML注释:在JSP文件中,HTML注释的作用与HTML文件中相同,不会被浏览器解析。
    • JSP注释:使用<%----%>包裹,例如<%-- 这是一个JSP注释 --%>。JSP注释不会被发送到客户端,只在服务器端可见,用于注释Java代码。

以上就是这篇博客的全部内容,下一篇我们将继续探索JSP的更多精彩内容。

我的个人主页,欢迎来阅读我的其他文章
https://blog.ZEEKLOG.net/2402_83322742?spm=1011.2415.3001.5343
我的JSP知识文章专栏
欢迎来阅读指出不足
https://blog.ZEEKLOG.net/2402_83322742/category_12950980.html?spm=1001.2014.3001.5482
我的java-servlet知识文章专栏
欢迎来阅读指出不足
https://blog.ZEEKLOG.net/2402_83322742/category_12907265.html?spm=1001.2014.3001.5482
我的HTML专栏
欢迎来阅读指出不足
https://blog.ZEEKLOG.net/2402_83322742/category_12834817.html?spm=1001.2014.3001.5482
非常感谢您的阅读,喜欢的话记得三连哦
在这里插入图片描述

Read more

Flutter 三方库 interpolation 在鸿蒙环境中的高度动态模板解析与混合适配策略:极限切入多维复杂字符串变量流注入栈、大幅精简富交互文本编排工作-适配鸿蒙 HarmonyOS ohos

Flutter 三方库 interpolation 在鸿蒙环境中的高度动态模板解析与混合适配策略:极限切入多维复杂字符串变量流注入栈、大幅精简富交互文本编排工作-适配鸿蒙 HarmonyOS ohos

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 interpolation 在鸿蒙环境中的高度动态模板解析与混合适配策略:极限切入多维复杂字符串变量流插值注入栈、大幅精简富交互场景文本变量编排工作 在鸿蒙应用的多语言文案动态加载、通知模板渲染或基于表达式的 UI 文本展示中,如何实现比原生更多的字符串占位符处理?interpolation 库提供了一套超越 Dart 标准 ${} 语法的高端文本解析工具。本文将详解该库在 OpenHarmony 上的适配要点。 前言 什么是 interpolation?它不仅支持传统的冒号 : 占位符转换,还能处理带有逻辑嵌套的模板、自定义分界符,并能极速解析存储在 JSON 文件中的动态文案。在鸿蒙操作系统强调的“全场景智慧连接”和“极致渲染性能”背景下,利用该库可以确保你的应用在面对成千上万个动态下发的推送标题或业务状态描述时,依然能提供稳定、确定性的文本回射效果。 一、原理解析 1.1 基础概念 其核心是通过正则表达式扫描与 Map

By Ne0inhk
Flutter 三方库 langchain_google 的鸿蒙化适配指南 - 链接 Gemini 智慧中枢、LangChain AI 实战、鸿蒙级智能应用专家

Flutter 三方库 langchain_google 的鸿蒙化适配指南 - 链接 Gemini 智慧中枢、LangChain AI 实战、鸿蒙级智能应用专家

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 langchain_google 的鸿蒙化适配指南 - 链接 Gemini 智慧中枢、LangChain AI 实战、鸿蒙级智能应用专家 在鸿蒙跨平台应用迈向“智能化”的今天,接入生成式 AI(AIGC)已不再是加分项,而是必选项。如果你想在鸿蒙端利用 Google Gemini 的强大推理能力打造智能助手、自动化翻译或垂直领域 RAG 系统。今天我们要深度解析的 langchain_google——一个通过 LangChain 标准协议封装的 Google AI 适配器,正是帮你构建“大模型大脑”的核心插件。 前言 langchain_google 是 LangChain.

By Ne0inhk
【Linux系统编程】(四十二)吃透线程互斥!从原理到实战,手把手教你玩转 Linux 下的互斥锁

【Linux系统编程】(四十二)吃透线程互斥!从原理到实战,手把手教你玩转 Linux 下的互斥锁

目录 前言 一、线程互斥的核心概念:搞懂这些,才算入门 1.1 共享资源与临界资源 1.2 临界区 1.3 互斥的定义 1.4 原子性:互斥的底层要求 二、多线程共享资源的坑:亲眼看看问题出在哪 2.1 问题代码:未加互斥的售票系统 2.2 编译运行与异常结果 2.3 问题根源:三步分析 (1)线程调度的随机性 (2)耗时操作放大了竞争问题 (3)ticket--本身不是原子操作 2.4 解决问题的核心要求 三、Linux 下的互斥量:mutex 的使用全解析 3.1 互斥量的类型与核心接口

By Ne0inhk
Flutter for OpenHarmony:Flutter 三方库 jnigen — 自动化打通 Flutter 与原生代码的通信壁垒(适配鸿蒙 HarmonyOS Next ohos)

Flutter for OpenHarmony:Flutter 三方库 jnigen — 自动化打通 Flutter 与原生代码的通信壁垒(适配鸿蒙 HarmonyOS Next ohos)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net。 Flutter for OpenHarmony:Flutter 三方库 jnigen — 自动化打通 Flutter 与原生代码的通信壁垒(适配鸿蒙 HarmonyOS Next ohos) 前言 在进行 Flutter for OpenHarmony 开发时,我们经常会面临这样的尴尬境地:Flutter 侧提供了完美的 UI 体验,但某些核心能力(如硬件传感器驱动、系统级加密、高性能图像算法等)却隐藏在原生的 C++ 或 Java(针对早期鸿蒙版本/兼容层)逻辑中。 传统的 MethodChannel 虽然能解决问题,但手写大量的双端映射代码不仅效率低下,且极易出错。今天,我们将探讨一个能让原生交互进入“自动化时代”的利器 —— jnigen。

By Ne0inhk