JSP高级进阶

本文深入探讨JSP高级特性,包括EL表达式的语法、基础操作符和隐含对象,数据库连接的SELECT、INSERT、DELETE、UPDATE操作,JavaBean的属性和使用,JSTL的核心标签、SQL操作和函数库,以及JSP的异常处理和国际化处理。通过实例展示了EL表达式在页面中的应用,以及如何通过JSTL进行数据库交互。此外,还讲解了JavaBean的属性访问和JSP国际化中的Locale检测及日期、货币、百分比的格式化。
摘要由CSDN通过智能技术生成

JSP高级进阶

1、EL表达式

1.1、表达式语言

**JSP表达式语言(EL)**使得访问存储在JavaBean中的数据变得非常简单。JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式。在JSP EL表达式内可以使用整型数浮点数字符串常量truefalse,还有null

1.2、一个简单的语法

典型的,当您需要在JSP标签中指定一个属性值时,只需要简单地使用字符串即可:

<jsp:setProperty name="box" property="perimeter" value="100"/>

JSP EL允许您指定一个表达式来表示属性值。一个简单的表达式语法如下:

${expr}// 根据变量名取出变量值

其中,expr指的是表达式。在JSP EL中通用的操作符是 .{} 。这两个操作符允许您通过内嵌的JSP对象访问各种各样的JavaBean属性。

举例来说,上面的jsp:setProperty标签可以使用表达式语言改写成如下形式:

<jsp:setProperty name="box" property="perimeter" value="${2*box.width+2*box.height}"/>

当JSP编译器在属性中见到"${}"格式后,它会产生代码来计算这个表达式,并且产生一个替代品来代替表达式的值。

您也可以在标签的模板文本中使用表达式语言。比如jsp:text标签简单地将其主体中的文本插入到JSP输出中:

<jsp:text>
	<h1>Hello JSP!</h1>
</jsp:text>

现在,在jsp:text标签主体中使用表达式,就像这样:

<jsp:text>
	Box Perimeter is: ${2*box.width + 2*box.height}
</jsp:text>

在EL表达式中可以使用圆括号来组织子表达式。比如 ( 1 + 2 ) ∗ 3 等 于 9 , 但 是 {(1 + 2) * 3}等于9,但是 (1+2)39{1 + (2 * 3)} 等于7。

想要停用对EL表达式的评估的话,需要使用page指令将isELIgnored属性值设为true:

<%@ page isELIgnored ="true|false" %>

这样,EL表达式就会被忽略。若设为false,则容器将会计算EL表达式。

1.3、EL中的基础操作符

EL表达式支持大部分Java所提供的算术和逻辑操作符:

操作符 描述
. 访问一个Bean属性或者一个映射条目
[] 访问一个数组或者链表的元素 下标 和 名字
( ) 组织一个子表达式以改变优先级
+
- 减或负
*
/ or div
% or mod 取模
== or eq 测试是否相等
!= or ne 测试是否不等
< or lt 测试是否小于
> or gt 测试是否大于
<= or le 测试是否小于等于
>= or ge 测试是否大于等于
&& and 测试逻辑与
|| or 测试逻辑或
! not 测试取反
empty 测试是否空值

1.4、JSP EL隐含对象

JSP EL支持下表列出的隐含对象:

隐含对象 描述
pageScope page 作用域
requestScope request 作用域
sessionScope session 作用域
applicationScope application 作用域
param Request 对象的参数,字符串
paramValues Request对象的参数,字符串集合
header HTTP 信息头,字符串
headerValues HTTP 信息头,字符串集合
initParam 上下文初始化参数
cookie Cookie值
pageContext 当前页面的pageContext

您可以在表达式中使用这些对象,就像使用变量一样。接下来会给出几个例子来更好的理解这个概念。

pageContext对象

pageContext对象是JSP中pageContext对象的引用。通过pageContext对象,您可以访问request对象。比如,访问request对象传入的查询字符串,就像这样:

