JSP学习笔记之JSP语法
。
搭建开发环境:
新建一个普通Maven项目作为主工程(project),以后的代码演示都在该主工程内新建子模块(module)进行。(注意,一个子模块就是一个web应用程序。具体怎么创建工程和子模块,可以访问这里:传送门)。
JSP页面开发,用到以下依赖(将下边的依赖配置语句,放到主工程的pom.xml文件中):
1 |
<dependencies> |
Tomcat配置,使用热部署的方式,提高开发效率。(web项目部署时,选择exploded结尾的artifacts)
JSP基础语法
任何语言都有自己的语法。Java中有,JSP中也有。JSP作为java技术的一种应用,它拥有自己扩充的语法(了解,知道即可),Java所有语法都支持。观看下边的JSP语法之前,建议先去复习一下JSP原理。
注释
1 |
<%--这是JSP注释(不会被发送到浏览器端)--%> |
JSP表达式
<%= 变量或者表达式%>
可以使用el表达式代替,${变量或表达式}
。注意:使用JSP表达式取值,若不存在会返回null,而使用EL表达式则不会返回东西。
1 |
<%--JSP表达式 |
JSP脚本片段
<% java代码
%>
,这里和普通Java代码还是有点不一样的,因为JSP类中封装了一些对象我们可以直接使用,例如下边的out
。(JSP页面最终是会被转换为servlet类的,不记得了可以点这里复习一下)
1 |
<%--jsp脚本片段--%> |
1 |
<%--在代码中嵌入HTML元素--%> |
以上演示的表达式、脚本片段都保存在_jspService()方法内。(要查看下图中的work目录里的java代码,点这里)
JSP声明
想定义一些方法或变量在_jspService()
方法外(类内),我们需要使用标签<%!
%>
1 |
<%--在方法_jspService外定义方法或变量(不能使用内置对象了,例out)--%> |
在方法_jspService
外定义方法或变量,不能使用内置对象了,例out。因为这些内置对象是在方法_jspService
内定义的。
总结
JSP声明,会被编译到JSP生成的java的类中,_jspService
方法外。其他的,就会被生成到_jspService
方法内。
1 |
导包:<%@ page import="java.util.*" %> |
定制错误页面
页面中设置
在JSP页面的中添加语句<%@page errorPage="错误页面地址" %>
。显式声明当前页面为错误页面,使用语句isErrorPage="true"
,需要到web.xml中设置默认错误页面。
关于“错误页面地址”,地址问题可以看看这里复习一下。这里我把文件放到webapp文件夹内,该文件夹在编译后就是web应用程序的根目录,所以这里可以使用绝对路径/myerror.jsp
,或相对路径myerror.jsp
。
web.xml中设置
只设置location不设置错误代码,则被设置为默认错误页面,所有错误类型都会显示该页面
1 |
<!-- 默认错误页面--> |
根据错误代码,不同错误类型自定义不同错误页面。
1 |
<!-- 404错误页面--> |
下图中,我把在页面中设置的错误页面注释掉了。
JSP指令
1 |
<%//可以定制错误页面,errorPage="" ... %> |
1 |
<%""%>//可以引入文件(例如:模板。但是不推荐) file= |
模板
有两种方式可以给JSP页面应用模板。
方式一:<jsp:include page="jsp文件"/>
1 |
<%--jsp标签,jsp:include,拼接页面,本质还是多个页面(链接引用)。灵活性更高,推荐使用--%> |
方式二:<%@include file="jsp文件"%>
1 |
<%--@include会将多个页面合在一起 --%> |
我们看看demo01.jsp文件转换成java程序后:@include
的方式,将代码拼接起来。jsp:include
的方式,依然还是引用。
为什么不推荐第二种方式呢?看下边的例子:
@include
的方式,将代码拼接起来。若模板文件与当前文件中有重名的变量,就会报错。
但是jsp:include
的方式,却不会报错。