【学习笔记】JSP基础语法和指令
写jsp代码之前,需要导入四个包
-
Servlet 依赖
-
JSP 依赖
-
JSP表达式依赖
-
standard标签库
基础语法
jsp表达式
语法:
<%= xxxxxxx%>
xxxxxxx 为java代码(变量或表达式),将java代码的结果输出到页面
例子:
<%--jsp表达式--%>
<%= new java.util.Date().toLocaleString()%>
<%= new String("hello,world")%>
<%=10+10%>
<%=%> 中的代码,在jsp转换的Servlet中,被转换成了out.print(xxxx)
out.print( new java.util.Date().toLocaleString());
out.print( new String("hello,world"));
jsp脚本片段
在jsp脚本片段中,可以写多行java代码
语法:
<%
int a = 10;
int b = 20;
%>
例子:
<%--jsp脚本片段--%>
<%
int sum = 0;
for (int i = 0; i < 100; i++) {
sum+=i;
}
out.print(sum);
%>
将变量sum通过 out.print() 方法输出到前端,还可以使用 jsp表达式的方式。
<%%>中的代码,在转换成Servlet后,被原封不动的放在_jspService() 方法中
除此之外,我们还可以将html 代码嵌入到java代码中
<%-- 在java代码中嵌入html--%>
<%
for (int i = 0; i < 5; i++) {
%>
<h2>这是html</h2>
<%
}
%>
这样就实现了遍历html标签
jsp声明
我们上述写的代码都是在jsp转换的Servlet类的_jspService() 方法中,除此之外,我们想要在该方法外面写代码,该如何实现呢?
语法:
<%!
xxxxxx
%>
例子:
<%-- jsp声明--%>
<%!
static{
//静态代码块
System.out.println("静态代码块");
}
//变量
private int a = 100;
//方法
public void test(){
System.out.println("方法");
}
%>
在jsp转化的servlet中,<%! %> 中的内容,被放在了类里面,而不是_jspService() 方法中
jsp指令
page
语法:
<%@ page ....%>
例子:
<%--定制错误页面--%>
<%@ page errorPage="error/500.jsp" %>
也就是如果该jsp发生错误,就会跳转到500.jsp
如果想要判断该错误究竟是什么错误,500或404,可以在web.xml中配置
<error-page>
<error-code>500</error-code>
<location>/error/500.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/error/404.jsp</location>
</error-page>
page 中还有其他不常用的指令:
-
isErrorPage=”true“ 声明这是错误页面
-
pageEncoding=”utf-8“ 设置编码
include
语法:
<%@ include ....%>
例子:
主要用户提取页面中的公有的部分
-
新建公共的页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <h1>这里是头部</h1> -------------------------------- <%@ page contentType="text/html;charset=UTF-8" language="java" %> <h1>这里是尾部</h1>
-
使用 include 指令引入这两个jsp
<body> <%@ include file="common/header.jsp"%> <h2>网页主体部分</h2> <%@ include file="/common/footer.jsp"%> </body>
这里需要注意的是:当你第二次用include 去引用 jsp页面时,在路径前面要加上 "/",表示当前项目
除了这样引入公共的页面之外,还可以使用jsp标签,来引用
<jsp:include page="/common/header.jsp"/>
<h2>网页主体部分</h2>
<jsp:include page="/common/footer.jsp"/>
路径前面的 "/" 可加可不加
两者的区别:
-
@include指令是把 所有引入的jsp页面与原先的页面的代码都合起来
-
jsp:include 标签是引入了jsp文件,将jsp页面拼接
我们一般使用jsp:include 的方式,因为第一种方式,如果在header.jsp 和 jsp1.jsp中都定义了一个名字相同的变量,是不会报错的,如果去访问就会报500
而第二种方式,直接就会报错,不能定义名字相同的变量。