JSP详细基础教学
目录
前言
环境设置
创建JSP文件
编写基本的JSP代码
部署和运行JSP页面
基础语法
前言
JSP(JavaServer Pages)是一种用于开发动态网页的Java技术。它允许将Java代码嵌入HTML页面中,以便在服务器端生成动态内容。在本次教程中,我将向您介绍如何开始使用JSP。
环境设置
首先,确保您已经安装了Java开发工具包(JDK)和一个支持JSP的Web服务器,如Apache Tomcat。确保将JDK的路径添加到系统环境变量中。
创建JSP文件
创建一个新的文本文件,并将其保存为以".jsp"为扩展名的文件,例如"index.jsp"。
编写基本的JSP代码
打开您创建的JSP文件,并使用以下代码作为模板来编写基本的JSP代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html><head><title>My First JSP Page</title></head><body><h1>Welcome to JSP!</h1><%String name = "John"; // 定义一个变量out.println("Hello, " + name); // 输出变量的值%></body>
</html>
在上面的例子中,我们使用了<%@ page %>指令来设置JSP页面的属性,例如页面的编码和内容类型。在<body>标签内部,我们使用<% %>标记来插入Java代码,并使用out.println()函数将输出发送到客户端。
部署和运行JSP页面
将保存有JSP代码的文件复制到Tomcat服务器的Web应用程序目录(例如Tomcat的webapps文件夹)。
启动Tomcat服务器,并在Web浏览器中输入URL http://localhost:8080/您的应用程序名称/index.jsp。
您应该能够看到包含动态内容的页面。
基础语法
1、JSP指令:
JSP指令用于设置页面的属性和配置。在JSP页面的顶部使用<%@ %>标记定义指令。常见的JSP指令包括:
- page指令:用于设置页面的属性,如语言、编码、缓冲区大小等。
- include指令:用于包含其他文件或页面。
- taglib指令:用于导入和使用自定义标签库。
以下是一个示例page指令的用法:
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
2、JSP脚本元素:
JSP脚本元素用于在JSP页面中插入Java代码。常用的脚本元素包括:
- <% %>:用于插入一段Java代码块。
- <%= %>:用于插入表达式的结果(输出到页面)。
- <%! %>:用于定义全局变量、方法和类。
以下是示例代码,展示了如何在JSP页面中使用脚本元素:
<% // Java代码块String name = "John";int age = 25;
%>
<p>Name: <%= name %></p> // 输出表达式结果<%!public void greet() { // 定义方法out.println("Hello, world!");}
%>
3、表达式语言(EL):
EL是一种简化访问JavaBean属性、数组、集合和其他对象的方式。它使用${ }语法在JSP页面中引用变量和执行表达式。常见的EL操作符包括.(点号)用于访问对象属性,[](方括号)用于访问数组和集合元素等。
以下是使用EL的示例代码:
在使用EL之前,通常需要导入JSTL(JSP Standard Tag Library)标签库。
<p>Name: ${name}</p> // 访问变量<p>Sum: ${2 + 3}</p> // 执行表达式<c:set var="count" value="${array.length}" /> // 设置变量<p>Array Element: ${array[0]}</p> // 访问数组元素
相关文章:
JSP详细基础教学
目录 前言 环境设置 创建JSP文件 编写基本的JSP代码 部署和运行JSP页面 基础语法 前言 JSP(JavaServer Pages)是一种用于开发动态网页的Java技术。它允许将Java代码嵌入HTML页面中,以便在服务器端生成动态内容。在本次教程中ÿ…...
mysql修改登录用户的密码
文章目录 mysql5.7即mysql7.0 的修改方式mysql5.8即mysql8.0的修改方式如果修改完密码,发现旧密码和新密码都登录不进来怎么办?发现设置密码老报错 mysql5.7即mysql7.0 的修改方式 1.如果是使用docker里装的mysql 首先使用 [rootlocalhost /]# docker p…...
SNAT和DNAT
SNAT和DNAT 一、SNAT的策略及应用: 1.SNAT: (1)定义:又称源地址转换。源地址转换是内网地址向外访问时,发起访问的内网ip地址转换为指定的ip地址(可指定具体的服务以及相应的端口或端口范围&…...
好程序员:月薪2万程序员的简历,原来长这个样子!
6月份现在正是招聘季节,不少同学java岗位投递不少,但回复不多,根本原因可能是java面试简历不够吸引人。 你的java简历不会写?看看别人就知道咋写了,这里给大家拆解一份好程序员月薪2万的java简历。 java自我评价模块&a…...
STM32之FreeRTOS
目录 FreeRTOS 介绍 什么是 FreeRTOS ? 为什么选择 FreeRTOS ? FreeRTOS 资料与源码下载 祼机开发与 FreeRTOS 祼机开发: FreeRTOS: FreeRTOS 实现多任务的原理 二、移植 FreeRTOS 手动移植 使用CubeMX快速移植 快速移植流程…...
有趣的图(二)(56)
小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 和猫妹学Python,一起趣味学编程。 今日主题 咱们书接上回,上次学了图的基本概念,你都学会了吗? 咱们今天要学习内容如下&a…...
Linux之环境变量
目录 Linux之环境变量 分类 环境变量 定义 设置环境变量 设置环境变量(永久) 用户环境变量配置所在文件: 全局环境变量配置所在文件: 显示与取消环境变量 通过echo或printf打印环境变量 通过env或set显示默认的环境变量 用 …...
python带你制作自动点赞小程序,让我看看谁还在呆呆的手动点赞
前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 知识点: 动态数据抓包 requests发送请求 开发环境: 代码所使用软件工具: python 3.8 >>>>>> 运行代码 pycharm 2022.3 >>>>>> 辅助敲代码 需下载的第三方模块&a…...
shell脚本编写辅助命令
目录 一、echo 命令 二、字符串相关操作 1.截取字符串 2.获取字符串长度 3.字符串追加字符 4.从开头或结尾删除字符串指定格式内容 三、随机数 1.使用 $RANDOM 2.指定RANDOM变量的范围 (1)从0开始的范围 (2)从指定数始…...
高并发编程:线程池
一、概述 线程池首先有几个接口先了解第一个是Executor,第二个是ExecutorService,在后面才是线程池的一个使用ThreadPoolExecutor。 二、Executor Executor看它的名字也能理解,执行者,所以他有一个方法叫执行,那么执…...
微信小程序开发uni-app-8分钟上手开发
本篇文章uni-app微信小程序开发-8分钟上手开发 -首先到微信小程序官网登录/注册微信小程序 微信小程序官网 uni-app 微信小程序 注册微信小程序 这里要注意: 激活邮箱之后,选择主体类型为 “个人类型”,并按要求登记主体信息。主体信息提…...
【C++11】 initializer_list | 右值引用 | 移动构造 | 完美转发
文章目录 1. 统一的列表初始化{ } 初始化initializer_list 2. 引用左值引用右值引用左值引用与右值引用的相互转换右值引用的真正使用场景移动构造 C98与C11传值返回问题注意事项总结 3. 完美转发 1. 统一的列表初始化 { } 初始化 C11 扩大了括号括起的列表(初始化列表)的使用…...
基于html+css的图展示122
准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…...
《Unix环境高级编程》/bin/sh: ./fixup.awk: Permission denied
我的代码是从http://www.apuebook.com/code3e.html下载的,先是在 使用cat /etc/redhat-release看到操作系统是CentOS Linux 7.6,使用uname -r看到内核是3.10.0-957.el7.x86_64。 在代码顶级目录下,执行make。 发现报错: ./fi…...
万字长文+示例代码详解DDD中常用的架构(含代码示例)
目录 分层架构(Layered Architecture) 概念 示例代码 总结 领域驱动设计的六边形架构(Hexagonal Architecture) 概念 示例代码 总结 CQRS(Command Query Responsibility Segregation) 概念 示例…...
Debezium UI On ECS编译安装及开放Web访问
1. 访问debezium-ui的代码仓库,下载源码 GitHub - debezium/debezium-ui: A web UI for Debezium; Please log issues at https://issues.redhat.com/browse/DBZ. 2. 解压zip源码包: TEST[hadoopshdcvfsla1894 ~]$ cd /data/module TEST[hadoopshd…...
【支付系统】核心支付流程
支付在产品中常见的用处为购买和充值.这两种功能操作大相径庭,其中购买相对充值多了很多步骤,它需要锁商品或者库存,还需要超时未支付取消订单等操作.在这篇文章中主要探讨支付部分,属于购买和充值公共部分. 下面是绘制的简易支付时序图 以上时序图并非完整,其实核心步骤就是, …...
电脑系统可以直接备份到其它硬盘上吗
在日常使用电脑的过程中,我们都希望能够保护好重要的系统数据,以防止意外数据丢失或系统崩溃。那么,能否将电脑系统直接备份到其他硬盘上呢?本文将为您解答这个问题,并探讨备份系统的方法和注意事项。 工具/原料&…...
springboot项目如何优雅停机
文章目录 前言kill -9 pid的危害如何优雅的停机理论步骤优雅方式1、kill -15 pid 命令停机2、ApplicationContext close停机3、actuator shutdown 停机4、ApplicationListener 监听延时停机 前言 相信很多同学都会用Kill -9 PID来杀死进程,如果用在我们微服务项目里…...
springboot mybatis-plus 代码生成工具
介绍 基于mybatis-plus代码生成工具 后续会不断完善 规划 后续会基于此功能搞低代码平台,会有前端VUE mybatis-plus介绍&特性 • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 • 损耗小࿱…...
MedGemma-X性能优化:基于CUDA的医疗影像加速处理
MedGemma-X性能优化:基于CUDA的医疗影像加速处理 1. 当医生等结果的时间,能不能再短一点? 上周陪家人做肺部CT复查,从扫描结束到拿到报告,中间隔了近40分钟。放射科医生说,现在AI辅助系统已经能帮着初筛&…...
Switch玩家福音!用LDR6282芯片DIY便携屏,告别充电口盲插烦恼
Switch玩家福音!用LDR6282芯片DIY便携屏,告别充电口盲插烦恼 作为一名资深Switch玩家,每次在咖啡厅或朋友家想玩大屏游戏时,最头疼的就是要随身携带底座和一堆线材。直到我发现用LDR6282芯片可以自制支持双C口盲插的便携显示屏&am…...
AI优化效果不可控?矩阵跃动数据驱动型龙虾机器人,实现搜索排名稳定提升
在AI技术深度渗透搜索优化、流量运营等领域的今天,开发者与企业团队普遍面临一个核心困境:AI优化效果飘忽不定,搜索排名波动剧烈、结果不可复现、异常波动无预警,看似高效的自动化优化,反而成为业务稳定推进的潜在隐患…...
Docker 网络与 Compose :部署前后端分离项目(MySQL + Java + Nginx)
上一篇文章中,学习了如何将 Java 应用打包成 Docker 镜像。但一个完整的项目往往需要多个容器协同工作,比如应用容器、数据库容器、前端 Nginx 容器。本文将从 Docker 网络基础讲起,通过自定义网络实现容器互联,最后使用 Docker C…...
Chrome WebRTC 性能优化实战:从延迟瓶颈到高效传输
最近在做一个实时视频会议项目,用到了 Chrome 的 WebRTC 能力。功能跑通后,一上真实网络环境,问题就来了:弱网下卡成PPT,高并发时延迟飙升,用户体验一言难尽。经过几轮深度折腾,总算摸到了一些门…...
告别手动组帧!用libmodbus库5分钟搞定Modbus RTU设备数据读取(C语言实战)
5分钟极速上手:用libmodbus高效读取工业设备数据的C语言实践指南 在工业自动化现场,当我们需要快速对接一台陌生的Modbus RTU设备时,传统的手动组帧方式往往让开发者陷入繁琐的字节操作和CRC校验计算中。我曾亲眼见过一位工程师花费三天时间调…...
FreeSWITCH mod_vad模块实战:手把手教你用Python ESL实现通话静音检测与智能录音
FreeSWITCH mod_vad模块实战:Python ESL实现智能语音检测与动态录音控制 在语音通信系统中,精准识别通话双方的语音活动状态是实现智能交互的基础能力。传统录音方案往往采用全程录制模式,不仅浪费存储资源,后期分析时还需要人工筛…...
3个步骤让Sketch设计效率提升300%:Automate Sketch插件完全指南
3个步骤让Sketch设计效率提升300%:Automate Sketch插件完全指南 【免费下载链接】Automate-Sketch Make your workflow more efficient. 项目地址: https://gitcode.com/gh_mirrors/au/Automate-Sketch 在当今快节奏的设计工作中,效率就是竞争力。…...
Cortex-M软件串口库SoftwareSerialM原理与实战
1. SoftwareSerialM 库概述SoftwareSerialM 是一款专为 Cortex-M 系列微控制器设计的软件串口(Software UART)实现库。其核心目标是在硬件 UART 资源受限或已全部占用的嵌入式系统中,通过纯 GPIO 模拟 UART 协议时序,扩展异步串行…...
Web自动化测试(05)- 页面滚动操作
页面滚动操作1 使用JavaScript滚动1.1 垂直滚动(1)滚动到页面顶部# 滚动到页面顶部driver.execute_script("window.scrollTo(0, 0);")(2)滚动到页面底部# 滚动到页面底部driver.execute_script("window.scrollTo(0…...
