java必知必会-jsp

文章目录

  • 一、什么是JSP?
  • 二、jsp运行原理
  • 三、文档结构
  • 四、jsp基本语法
  • 五、jsp9大内置对象(笔试)
  • 六、el(${el表达式}):Expression Language
  • 七、11个内置对象(自定义的数据必须放在域中el才能得到)
  • 八、jstl(jsp Standard Tag Library)
  • 总结


一、什么是JSP?

JSP(Java Server Page)

  • 建立在Servlet规范上的动态网页开发技术本质是servlet(Html + Java)
  • 特点:跨平台、业务代码相分离、JavaBean组件重用、预编译(一个用户只编译一次)
  • 产生原因:html页面输出太麻烦

二、jsp运行原理

  • 本质就是servlet,第一次被访问的时候被web容器翻译成servlet再执行
  • helloServlet.jsp→helloServlet_jsp.java源文件→helloServlet_jsp.class字节码文件
  • 被翻译后的servlet在Tomcat的work目录中可以找到
  • F:\Tomcat\apache-tomcat-7.0.52\work\Catalina\localhost\WEB17\org\apache\jsp
  • jsp继承了HttpjspBase,HttpjspBase类又继承了HttpServlet,故jsp就是servlet

三、文档结构

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body></body>
</html>

四、jsp基本语法

脚本分类说明
<%(变量/方法/语句等)%>jspScriptlets:被翻译到Servlet中的service方法的局部变量。调用完则释放内存空间,常用于输出
<%=(变量/表达式)%>jsp表达式:被翻译成servlet中service方法内部out.print()输出,变量或者表达式后面不能有分号
<%!java代码%>jsp声明语句:被翻译成servlet类的成员方法/变量/代码块,静态方法/变量/代码块,对整个jsp页面有效
注释分类说明可见范围
Html注释<!–注释内容–>jsp源码、java源码、html源码
java注释//单行注释/多行注释/java源码、jsp源码
jsp注释<%–注释内容–%>jsp源码
指令(指导jsp翻译和运行的命令)分类属性
<%@page 属性名1=“属性值1”%>language:jsp脚本中可以嵌入的语言种类java
属性名称区分大小写pageEncoding:读取jsp文件内容采用的编码一定要和保存文件的编码一致–内部可以包含contentType
contentType:有效文档类型text/html;
session:是否jsp在翻译时自动创建true/false
import:导入java的包 可多次,其他只能一次java.util.*
errorPage:当当前页面出错后跳转到哪个页面
isErrorPage:当前页面是一个处理错误的页面true/false
buffer:8kb,jsp缓存大小,也是out的缓冲区大小
autoFlush:自动刷新,true/false
<%@taglib 属性名1=“属性值1” >uri:要引入的(jstl、struts2)标签库地址, prefix:前缀 使用xxx:前缀
<%@include 属性名1=“属性值1”%>file:被包含的相对于webcontent文件地址(静态包含)

五、jsp9大内置对象(笔试)

jsp被翻译成servlet后,service方法中有9个对象定义并初始化完毕,jsp脚本可直接使用
所有对象都可以存取数据request.setAttribute("age", 30);
9大内置对象名称类型说明
requestHttpServletRequest得到用户请求信息
responseHttpServletResponse服务器向客户端回应信息
configServletConfig服务器配置,可以取得初始化参数
sessionHttpSession保存用户信息
applicationServletContext所有用户的共享信息
pageObject指当前页面转换后的Servlet类的实例
exceptionThrowable表示jsp页面所发生的异常,在错误页面中才起作用
pageContextPageContextjsp的页面容器,jsp页面的上下文对象
①获得其他8个内置对象:pageContext.getRequest()
②域对象:setAttribute(String name,Object obj[,int scope])
getAttribute(String name[,int scope])
removeAttrbute(String name[,int scope])
pageContext.(PAGE/REQUEST/SESSION/APPLICATION)_SCOPE
③findAttribute(String name)依次从page,request,session,application域中获取属性
outjspWriter用于页面输出
response.getWriter().write(“a”),先输出,out.write后输出
out.write()先放到jspWriter缓冲区中(默认8kb)
若page属性buffer=“0kb” 关闭out缓冲区,则按顺序输出
jsp标签/动作说明
<jsp:include />page:被包含的页面的地址 flush:包含页面flush是否将输出内容立即刷新到客户端,默认false,
false;等全部加载完了再刷新
<jsp:forward />page=“要转发请求的资源相对于webcontent地址”
include指令(静态包含)include标签(动态包含)
引入的资源必须是jsp格式的文件引入的资源必须能被web容器独立运行
引入的资源是编译前包含的引入的资源是编译后包含的
不限制改变状态码和设置响应头不能改变状态码和设置响应头

