JSP和JSTL学习笔记

一、引言

JSP介绍

1、JSP (JavaServer Pages)是一种将 Java 代码嵌入到 HTML 页面中的技术,它允许开发人员在网页中嵌入动态生成的内容。

2、JSP 页面中可以包含 Java 代码块、表达式和声明,这些代码会在服务器端执行,并生成动态的 HTML 内容,然后发送给客户端浏览器。

补充:Servlet 通常用于处理业务逻辑、数据处理和与数据库交互等任务。Servlet 接收来自客户端的请求,根据请求的内容进行相应的处理,然后生成响应并发送回客户端。

JSP和Servlet的关系

JSPServlet 是 Java Web 开发中的两个关键技术,Servlet 接收请求并调用适当的业务逻辑,然后将处理结果传递给 JSP,JSP 使用 Java 代码和标签来生成最终的 HTML 响应。

通常的开发模式是:

业务逻辑和数据处理等复杂的任务 ——> Servlet

展示和页面渲染的任务 ——> JSP

Servlet 负责处理请求和响应的底层逻辑,而 JSP 则负责展示和呈现数据,使得开发人员可以更容易地分离前端和后端的职责,并实现更高效的 Web 应用程序开发。

JSP和其他语言区别

  1. JSP vs. HTML:

    • JSP 是一种动态网页技术,允许在 HTML 页面中嵌入 Java 代码,以便生成动态内容。JSP 页面可以包含 Java 代码块、表达式和声明,用于处理业务逻辑和动态数据。
    • HTML 是一种静态标记语言,用于定义网页的结构和内容。它主要用于静态网页的呈现,不具备动态生成内容的能力。
  2. JSP vs. Servlet:

    • JSP 是基于 Servlet 的技术,它通过将 Java 代码嵌入到 HTML 页面中,以一种更易读和易于维护的方式实现了动态网页的生成。JSP 最终会被编译为 Servlet,然后在服务器端执行。
    • Servlet 是一种 Java 程序,用于接收客户端请求、处理业务逻辑和生成响应。Servlet 通过编程方式处理请求和响应,具备更高的灵活性和控制力,适用于处理复杂的业务逻辑和数据操作。
  3. JSP/Servlet vs. HTML/CSS/JavaScript:

    • JSP 和 Servlet :服务器端的动态处理和业务逻辑实现能力,适用于处理用户请求、数据处理和生成动态内容。
    • HTML、CSS 和 JavaScript :客户端浏览器中执行,用于实现用户界面和交互效果。(前端技术,用于定义和呈现网页的结构、样式和交互)

二、JSP基本语法 

1、JSP注释

显示注释:客户端点击显示源码后能看到的注释

        <!-- 这是一个 HTML (显式)注释 -->

隐式注释:客户端点击显示源码后看不到的注释,其中Java注释是在Java段中才有效

        1、JSP自己的注释: <%-- 这是一个 JSP (隐式)注释 --%>

        2、继承Java风格的注释://这是一个Java单行注释

                                                  /*这是一个Java多行注释*/

2、Scriptlet

嵌入的HTML代码中的脚本小程序,可以写Java代码(不建议)

第一种:<%         //可以写Java代码,定义局部变量、编写语句等         %>

        生成的代码在Servlet中的service方法体中

第二种:<%!        声明全局变量、方法、类等 %>

        生成的代码在Servlet的类体中

第三种:<%=数值%>        可以输出表达式

        生成的代码在Servlet中的service方法体中,相当于out.printf()

3、JSP指令标签 

一种将页面中重复的部分提取出来的技术

静态包含

        <%@include file="文件地址"%>        

内容直接替换,源码只有一个文件,所以两个文件不能有同名的变量

动态包含

        <jsp:include page="文件地址"></jsp:include>

运行的时候才动态包含进来,相当于调用方法,生成多个源码文件

当不传递参数时,两个标签直接不要有任何内容(包括空格)

要传参数,中间加上:

        <jsp:param name="xxx" value="xxx"/>

4、jsp中的跳转

服务端跳转:

        <jsp:forward page="xxx"></jsp:forward>

客户端跳转:

        <a href="xxx"></a>

5、

 三、JSP中四大域对象

  1. page 域(Page Scope):

    • 属性范围:只在当前页面有效。
    • 存储位置:存储在 pageContext 对象中。
    • 访问方式:可以直接在当前页面的任何位置使用。
  2. request 域(Request Scope):

    • 属性范围:在同一个请求处理过程中有效,包括转发请求。
    • 存储位置:存储在 request 对象中。
    • 访问方式:可以在同一请求的不同页面、Servlet 或 JSP 中使用。
  3. session 域(Session Scope):

    • 属性范围:在用户会话期间有效,跨越多个请求和页面。
    • 存储位置:存储在 session 对象中。
    • 访问方式:可以在同一用户的不同请求和页面中使用。
  4. application 域(Application Scope):

    • 属性范围:在整个应用程序的生命周期中有效,跨越多个会话。
    • 存储位置:存储在 ServletContext 对象中。
    • 访问方式:可以在整个应用程序的不同请求和页面中使用。

四、EL表达式

EL(Expression Language)是一种用于在JSP中简化表达式的语言。EL表达式提供了一种简洁的方式来访问和操作JavaBean的属性、调用方法、访问集合和映射等,而不需要繁琐的使用request.getAttribute("xxx")。下面是一些常用的EL表达式语法:

  1. 访问JavaBean属性:

    • ${user.name}:访问User对象的name属性值。
    • ${user.getName()}:调用User对象的getName()方法。
  2. 数组和列表访问:

    • ${array[0]}:访问数组array的第一个元素。
    • ${list[2]}:访问列表list的第三个元素。
  3. Map访问:

    • ${map.key}:访问Map中名为"key"的键对应的值。
  4. 空值检查:

    • ${empty variable}:检查变量是否为空,例如${empty user}
  5. 算术和逻辑运算:

    • ${2 + 3}:执行加法运算,结果为5。
    • ${user.age > 18}:检查User对象的age属性是否大于18。
  6. 条件语句:

    • ${user.age > 18 ? "成年人" : "未成年人"}:根据User对象的age属性值选择不同的文本。
  7. 迭代和循环:

    • ${for(item : userList)}:迭代名为userList的集合中的每个元素。
    • ${while(count < 10)}:执行循环,直到count变量的值小于10为止。
  8. EL函数:

    • ${fn:length(string)}:调用内置函数,计算字符串的长度。例如${fn:length(user.name)}

这些只是EL表达式的一些常见用法示例,EL还提供了更多的功能和语法,如运算符、内置函数、隐式对象等。EL表达式的具体语法和用法可以参考相关的文档和教程。

五、JSTL

在以下页面下载对应的版本,把lib目录中的两个文件拷贝到IDEA项目中web/WEB-INF目录下的lib中去(没有则新建)

Index of /dist/jakarta/taglibs/standard/binaries (apache.org)

在JSP中使用JSTL必须要使用<%@taglib uri="Oracle Java Technologies | OracleOracle Java Technologies | Oracle" prefix="c" %> 

<c:if></c:if> 

test:条件判断,操作的是域对象,返回Boolean类型的值(必需)

var:限域变量名(存放在作用域中的变量名),用来接收判断结果

scope:指定var在什么域内有效(page、request等)

if标签 ——> 没有else

choose、when、otherwise

1. choose、otherwise没有属性,when有test属性(必须)

2. choose中只能由when、otherwise标签,不能出现if标签;而when、otherwise可以嵌套其他标签

3. 结构可以类比Switch-Case

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值