JavaWeb学习总结(7)— JSP基础语法、九大内置对象
1. JSP基础语法
1.1 JSP模版元素
JSP页面中的HTML内容称之为JSP模版元素。
JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观。
1.2 JSP表达式
JSP获得变量的值,JSP脚本表达式(expression)用于将程序数据输出到客户端。
语法:
<%= 表达式或者变量的值 %>
例如:
<%= new java.util.Date() %> //输出当前系统时间
【注意】表达式中的变量或表达式后面不能有分号(;)
1.3 JSP脚本片断
JSP脚本片断(scriptlet)用于在JSP页面中编写多行Java代码,在Java代码中定义变量。必须严格遵守Java规范。
语法:
<%
多行Java代码;
%>
在<% %>中可以定义变量、编写语句,不能定义方法。
多个脚本片断中的代码可以相互访问,犹如将所有的代码放在一对<% %>之中的情况。
单个脚本片断中的Java语句可以是不完整的,但是,多个脚本片断组合后的结果必须是完整的Java语句,
例如:
<%
for (int k = 0; k <10 ; k++) {
%>
<h1>hello,world!</h1>
<%
}
%>
1.4 JSP声明
JSP声明可用于定义JSP页面转换成的Servlet程序的静态代码块、成员变量和方法 。
语法:
<%! 全局变量或方法 %> //java代码
例如:
<%!
int i = 0;
public void jspDestroy(){
System.out.println("destroying jsp!");
}
%>
1.5 JSP注释
- 在JSP中,注释有两大类:
- 显式注释:直接使用HTML风格的注释:<!- - 注释内容 - ->
- 隐式注释:直接使用JAVA的注释://、/*……*/
JSP自己的注释:<%- - 注释内容 - -%>
- 三种注释的区别:
<!--这个注释可以看见-->
<%
//JAVA中的单行注释
/*
JAVA中的多行注释
*/
%>
<%--JSP自己的注释--%>
1.6 简化符
因为HTML是标记语言,我们需要一些标记
EL表达式和JSTL标签。
语法:${}
【注意】 ${} == <%= %>
,但 EL表达式一般用来输出变量的值;而不能是一个对象。
1.7 全局变量和局部变量
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%!
int i = 0;
public int add(int a,int b){
return a+b;
}
%>
<%
//Java代码
String name ="abcd";
int age = 18;
int j= 0;
Date date = new Date();
%>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<h1>
日期:<%=new Date()%><br>
名字:<%=name%><br>
年龄:<%=age%><br>
i:<%=i++%><br>
<%--//全局变量可在浏览器输出中运算--%>
j:<%=j++%><br>
<%--//局部变量只能取定值,j++不运算,输出结果为0--%>
加法:<%=add(1,2)%>
日期:${date}
名字:${name}
年龄:${age}
</h1>
</body>
</html>
2. JSP九大内置对象
JSP的九大内置对象为:
pageContext 、 request 、 response 、 session 、 application 、 config 、 out 、 page 、 exception
2.1 page对象
page对象表示当前一个JSP页面,可以理解为一个对象本身,即:把一个JSP当作一个对象来看待。page对象在开发中几乎不用,了解一下即可。
page = this; 页面
2.2 out对象
out对象用于向客户端发送文本数据。,即输出。
2.3 pageContext对象
pageContext对象是JSP技术中最重要的一个对象,它代表JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的引用,它自身还是一个域对象(容器),可以用来保存数据。
并且,这个对象还封装了web开发中经常涉及到的一些常用操作,例如引入和跳转其它资源、检索其它域对象中的属性等。
- 通过pageContext获得其他对象:
方法 | 说明 |
---|---|
pageContext.getException(); | 返回exception隐式对象 |
pageContext.getPage(); | 返回page隐式对象 |
pageContext.getRequest(); | 返回request隐式对象 |
pageContext.getResponse(); | 返回response隐式对象 |
pageContext.getServletConfig(); | 返回config隐式对象 |
pageContext.getServletContext(); | 返回application隐式对象 |
pageContext.getSession(); | 返回session隐式对象 |
pageContext.getOut(); | 返回out隐式对象 |
-
PageContext引入和跳转到其他资源:
PageContext类中定义了一个
forward()
方法(用来跳转页面)和两个include方法(用来引入页面)来分别简化和替代RequestDispatcher.forward()
方法和include()
方法。方法接收的资源如果以“/”开头, “/”代表当前web应用。
例如:从当前页面转到
pageContextDemo05.jsp
页面//使用pageContext的forward方法 pageContext.forward("/pageContextDemo05.jsp"); //使用RequestDispatcher的forward方法实现的跳转方式 pageContext.getRequest().getRequestDispatcher("/pageContextDemo05.jsp").forward(request, response);
在实际开发中,使用pageContext.forward(relativeUrlPath)方法跳转页面用得不多,主要是因为要在Jsp页面中嵌套java代码,所以这种做法简单了解一下即可,在开发中,要想从一个Jsp页面采用服务器端跳转的方式跳转到另一个Jsp页面,那么一般会使用
<jsp:forward>
标签,<jsp:forward>
标签用于把请求转发给另外一个资源。