六、el(${el表达式}):Expression Language

简单的数据访问语言,使jsp的代码更加简化

七、11个内置对象(自定义的数据必须放在域中el才能得到)

分类内置对象名称说明
作用域pageScopepage作用域
requestScoperequest作用域
sessionScopesession作用域
applicationScopeapplication作用域
请求参数param获得一个参数
paramValues获得一组参数
请求头header获得一个请求头
headerValues获得一组请求头
jsp上下文对象pageContext
全局初始化参数initParam
cookiecookie
内置对象使用说明
${内置对象}获得内置对象
${内置对象.key}获得内置对象数据
${内置对象.[key-xxx]}获得内置对象有-或者空格的数据
${内置对象.key[index]}获得内置对象数据为数组,list,map,对象集合的数据
${key}底层使用findAttribute(“name”),依次从page、request、session、application获得数据
${pageContext.request}pageContext获得其他八大对象
$(pageContext.request.contextPath)/XXX相当于<%=pageContext.getRequest().getContextPath%>获得WEB应用的名称
${表达式}el表达式运算

八、jstl(jsp Standard Tag Library)

  • jsp标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能。
  • jstl出现的目的同el一样也是要提到jsp页面中的脚本代码
jstl使用说明
导入jstl.jar包含JSTL规范中定义的接口和相关类
导入standard.jar包含用于实现JSTL的.class文件以及JSTL中5个标签库描述符文件(TLD)
引入标签库<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
遍历对象<c:forEach begin="0"end="5"var=“i” step=“2”>${i}</c:forEach>
<c:forEach items=“将要迭代的对象” var=“每一个对象的值” [varStatus=“”]>
获得普通list的值<c:forEach items=" l i s t " v a r = " s t r " > {list }" var="str"> list"var="str">{str }</c:forEach>
获得list对象的值<c:forEach items=" u s e r L i s t " v a r = " u s e r " > {userList}" var="user"> userList"var="user">{user.name }${user.age}</c:forEach>
获得普通map的值<c:forEach items=" s t r M a p " v a r = " e n t r y " > {strMap }" var="entry"> strMap"var="entry">{entry.key }==${entry.value }</c:forEach>
获得map对象的值<c:forEach items=" u s e r M a p " v a r = " e n t r y " > {userMap }" var="entry"> userMap"var="entry">{entry.value.name }–${entry.value.password }</c:forEach>
判断条件<c:if test=“” var=“” scope=“page”></c:if>
输出<c:out value=“hello,world”>

总结

本文介绍了jsp的使用,如有问题欢迎私信和评论

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

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

相关文章

Nuxt3 的生命周期和钩子函数(十一)

title: Nuxt3 的生命周期和钩子函数&#xff08;十一&#xff09; date: 2024/7/5 updated: 2024/7/5 author: cmdragon excerpt: 摘要&#xff1a;本文详细介绍了Nuxt3中几个关键的生命周期钩子和它们的使用方法&#xff0c;包括webpack:done用于Webpack编译完成后执行操作…

pytorch-时间序列