${pageContext.request.queryString}
Scope对象

pageScope,requestScope,sessionScope,applicationScope变量用来访问存储在各个作用域层次的变量。

举例来说,如果您需要显式访问在applicationScope层的box变量,可以这样来访问:applicationScope.box。

变量取值顺序: pageScope>requestScope>sessionScope>applicationScope 。

param和paramValues对象

param和paramValues对象用来访问参数值,通过使用request.getParameter方法和request.getParameterValues方法。

举例来说,访问一个名为order的参数,可以这样使用表达式: p a r a m . o r d e r , 或 者 {param.order},或者 param.order{param[“order”]}。

接下来的例子表明了如何访问request中的username参数:

<%@ page import="java.io.*,java.util.*" %>
<%
    String title = "Accessing Request Param";
%>
<html>
    <head>
    	<title><% out.print(title); %></title>
    </head>
<body>
    <center>
    	<h1><% out.print(title); %></h1>
    </center>
    <div align="center">
    	<p>${param["username"]}</p>
    </div>
</body>
</html>

param对象返回单一的字符串,而paramValues对象则返回一个字符串数组。

header和headerValues对象

header和headerValues对象用来访问信息头,通过使用 request.getHeader方法和request.getHeaders方法。

举例来说,要访问一个名为user-agent的信息头,可以这样使用表达式: h e a d e r . u s e r − a g e n t , 或 者 {header.user-agent},或者 header.useragent{header[“user-agent”]}。

接下来的例子表明了如何访问user-agent信息头:

<%@ page import="java.io.*,java.util.*" %>
<%
    String title = "User Agent Example";
%>
<html>
    <head>
    	<title><% out.print(title); %></title>
    </head>
    <body>
        <center>
        	<h1><% out.print(title); %></h1>
        </center>
        <div align="center">
        	<p>${header["user-agent"]}</p>
        </div>
    </body>
</html>
Attribute

page、request、response、application都可以通过setAttribute()来设置一个键值对存储,然后EL表达式可以通过 **${键}**来获取一个值。

2、连接数据库

2.1、提前准备

注意:

你可以下载本站提供的 jar 包:

下载后把 mysql-connector-java-<对应版本>-bin.jar 拷贝到 tomcat 下 lib 目录。

<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Thymeleaf进阶方面,有一些资源可以帮助您深入学习和掌握Thymeleaf的高级功能和技巧。首先,您可以参考Thymeleaf的GitHub主页,其中提供了该项目的源代码和文档,了解最新版本的功能和更新。此外,您还可以查阅一些专门关于Thymeleaf的教程和指南,这些资源可以帮助您更好地理解Thymeleaf的用法和特性。 对于Thymeleaf的字符串操作,您可以参考一些教程和博客文章,其中会介绍在Thymeleaf下常用的字符串操作。这些操作可以帮助您在生成HTML时,处理和调整字符串的内容,以及实现一些特定的需求。 另外,Thymeleaf也是基于Web标准的,特别是HTML5。它允许您创建完全符合验证规范的模板,并且在Spring Boot中,官方推荐使用Thymeleaf来替代JSP。这意味着Thymeleaf可以帮助您更好地构建和管理Web应用程序的前端部分,并且与后端的数据交互更加方便和灵活。 总结起来,在Thymeleaf的进阶学习中,您可以参考Thymeleaf的GitHub主页、教程和指南,以及探索其在Web开发中的优势和特点。这些资源将帮助您更好地理解和应用Thymeleaf的高级功能,并提升您在使用Thymeleaf进行开发时的效率和技术水平。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Thymeleaf模板的学习一【基础知识】【java进阶编程】](https://blog.csdn.net/notlikeregist/article/details/90171063)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [thymeleaf进阶使用](https://blog.csdn.net/whatlookingfor/article/details/78353819)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值