JSP简单学习

jsp是在html中嵌入java代码
jsp也是在j2ee服务端中的java组件

第一次运行

在第一次运行jsp代码时会经历以下步骤,将jsp转为java代码,将java代码转为class文件。
所以通常会比较慢,编译后就好多了。

四大作用域

  • request
  • session
  • page
  • application

部署jsp

<servlet><servlet-name>a<servlet-name/><jsp-file>/a.jsp<jsp-file/><servlet-mappiing><servlet-name><servlet-name/><url-pattern><url-pattern/><servlet-mappiing/>
<servlet/>

jsp作为servlet的继承者,自然是可以部署的,但是一般不会这么做。

内嵌java语法

  • <%@ %>jsp指令的语法
  • <%= %>jsp表达式的语法
  • <%! %>jsp声明的语法
  • <%-- --%>jsp注释的语法
  • <% %>jsp中可以放置任何合法的java代码,其最终会被转换到service代码内。

jsp指令

  • <%@ page 属性列表%> 定义页面的依赖属性,如脚本语言,error页面,缓存需求等
  • <%@ include file="afile" %> 包含其它文件
  • <%@ taglib uri="" prefix="a" %> 标签库的定义

例子

<%@ page import="java.util.*,java.net.*,java.io.*" session="true" isErrorPage="false" errorPage="/error.jsp"%>
<%@ include file="copyright.html" %>

Jsp声明

声明函数或变量,供后续使用。

<%! int i = 0;%>
<%! Circle a = new Circle(2.0);%>

或者

<jsp:declaration>int i = 0;
<jsp:declaration/>

Jsp的action行为标签

在这里插入图片描述
在这里插入图片描述

9个隐式变量(内置变量)

HttpServletRequest request
HttpServletEesponse response
ServletContext application
PageContext pagecontext
ServletConfig config
HttpSession session
JspWriter out
Exception exception
page,等价于this

考试重点JspWriter,PageContext

package javax.servlet.jsppublic abstract class JspWriter extends Writer {public static final int NO_BUFFER = 0;public static final int DEFAULT_BUFFER = -1;指示 Writer 已缓冲并使用实现默认缓冲区大小的常量。public static final int UNBOUNDED_BUFFER = -2;常量表示 Writer 是缓冲的并且是无界的;这在 BodyContent 中使用。protected int bufferSize;protected boolean autoFlush;protected JspWriter(int bufferSize, boolean autoFlush) {this.bufferSize = bufferSize;this.autoFlush = autoFlush;}public abstract void newLine() throws IOException;public abstract void print(boolean var1) throws IOException;public abstract void print(char var1) throws IOException;public abstract void print(int var1) throws IOException;public abstract void print(long var1) throws IOException;public abstract void print(float var1) throws IOException;public abstract void print(double var1) throws IOException;public abstract void print(char[] var1) throws IOException;public abstract void print(String var1) throws IOException;public abstract void print(Object var1) throws IOException;public abstract void println() throws IOException;public abstract void println(boolean var1) throws IOException;public abstract void println(char var1) throws IOException;public abstract void println(int var1) throws IOException;public abstract void println(long var1) throws IOException;public abstract void println(float var1) throws IOException;public abstract void println(double var1) throws IOException;public abstract void println(char[] var1) throws IOException;public abstract void println(String var1) throws IOException;public abstract void println(Object var1) throws IOException;public abstract void clear() throws IOException;public abstract void clearBuffer() throws IOException;public abstract void flush() throws IOException;public abstract void close() throws IOException;public int getBufferSize() {return this.bufferSize;}public abstract int getRemaining();此方法返回缓冲区中未使用的字节数。public boolean isAutoFlush() {return this.autoFlush;}
}
package javax.servlet.jsppublic abstract class PageContext extends JspContext {public static final int PAGE_SCOPE = 1;public static final int REQUEST_SCOPE = 2;public static final int SESSION_SCOPE = 3;public static final int APPLICATION_SCOPE = 4;public static final String PAGE = "javax.servlet.jsp.jspPage";public static final String PAGECONTEXT = "javax.servlet.jsp.jspPageContext";public static final String REQUEST = "javax.servlet.jsp.jspRequest";public static final String RESPONSE = "javax.servlet.jsp.jspResponse";public static final String CONFIG = "javax.servlet.jsp.jspConfig";public static final String SESSION = "javax.servlet.jsp.jspSession";public static final String OUT = "javax.servlet.jsp.jspOut";public static final String APPLICATION = "javax.servlet.jsp.jspApplication";public static final String EXCEPTION = "javax.servlet.jsp.jspException";public PageContext() {}public abstract void initialize(Servlet var1, ServletRequest var2, ServletResponse var3, String var4, boolean var5, int var6, boolean var7) throws IOException, IllegalStateException, IllegalArgumentException;public abstract void release();public abstract HttpSession getSession();public abstract Object getPage();页面对象的当前值(在 Servlet 环境中,这是 javax.servlet.Servlet 的实例)。public abstract ServletRequest getRequest();请求对象 (ServletRequest) 的当前值。public abstract ServletResponse getResponse();响应对象 (ServletResponse) 的当前值。public abstract Exception getException();public abstract ServletConfig getServletConfig();public abstract ServletContext getServletContext();public abstract void forward(String var1) throws ServletException, IOException;public abstract void include(String var1) throws ServletException, IOException;public abstract void include(String var1, boolean var2) throws ServletException, IOException;public abstract void handlePageException(Exception var1) throws ServletException, IOException;public abstract void handlePageException(Throwable var1) throws ServletException, IOException;public BodyContent pushBody() {return null;}public ErrorData getErrorData() {return new ErrorData((Throwable)this.getRequest().getAttribute("javax.servlet.error.exception"), (Integer)this.getRequest().getAttribute("javax.servlet.error.status_code"), (String)this.getRequest().getAttribute("javax.servlet.error.request_uri"), (String)this.getRequest().getAttribute("javax.servlet.error.servlet_name"));}
}