目录 1. 时间序列2. word embedding2.1 one hot2.2 word2vec2.3 GloVe 1. 时间序列 具有时间相关性的序列叫做时间序列&#xff0c;比如&#xff1a;语音、文本句子 2. word embedding 2.1 one hot 针对句子来说&#xff0c;可以用[seq_len, vector_len] 有多少个单词vecto…

2024第二届电子通信与计算机科学技术国际会议(ICECCST 2024)

2024第二届电子通信与计算机科学技术国际会议(ICECCST 2024) 会议简介 2024第二届电子通信与计算机科学技术国际会议&#xff08;ICECCST 2024&#xff09;是一次重要的学术盛会&#xff0c;将在中国厦门举行。会议的主要目的是为全球的电子通信和计算机科学技术领域的专家、…

数字信号处理实验二(模拟信号采样与重构及频谱分析FFT)

模拟信号采样与重构及频谱分析FFT&#xff08;2学时&#xff09; 要求&#xff1a; 对一模拟信号进行采样&#xff1b;对该采样信号进行重构&#xff1b;分析它们的频谱特征。目的&#xff1a; 熟悉MATLAB命令和编辑、运行、调试环境&#xff1b;掌握采样定理及对信号的频谱分析…

简过网:考教师编制报培训班有用吗?

​ 很多想要备考教师编的朋友都会有一个疑问&#xff0c;那就是备考教师编报培训班有用吗&#xff1f; 其实&#xff0c;主要还是要看你是笔试和面试。 小编觉得如果是笔试的话&#xff0c;其实都是教育理论的东西&#xff0c;线下班其实没有太大的必要&#xff0c;第一是面授…

DFS之搜索顺序——AcWing 1116. 马走日

DFS之搜索顺序 定义 DFS之搜索顺序是指在执行深度优先搜索时&#xff0c;遍历图或树中节点的策略。具体而言&#xff0c;DFS会沿着一条路径深入到底&#xff0c;当无法继续深入时回溯&#xff0c;然后选择另一条未探索的路径继续深入。搜索顺序直接影响到搜索效率和剪枝的可能…

发现CPU占用过高,该如何排查解决?

