栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Web︱JSP

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Web︱JSP

简介
  1. JSP(全称Java Server Pages) 与 PHP、ASP、ASP.NET 等语言类似,运行在服务端的语言。JSP 技术是以 Java 语言作为脚本语言的,JSP 网页为整个服务器端的 Java 库单元提供了一个接口来服务于HTTP的应用程序。

  2. 总的来说,JSP 网页就是用另一种方式来编写 Servlet 而不用成为 Java 编程高手。除了解释阶段外,JSP 网页几乎可以被当成一个普通的 Servlet 来对待。

  3. JSP生命周期就是从创建到销毁的整个过程,类似于servlet生命周期,区别在于JSP生命周期还包括将JSP文件编译成servlet。

语法
  1. 脚本程序可以包含任意量的Java语句、变量、方法或表达式,只要它们在脚本语言中是有效的。任何文本、HTML标签、JSP元素必须写在脚本程序的外面。语法格式:
<% 代码片段 %>

如果我们要在页面正常显示中文,我们需要在 JSP 文件头部添加以下代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
  1. 声明:一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。JSP声明的语法格式:
<%! declaration; [ declaration; ]+ ... %>

程序示例:

<%! int i = 0; %> 
<%! int a, b, c; %> 
<%! Circle a = new Circle(2.0); %> 
  1. JSP表达式

一个JSP表达式中包含的脚本语言表达式,先被转化成String,然后插入到表达式出现的地方。表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式。JSP表达式的语法格式:

<%= 表达式 %>

程序示例:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

今天的日期是: <%= (new java.util.Date()).toLocaleString()%>

  1. JSP注释

JSP注释主要有两个作用:为代码作注释以及将某段代码注释掉。JSP注释的语法格式:


<%-- 该部分注释在网页中不会被显示--%> 

今天的日期是: <%= (new java.util.Date()).toLocaleString()%>

  1. JSP指令

JSP指令用来设置与整个JSP页面相关的属性。JSP指令语法格式:

<%@ directive attribute="value" %>

这里有三种指令标签:

指令描述
<%@ page … %>定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等
<%@ include … %>包含其他文件
<%@ taglib … %>引入标签库的定义,可以是自定义标签
动作元素

与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作用。JSP动作元素是用XML语法写成的。

利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。

  1. jsp:include动作元素用来包含静态和动态的文件。该动作把指定文件插入正在生成的页面。

前面已经介绍过include指令,它是在JSP文件被转换成Servlet的时候引入文件,而这里的jsp:include动作不同,插入文件的时间是在页面被请求的时候。

  1. jsp:useBean 动作用来加载一个将在JSP页面中使用的JavaBean。

在类载入后,我们既可以通过 jsp:setProperty 和 jsp:getProperty 动作来修改和检索bean的属性。

  1. jsp:forward动作把请求转到另外的页面。jsp:forward标记只有一个属性page。

  1. jsp:plugin动作用来根据浏览器的类型,插入通过Java插件 运行Java Applet所必需的OBJECT或EMBED元素。

  2. jsp:element 、 jsp:attribute、 jsp:body动作元素动态定义XML元素。

  3. jsp:text动作元素允许在JSP页面和文档中使用写入文本的模板

隐式对象
  1. JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明。JSP隐式对象也被称为预定义变量。
  2. JSP所支持的九大隐式对象:
对象描述
requestHttpServletRequest 接口的实例
responseHttpServletResponse 接口的实例
outjavax.servlet.jsp.JspWriter类的实例,用于把结果输出至网页上
sessionHttpSession类的实例
applicationServletContext类的实例,与应用上下文有关
configServletConfig类的实例
pageContextPageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
page类似于Java类中的this关键字
ExceptionException类的对象,代表发生错误的JSP页面中对应的异常对象
  1. PageContext类定义了一些字段,包括PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE, APPLICATION_SCOPE。其中一个重要的方法就是 removeAttribute(),它可接受一个或两个参数。比如,pageContext.removeAttribute(“attrName”) 移除四个scope中相关属性,但是下面这种方法只移除特定 scope 中的相关属性:
pageContext.removeAttribute("attrName", PAGE_SCOPE);
JSTL
  1. JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。
  2. 根据JSTL标签所提供的功能,可以将其分为5个类别。
  • 核心标签

  • 格式化标签

  • SQL 标签

  • XML 标签

  • JSTL 函数

核心标签

核心标签是最常用的 JSTL标签。引用核心标签库的语法如下:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
标签描述
用于在JSP中显示数据,就像<%= … >
用于保存数据
用于删除数据
用来处理产生错误的异常状况,并且将错误信息储存起来
与我们在一般程序中用的if一样
本身只当做的父标签
的子标签,用来判断条件是否成立
的子标签,接在标签后,当标签判断为false时被执行
检索一个绝对或相对 URL,然后将其内容暴露给页面
forEach基础迭代标签,接受多种集合类型
根据指定的分隔符来分隔内容并迭代输出
用来给包含或重定向的页面传递参数
重定向至一个新的URL.
使用可选的查询参数来创造一个URL
格式化标签

