JSP笔记

本文详细介绍了JSP的基础语法,包括注释、Scriptlet、指令标签和四大域对象,特别是静态与动态包含的区别。同时,探讨了EL表达式的使用,如获取List、Map和JavaBean对象。此外,还介绍了JSTL的核心标签库,如条件动作标签(if、choose、when、otherwise)、迭代标签(forEach)以及格式化动作标签(formatNumber、formatDate、parseNumber、parseDate),帮助开发者更高效地处理JSP页面逻辑。
摘要由CSDN通过智能技术生成


主要内容
在这里插入图片描述

一、JSP

1.1 JSP的基础语法

1.1.1 注释

JSP中支持两种注释语法操作:
一种是显示注释,这种注释允许客户端看见;另一种是隐式注释,这种注释客户端无法看见。
①显示注释:从HTML风格继承而来
②隐式注释:从JAVA风格继承;jsp自己的注释

JSP的三种方式:

  1. //单行注释
    /* 多行注释*/
  2. <!--HTML风格的注释-->
  3. <%-- JSP注释--%>

1.1.2 Scriptlet

JSP中的脚本小程序,所有嵌入HTML代码中的java程序,但是不建议使用,因为使用时会导致耦合过高。

JSP中的三种Scriptlet代码:

第一种:<% %> : java脚本段,可以定义局部变量、编写语句
第二种:<%! %>::声明,可以定义全局(成员)变量、方法、类
第三种:<%= %> :表达式,数据一个变量或具体类容

第一种和第三种生成的代码是在servlet的方法中,第二种生成的代码在servlet的类体中。

1.2 JSP的指令标签

使用包含操作,可以将一些重复的代码包含进来继续使用,从正常的页面组成来看,有时可能分为几个区域。而其中的一些区域可能是一直不需要改变的,改变的就其中的一个具体内容区域。现在有两种方法可以实现上述功能。

方法一:在每个JSP页面(HTML)都包含工具栏、头部信息、尾部信息、具体内容

方法二:将工具栏、头部信息、尾部信息都分成各个独立的文件,使用的时候直接导入

很明显,第二种方法比第一种更好,第一种会存在很多重复的代码,并且修改很不方便,在JSP中如果要想实现包含的操作,有两种做法:静态包含、动态包含,静态包含使用include 指令即可,动态包含则需要使用include动作标签。

1.2.1 include 静态包含

<%@ include file="要包含的文件路径"%>   <!-- 相对路径 -->

静态包含就是将内容进行了直接的替换,就好比程序中定义的变量一样是在servlet引擎转译时,就把此文件内容包含了进去(两个文件的源代码整合到一起,全部放到_jspService方法中),所以只生成了一个servlet,所以两个页面不能同名的变量。运行效率高一点点。耦合性较高,不够灵活。

特点:

  1. 将内容进行了直接的替换
  2. 静态包含只生成一个源码文件,最终的内容在一个jspservice方法体中,
  3. 不能出现同名变量
  4. 运行效率高一点点,耦合性较高,不够灵活。

1.2.2 include 动态包含

<jsp:include page="要包含的页面路径"></jsp:include>

特点:

  1. 动态包含相当于方法的调用
  2. 动态包含生成多个源码文件
  3. 可以定义同名变量
  4. 效率高,耦合度低

注意:当动态包含不需要传递参数时,include双标签之间不要有任何内容

使用动态包含传递参数:

<jsp:include page="要包含的页面路径">
	<jsp:param name="参数名" value="参数值"/>
</jsp:include>

注意:name属性不支持表达式,value属性支持表达式

获取动态包含传递的数(被包含的j页面中):

<%
	request.getParameter("参数名");
%>

1.3 JSP的四大域对象

1.3.1 四种属性范围

在JSP中提供了四种属性的保存范围,所谓的属性保存范围,指的就是一个设置的对象,可以再多少个页面中保存并可以继续使用

  1. page范围
    pageContext :只在一个页面中保存属性,跳转之后无效
  2. request范围
    request:只在一次请求中睐存,服务器跳转后依然有效
  3. session范围
    session :在一次会话范围中,无论何种跳转都可以使用
  4. application范围
    application :在整个服务器上保存
方法 类型 描述
public void setAttribute(String name, Object o) 普通 设置属性的名称及内容
public Object getAttribute(String name) 普通 根据属性名称取属性
public void removeAttribute(String name) 普通 删除指定的属性

1.3.2 属性范围的特点

  1. page
    本页面取得服务器端跳转()(请求转发)后无效
  2. request
    服务器跳转(请求转发)有效,客户端跳转无效
    如果是客户端跳转,则相当于发出了两次请求,那么第一次的请求将不存在了;如果希望不管是客户端还是服务器跳转,都能保存的话,就需要继续扩大范围。
  3. session
    无论客户端还是服务器端都可以取得,但是现在重新开启一个新的浏览器,则无法取得之前设置的session了,因为每一个session只保存在当前的浏览器当中,并在相关的页面取得。
    对于服务器而言,每一个连接到它的客户端都是一个session
    如果想要让属性设置一次之后,不管是否是新的浏览器打开都能取得则可以使用application
  4. application
    所有的application属性直接保存在服务器上,所有的用户(每一个session)都可以直接访问取得
    只要是通过application设置的属性,则所有的session都可以取得,表示公共的内容,但是如果此时服务器重启了,则无法取得了,因为关闭服务器后,所有的属性都消失了,所以需要重新设置。

JSP中跳转方式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值