1.使用top命令 查看cpu占用最多的进程 2.使用 top -H -p pid 发现有两个线程占用比较大 3.将线程id转换为16进制 使用命令 printf 0x%x\n pid 4.使用 jstack pid | grep 线程id(16进制&#xff09; -A 20 &#xff08;显示20行&#xff09; 根据代码显示进行错误排查

电脑为什么会提示丢失msvcp140.dll?怎么修复msvcp140.dll文件会靠谱点

电脑为什么会提示丢失msvcp140.dll&#xff1f;其实只要你的msvcp140.dll文件一损坏&#xff0c;然而你的电脑程序需要运用到这个msvcp140.dll文件的时候&#xff0c;就回提示你丢失了msvcp140.dll文件&#xff01;因为没有这个文件&#xff0c;你的很多程序都用不了的。今天我…

无人机对地面运动目标定位---获取目标的移动方向和速度

目录 一、引子 我们利用单目无人机通过等时间间隔拍照的形式对地面某移动目标进行定位&#xff0c;当前&#xff0c;我们已经获得了每张相片上该目标的三维坐标&#xff0c;并且知道该无人机在飞行过程中拍照的时间间隔&#xff0c;那么我们就可以通过一定的计算&#xff0c;得…

溶酶体靶向嵌合体制备方法和技术

网盘 https://pan.baidu.com/s/1dhCCryatp71j7yXTDdrrTw?pwdynr4 具有聚集诱导发光性质的比率型溶酶体pH探针及应用.pdf 内体-溶酶体转运靶向嵌合体降解剂及其制备方法与应用.pdf 可降解PDGFR-β的蛋白降解靶向嵌合体及其制备方法和应用.pdf 溶酶体膜包覆纳米颗粒的制备方法.…

剪画小程序:自媒体工具推荐:视频文案提取!

各位小伙伴&#xff0c;你们好啊&#xff01; 上周五观看《歌手 2024》第八期时&#xff0c;我再次被何炅老师幽默风趣的主持风格所折服。他的每一句话都仿佛带着魔力&#xff0c;让现场气氛热烈非凡&#xff0c;实在令人羡慕不已&#xff01; 何炅老师的口才之所以如此出色&a…

如何在 Ubuntu上搭建 LAMP

远程登录 Ubuntu系统环境 ssh (User)(IP) # 比如&#xff1a;ssh lennlouis192.168.207.128 为安全起见&#xff0c;建议你使用 root 登录 VPS 后创建一个具有 sudo 权限的帐号。 安装和配置 Apache 2 Apache Http Server 是一个开源的&#xff0c;非常流行&#xff0c;使用…

【Unity小知识】UnityEngine.UI程序集丢失的问题

问题表现 先来说一下问题的表现&#xff0c;今天在开发的时候工程突然出现了报错&#xff0c;编辑器提示UnityEngine.UI缺少程序集引用。 问题分析与解决&#xff08;一&#xff09; 既然是程序集缺失&#xff0c;我们首先查看一下工程项目是否引用了程序集。在项目引用中查找一…

从“钓”到“管”:EasyCVR一体化视频解决方案助力水域安全管理

一、背景 随着城市化进程的加快&#xff0c;越来越多的市民热衷于钓鱼活动。钓鱼活动在带来乐趣的同时&#xff0c;也伴随着一定的安全隐患。尤其是在一些危险水域&#xff0c;也经常出现垂钓者的身影&#xff0c;非法垂钓&#xff0c;这给城市管理带来了不小的阻力。传统的人…

Java传引用问题

本文将介绍 Java 中的引用传递&#xff0c;包括其定义、实现方式、通过引用修改原来指向的内容和通过引用修改当前引用的指向的区别 目录 1、引用传递的概念 2、引用传递的实现方式 3、传引用会发生的两种情况&#xff1a; 通过引用修改当前引用的指向 通过引用修改原来指…

华为OD机试2024年最新题库 JAVA C卷+D卷

目录 专栏导读华为OD机试算法题太多了&#xff0c;知识点繁杂&#xff0c;如何刷题更有效率呢&#xff1f; 一、逻辑分析二、数据结构1、线性表① 数组② 双指针 2、map与list3、队列4、链表5、栈6、滑动窗口7、二叉树8、并查集9、矩阵 三、算法1、基础算法① 贪心思维② 二分查…

统一视频接入平台LntonCVS视频监控平台具体功能介绍

LntonCVS视频监控平台是一款基于H5技术开发的安防视频监控解决方案&#xff0c;专为全球范围内不同品牌、协议及设备类型的监控产品设计。该平台提供了统一接入管理&#xff0c;支持标准的H5播放接口&#xff0c;使其他应用平台能够快速集成视频功能。无论开发环境、操作系统或…

Rufus 制作 Ubuntu 启动盘 | 开启便携的工作空间

唠唠闲话 最近服务器硬盘故障多&#xff0c;在修复过程中&#xff0c;学习了一些操作&#xff0c;这里做个记录。本期主要介绍 U盘启动盘的制作&#xff0c;以及持久化存储。 U 盘启动盘 镜像选择 Ubuntu 的版本命名遵循 “Adjective Animal” 的模式&#xff0c;即 “形容…

关于Wav2Lip配置实现

模型介绍 Wav2Lip是一种先进的深度学习模型&#xff0c;旨在将音频波形直接转换为面部动画&#xff0c;尤其关注于唇部动作的生成与同步。这一技术的核心在于其能够利用输入的语音信号&#xff0c;生成与之高度匹配的嘴唇动作&#xff0c;从而实现逼真的语音驱动数字人物动画效…

electron-vue自定义标题

1.在主进程background.js或者main.js中主窗口配置frame: false async function createWindow() {Menu.setApplicationMenu(null);// Create the browser window.const win new BrowserWindow({width: 1000,height: 600,resizable: false,frame: false,webPreferences: {nodeI…