前言:开发需要,有一个老项目,使用的是前后端不分离的框架,前端使用的JSP开发,于是需要恶补JSP的基础知识和语法。以下是学习过程总结的一些有用的基础知识。
推荐学习:
JSP 语法 | 菜鸟教程
简介
Jsp是一个简化的Servlet设计,是在服务器端执行,实现了在Java中使用HTML标签。
JSTL - JSP标准标签库.
JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。
JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。
JSP的实质就是Servlet。JSP由两部分组成:
- 静态部分:包含标准的HTML标签和静态页面,和HTML基本一致。
- 动态部分:包含需要从数据库中读取或需要动态生成的内容,实际就是通过Java代码产生的数据内容。
Servlet
Servlet是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,是一个Java类。
JavaWeb中servlet主要功能是承载网络连接,业务逻辑处理,比如一些编码格式的转换、登录拦截等。
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。
JSP元素
JSP元素构成:JSP页面组成部分:指令、表达式、小脚本、声明、注释、静态内容。
JSP的脚本必须使用<%%>括起来
指令
JSP一共有三个指令,分别是
page,taglib,include
。指令的语法:
<%@指令 属性名="值" %>
-
page指令:通常位于JSP页面顶端,定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等。同一个页面可以有多个page指令。
<%@ page import="foo.,java.util." contentType="UTF-8" %>
page指令中指定contentType=“text/html;charset=UTF-8”,就不会出现中文乱码问题。
-
taglib 指令:用来导入EL函数。当我们在EL中想要调用其它 Java 类时,就会用到这个指令。
JSP支持标签技术,要使用标签技术就先得声明标签库和标签前缀。taglib指令就是用来指明JSP页面内使用标签库技术
作用:该指令用于引入外部标签库。html标签和jsp标签不用引入。
属性:
-
uri
:外部标签的URI地址。 -
prefix
:使用标签时的前缀。c.JSP: <%@ taglib prefix="mine" uri="DiceFunctions" %> <html> <body> Hello world ${mine:rollIt()} </body> </html>
-
include 命令:作用为静态包含。静态包含的意思就是:把文件的代码内容都包含进来,再编译。
静态包含:
如果我们有很多个 JSP 都有重复的地方怎么办呢,比如说都有页眉与页尾,那么就可以把这些地方抽取出来作为公用部分,使用include 指令来复用这些页面。
<%@ include file="Header.jsp" %>
动态包含:相当于方法调用,会生成多个源码文件,可以定义同名变量
JSP 行为
JSP 自带的变量(隐含对象)
基本语法
脚本程序的语法格式:
<% 代码片段 %>
等价于
<jsp:scriptlet>
代码片段
</jsp:scriptlet>
任何文本、HTML标签、JSP元素必须写在脚本程序的外面
JSP语法完整示例代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>JSP语法</title>
</head>
<body>
<!--Java代码块-->
<% out.println("这是Java代码块");%>
<hr/>
<!--JSP表达式-->
<%="这是JSP表达式"%><br/>
就相当于<br/>
<%out.println("这是没有JSP表达式输出的");%>
<hr/>
<!--JSP声明-->
<%! String str = "声明语法格式";%>
<%=str%>
<hr/>
<%--JSP注释--%>
<!--HTML注释-->
</body>
</html>
-
注释
<%--这里是注释内容--%>
-
声明
<%!声明部分%> <%! public int num; public String name; public void speak(){ out.println("我是JSP声明的方法!"); } %>
-
输出表达式
<%=表达式%> 等号就相当于Java中的输出语句。 <%=num%> 等价于 <%out.println(num)%>
输出表达式后不能有分号。
-
if else
-
Switch case
-
循环语句
JSP 语法 | 菜鸟教程
JSTL - JSP标准标签库.
JSTL 支持以下标签库:
-
Core 标签库
-
XML processing 标签库
-
I18N formatting 标签库
-
Database access 标签库
-
Functions 标签库
core 核心标签库
core 是核心标签库,主要对 JSP页面的一般处理进行了封装。该标签库总共有 14个标签,被分为了四类,分别是:
-
多用途核心标签:
<c:out>、 <c:set>、 <c:remove>、 <c:catch>
。 -
条件控制标签:
<c:if>、 <c:choose>、 <c:when>、 <c:otherwise>
。 -
循环控制标签: `<c:forEach>、 <c:forTokens>``。
-
URL相关标签:
<c:import>、 <c:url>、 <c:redirect>、 <c:param>
。
总览:
c:out
用于在JSP中显示数据。
-
语法:
<c:out value="" default="" escapeXml="">。
escapeXml 当设置为 false 时会自动将value中特殊字符转换成常用字符,如
 
替换成“”,&
替换成”&”。设置成true则保持原样:value中是什么值就显示什么值。(可选,默认为 true ).
- 示例:
<%
session.setAttribute("name", "zhongfucheng");
%>
//<c:out/>标签支持标签体,default属性上的数据可以写在标签体中
//<c:out value="${name}" escapeXml="true">您要的数据找不着</c:out>
<c:out value="${name}" default="您要的数据找不着" escapeXml="true"/>
<hr />
<!-- escapeXml属性设置成false --><!-- 结果:AAA-->
<c:out value="AAA " default="" escapeXml="false"></c:out>
c:set
用来为变量或 JavaBean中的变量属性赋值。
-
语法:
<c:set value="" var="" scope="" ></c:set>
-
value 是值,数据信息(如用来显示的数据),可以是 EL 表达式或常量 (必须)
-
var 属性操作的是Integer、Double、Float、String等类型的数据(将value的值赋给val中的变量)(可选)
-
target 属性操作的是JavaBean或Map对象的名称·(可选)
-
scope 是变量的作用Web域:page、request、session、application。若没有指定,默认为保存于 page 范围中的变量(可选)
-
property是JavaBean 实例的属性名称。(与target属性同时存在)
<c:set var="name" value="fucheng" scope="page"/>
${name} <!-- 结果:fucheng-->
<c:set value="AAA" var="a" scope="session" ></c:set>
${a}<!-- 结果:AAA-->
c:remove
用于删除存在于scope 中的变量。
-
语法:
<c:remove var="" scope="" ></c:remove>
<c:set value="BBB" var="b" scope="session" ></c:set>
${b}<!-- 结果:BBB-->
<c:remove var="b" scope="session" ></c:remove><!-- 若是去掉remove标签,结果 则是:BBB BBB BBB -->
${b}<!-- 结果:空-->
${sessionScope.b }<!-- 结果:空-->
c:catch
用于在 JSP页面中捕捉异常。
- 语法:
<c:catch var=""></c:catch>
格式化标签
SQL标签
XML 标签
JSTL XML标签库提供了创建和操作XML文档的标签。引用XML标签库的语法如下:
<%@ taglib prefix=“x” uri=“http://java.sun.com/jsp/jstl/xml” %>
在使用xml标签前,你必须将XML 和 XPath 的相关包拷贝至你的<Tomcat 安装目录>\lib下:
-
XercesImpl.jar
下载地址: http://www.apache.org/dist/xerces/j/
-
xalan.jar
下载地址: http://xml.apache.org/xalan-j/index.html
标签 | 描述 |
---|---|
<x:out> | 与<%= … >,类似,不过只用于XPath表达式 |
<x:parse> | 解析 XML 数据 |
<x:set> | 设置XPath表达式 |
<x:if> | 判断XPath表达式,若为真,则执行本体中的内容,否则跳过本体 |
<x:forEach> | 迭代XML文档中的节点 |
<x:choose> | <x:when>和<x:otherwise>的父标签 |
<x:when> | <x:choose>的子标签,用来进行条件判断 |
<x:otherwise> | <x:choose>的子标签,当<x:when>判断为false时被执行 |
<x:transform> | 将XSL转换应用在XML文档中 |
<x:param> | 与<x:transform>共同使用,用于设置XSL样式表 |
<x:otherwise> | <x:choose>的子标签,当<x:when>判断为false时被执行 |
<x:transform> | 将XSL转换应用在XML文档中 |
<x:param> | 与<x:transform>共同使用,用于设置XSL样式表 |