JSTL格式化标签用来格式化并输出文本、日期、时间、数字。引用格式化标签库的语法如下:

<%@ taglib prefix="fmt"  uri="http://java.sun.com/jsp/jstl/fmt" %>
标签描述
fmt:formatNumber使用指定的格式或精度格式化数字
fmt:parseNumber解析一个代表着数字,货币或百分比的字符串
fmt:formatDate使用指定的风格或模式格式化日期和时间
fmt:parseDate解析一个代表着日期或时间的字符串
fmt:bundle绑定资源
fmt:setLocale指定地区
fmt:setBundle绑定资源
fmt:timeZone指定时区
fmt::setTimeZone指定时区
fmt:message显示资源配置文件信息
fmt:requestEncoding设置request的字符编码
SQL标签

JSTL SQL标签库提供了与关系型数据库(Oracle,MySQL,SQL Server等等)进行交互的标签。引用SQL标签库的语法如下:

<%@ taglib prefix="sql" 
           uri="http://java.sun.com/jsp/jstl/sql" %>
标签描述
sql:setDataSource指定数据源
sql:query运行SQL查询语句
sql:update运行SQL更新语句
sql:param将SQL语句中的参数设为指定值
sql:dataParam将SQL语句中的日期参数设为指定的java.util.Date 对象值
sql:transaction在共享数据库连接中提供嵌套的数据库行为元素,将所有语句以一个事务的形式来运行
XML 标签

JSTL XML标签库提供了创建和操作XML文档的标签。引用XML标签库的语法如下:

<%@ taglib prefix="x"             
    uri="http://java.sun.com/jsp/jstl/xml" %>

在使用xml标签前,你必须将XML 和 XPath 的相关包拷贝至你的lib下

JSTL函数

JSTL包含一系列标准函数,大部分是通用的字符串处理函数。引用JSTL函数库的语法如下:

<%@ taglib prefix="fn"    
    uri="http://java.sun.com/jsp/jstl/functions" %>
函数描述
fn:contains()测试输入的字符串是否包含指定的子串
fn:containsIgnoreCase()测试输入的字符串是否包含指定的子串,大小写不敏感
fn:endsWith()测试输入的字符串是否以指定的后缀结尾
fn:escapeXml()跳过可以作为XML标记的字符
fn:indexOf()返回指定字符串在输入字符串中出现的位置
fn:join()将数组中的元素合成一个字符串然后输出
fn:length()返回字符串长度
fn:replace()将输入字符串中指定的位置替换为指定的字符串然后返回
fn:split()将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回
fn:startsWith()测试输入字符串是否以指定的前缀开始
fn:substring()返回字符串的子集
fn:substringAfter()返回字符串在指定子串之后的子集
fn:substringBefore()返回字符串在指定子串之前的子集
fn:toLowerCase()将字符串中的字符转为小写
fn:toUpperCase()将字符串中的字符转为大写
fn:trim()移除首尾的空白符
EL表达式
  1. JSP表达式语言(EL) 使得访问存储在JavaBean中的数据变得非常简单。JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式。在JSP EL表达式内可以使用整型数,浮点数,字符串,常量true、false,还有null。
  2. JSP EL允许您指定一个表达式来表示属性值。一个简单的表达式语法如下:
${expr}

其中,expr指的是表达式。在JSP EL中通用的操作符是 . 和 {} 。这两个操作符允许您通过内嵌的JSP对象访问各种各样的JavaBean属性。
想要停用对EL表达式的评估的话,需要使用page指令将isELIgnored属性值设为true:

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

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

  1. EL表达式支持大部分Java所提供的算术和逻辑操作符:
操作符描述
.访问一个Bean属性或者一个映射条目
[]访问一个数组或者链表的元素
( )组织一个子表达式以改变优先级
+
-减或负
*
/ or div
% or mod取模
== or eq测试是否相等
!= or ne测试是否不等
< or lt测试是否小于
> or gt测试是否大于
<= or le测试是否小于等于
>= or ge测试是否大于等于
&& or and测试逻辑与
|| or or测试逻辑或
! or not测试取反
empty测试是否空值
  1. JSP EL允许您在表达式中使用函数。这些函数必须被定义在自定义标签库中。函数的使用语法如下:
${ns:func(param1, param2, ...)}

ns指的是命名空间(namespace),func指的是函数的名称,param1指的是第一个参数

  1. JSP EL支持下表列出的隐含对象:
隐含对象描述
pageScopepage 作用域
requestScoperequest 作用域
sessionScopesession 作用域
applicationScopeapplication 作用域
paramRequest 对象的参数,字符串
paramValuesRequest对象的参数,字符串集合
headerHTTP 信息头,字符串
headerValuesHTTP 信息头,字符串集合
initParam上下文初始化参数
cookiecookie值
pageContext当前页面的pageContext
  1. 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参数:


<% out.print(title); %>

${param["username"]}

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/361461.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号