JSP EL表达式

<%request.setAttribute("a","hello")
%>
${a}

会在四大作用域中依次搜索a这个键名。
显示hello

变量定义使用setAttribute()方法进行设置,可以设置在四大作用域中的任意一个域中。

预定义11个对象

为了方便使用,定义了可以直接供我们使用的11个对象。
大多是都是用Map存储,采用键值对的形式。

  • pageContext
  • param
  • paramValues
  • header
  • headerValues
  • cookie
  • initParam
  • pageScope
  • requestScope
  • sessionScope
  • applicationScope

只有pageContext是PageContext类型。

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

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

相关文章

LLM之幻觉(二):大语言模型LLM幻觉缓减技术综述

LLM幻觉缓减技术分为两大主流&#xff0c;梯度方法和非梯度方法。梯度方法是指对基本LLM进行微调&#xff1b;而非梯度方法主要是在推理时使用Prompt工程技术。LLM幻觉缓减技术&#xff0c;如下图所示&#xff1a; LLM幻觉缓减技术值得注意的是&#xff1a; 检索增强生成&…

软件测试|如何使用selenium操作窗口滚动条

简介 我们在进行自动化测试工作的时候&#xff0c;如果页面内容过多&#xff0c;一次性加载耗时太长的话&#xff0c;会使用分段加载来加载页面内容&#xff0c;比如开始只加载页面顶端的内容&#xff0c;而如果要加载更多的数据&#xff0c;就需要我们向下滑动&#xff0c;让…

REVIT二次开发生成三维轴网

步骤1 确定轴网 步骤2 生成3D轴网 using System; using System.Collections.Generic; using System.Linq; using System.Text;

【程序人生】研二上快结束了~整理最近的思路

看一下自己的《每日科研进展》群聊&#xff0c;把最近做的事情和后面要做的事情整理一下思路。 1月1日到1月7日 在整理NoC Router执行流程和Chisel环境Setup流程&#xff1a; NoC Router执行流程 Chisel安装流程总结&#xff1a; 先安装jdk&#xff0c;配置环境变量安装sbt…

Eureka整合seata分布式事务

文章目录 前言一、Seata配置1.1、Seata下载1.2、修改conf目录中 flie.conf 文件1.3、修改conf目录中 registry.conf文件1.4、初始化seata数据库 二、微服务整合Seata2.1、父工程项目创建引入依赖 2.2、Eureka集群搭建2.3、搭建账户微服务2.3.1 新建seata-account-service微服务…

深度学习实战69-语义分割任务实战中Unet模型的搭建、结构说明与模型训练全过程

大家好,我是微学AI,今天给大家介绍一下深度学习实战69-语义分割任务实战中Unet模型的搭建、结构说明与模型训练全过程,U-Net是一种专为医学图像分割设计的卷积神经网络。它由Olaf Ronneberger等人在2015年提出,并迅速在生物医学图像分析领域获得广泛应用。U-Net模型的特点是…

青阳龙野网络文件传输系统Docker版

青阳龙野网络文件传输系统Docker版 基于底包debian:bookworm-slim制作 一键拉取命令如下&#xff1a; docker run -idt \ -p 8080:8080 \ -v /data:/kiftd-1.1.1-release/filesystem \ -v /kiftd/conf:/kiftd-1.1.1-release/conf \ -e TZAsia/Shanghai \ --privilegedtrue \…

Matlab深度学习进行波形分割(二)

&#x1f517; 运行环境&#xff1a;Matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 &#x1f510;#### 防伪水印——左手の明天 ####&#x1f510; &#x1f497; 大家…

React快速入门(一)基础与语法

React快速入门&#xff08;一&#xff09;基础与语法React的介绍和特点React组件化的封装React数据事件处理JSX语法React事件绑定React条件渲染React列表渲染 React快速入门&#xff08;一&#xff09;基础与语法 用于构建用户界面的JavaScript库目前国内外最流行的三大框架&a…

【概述版】悲剧先于解析:在大型语言模型的新时代,历史重演了

这篇论文探讨了大型语言模型&#xff08;LLM&#xff09;的成功对自然语言处理&#xff08;NLP&#xff09;领域的影响&#xff0c;并提出了在这一新时代中继续做出有意义贡献的方向。作者回顾了2005年机器翻译中大型语法模型的第一个时代&#xff0c;并从中汲取教训和经验。他…

万字讲解新一代分布式任务调度框架Power-job

1、简介 Power-Job 的设计目标是成为企业级的分布式任务调度平台&#xff0c;整个公司统一部署调度中心 power-job-server&#xff0c;旗下所有业务线应用只需要依赖 power-job-worker 即可接入调度中心获取任务调度与分布式计算能力。 Power-job官方网址&#xff1a;http:/…

Python爬虫 - 网易云音乐下载

爬取网易云音乐实战&#xff0c;仅供学习&#xff0c;不可商用&#xff0c;出现问题&#xff0c;概不负责&#xff01; 分为爬取网易云歌单和排行榜单两部分。 因为网页中&#xff0c;只能显示出歌单的前20首歌曲&#xff0c;所以仅支持下载前20首歌曲&#xff08;非VIP音乐&…