JSP语法入门

前提

在前一节中我们已经写过JSP的代码了,这一节将单独介绍JSP一些基础语法。当然,你可以跳过这一节,当后面有代码不太理解的时候再回来阅读。

中文编码问题

如果中文乱码,看看JSP是否是以UTF8的方式编码,使用此编码在JSP文件最上方需要添加下面内容

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

脚本程序

脚本程序是包含任意Java语句、变量、方法或表达式。

形式如下:

<% 脚本程序代码片段 %>

我们借助上一节的top.cairbin.test7,稍微对hello.jsp改造下看看效果。

<%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
<%@page isELIgnored="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
     "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello SpringMvc</title>
</head>
<body>
     <h1><% out.println("Hello JSP"); %></h1>
</body>
</html> 

按照上述逻辑来讲应该会在页面显示一个h1的标题,内容为Hello JSP

我们访问http://localhost:8080/test7/hello来看看,果然如此。哦,对了,在写语句的时候别忘了那该死的分号

你也可以选择以下等价的XML语句(仍是在JSP文件里写,这里对其他部分省略,用[...]表示)

[...]

<h1>
    <jsp:scriptlet>
         out.println("Hello JSP");
    </jsp:scriptlet>
</h1>

[...]

你大致已经知道JSP书写方式了,为了简洁,在接下来的介绍中除非特殊我们将不再给出演示结果,而是仅介绍用法,请自行在项目中进行测试。

JSP表达式

表达式先被转化成String,然后被插入到该出现的地方。
由于表达式的值会被转化成String,所以您可以在一个文本行中使用表达式而不用去管它是否是HTML标签。

形式如下

<%= 这里写jsp表达式,注意前面那个等号 %>

它也有等价的XML形式

<jsp:expression>
    表达式
</jsp:expression>

示例,注意这里不能用分号结尾

<h1>
    日期 <%= (new java.util.Date()).toLocaleString() %>
</h1>

JSP声明

JSP声明可以声明一个或多个变量、方法等供后面代码使用。

JSP声明形式

<%! 这里写声明 %>

等价的XML

<jsp:declaration>
   声明的代码片段
</jsp:declaration>

示例

<%! int num = 114514; %>

JSP注释

<%-- 我就是JSP注释,此处不会被页面展示,也不会被浏览器看到 --%>

<!-- 我是HTML注释,此处内容页面不展示,但会在浏览器查看源码中看到 -->

你可以在JSP文件中使用JSP注释和HTML注释,但应当注意JSP注释与HTML有些不同,JSP注释不会被发送到浏览器,而HTML注释会被发送至浏览器并且能在浏览器查看源代码功能中看到!!!在HTML注释中不要写敏感信息!!!

JSP指令

形式如下

<%@ 指令 属性="值" %>

经常用到的JSP指令标签有:

  • <%@ page ... %>定义页面依赖属性,比如脚本语言、error页、缓存需求、编码等等
  • <%@ include ... %>包含其他文件
  • <%@ taglib ... %>引入标签库的定义,可以自定义标签

对于page常用属性有:

  • language声明当前页面脚本的语言,默认为java
  • extends指定jsp编译成servlet之后所需要继承的类或者所实现的接口
  • import用于导入当前脚本中可能使用到的其他包里面的类
  • info包含jsp的信息,一般作为当前jsp文件的说明用。可以通过getServletInfo()来获取
  • errorPage指定当前jsp文件发生错误时,自动调用改属性值指定的jsp文件。如果不指定当前属性值,当发生错误时,会抛出异常信息给客户。
  • contentType指定生成网页的文件格式和编码字符集
  • isErrorPage用于指定当前jsp文件是否为错误处理jsp文件

JSP行为

JSP行为使用XML语法结构控制servlet引擎。

它需要严格遵守XML标准:

<jsp:行为名称 属性="值" />
  • jsp:include用于在当前页面中包含静态或动态资源
  • jsp:useBean寻找和初始化一个JavaBean组件
  • jsp:setProperty设置JavaBean组件的值
  • jsp:getProperty将JavaBean组件的值插入到output中
  • jsp:plugin用于在生成HTML页面中包含Apple和JavaBean对象
  • jsp:element动态创建一个XML元素
  • jsp:forward从一个JSP文件向另一个文件传递一个包含用户请求的request对象
  • jsp:attribute定义动态创建的XML元素属性
  • jsp:body定义动态创建的XML元素的主体
  • jsp:text用于封装模板数据

JSP隐式对象

JSP有九个无需额外声明或初始化的对象:

  • request: HttpServletRequest类的实例,代表 HTTP 请求的对象,包含客户端发送到服务器的信息,如表单数据、URL参数等。
  • response: HttpServletResponse类的实例,代表 HTTP 响应的对象,用于向客户端发送数据和响应。
  • out: JspWriter类的实例,用于向客户端输出文本内容的对象,通常用于生成HTML。
  • session: HttpSession类的实例,代表用户会话的对象,可用于存储和检索用户特定的数据,跨多个页面。
  • application: ServletContext类的实例,代表 Web 应用程序的上下文,可以用于存储和检索全局应用程序数据。
  • config: ServletConfig类的实例,包含有关当前 JSP 页面的配置信息,例如初始化参数。
  • pageContext: PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
  • page: 类似于 Java 类中的 this 关键字,代表当前 JSP 页面的实例,可以用于调用页面的方法。
  • exception: exception 类的对象,代表发生错误的 JSP 页面中对应的异常对象,用于处理 JSP 页面中的异常情况,可用于捕获和处理页面中发生的异常。

控制流语句

判断语句

<%! int num=114514; %>

<% if(num==114514) { %>
    <p>114514</p>
<% }else{ %>
    <p>不是114514</p>
<% } %>

switch语句

switch语句与判断语句不一样,switch语句整个都被包裹在<% %>之中

当然,别忘了break

<%! int num=114514; %>

<%
switch(num){
    case 114514:
        out.println("114514");
        break;
    default:
        out.println("不是114514");
}
%>

for语句

<% for(int fontSize=1;fontSize<=5;fontSize++){ %>
    <font color="blue" size="<%= fontSize %>">
        fontSize = <%= fontSize %>
    </font>
    <br/>
<%}%>

输入出结果如下

while与do...while语句

while语句与do...while语句类似,这里仅演示while语句

<%! int fontSize=1; %>
<% while(fontSize<=5){ %>
    <font color="blue" size="<%= fontSize %>">
        fontSize = <%= fontSize %>
    </font>
    <br/>
    <% fontSize+=1; %>
<%}%>

JSP字面量

JSP定义了如下几个字面量

  • 布尔类型boolean
  • 整型int
  • 浮点型float
  • 字符串string,单引号包裹或者双引号包裹
  • Null

JSP运算符

JSP支持Java所有逻辑和算术运算符,这里不详细介绍。

最后修改:2024 年 04 月 01 日
如果觉得我的文章对你有用,请随意赞赏