JSP的基础语法
- <% %> 中间可以写Java代码
<%-- --%>中间可以写注释 JSP注释:不能在客户端显示
<!-- -->中间可以写注释 HTML注释:可以在看客户端显示 jsp注释的快捷键:ctrl+/<%= %>"=" 代表 out.println()
指令
- page指令:页面指令,用来定义JSP页面的全局属性,该配置会作用于整个JSP页面。page指令用来指定所使用的脚本语言、导入指定的类及软件包等。
- 这是没加page指令的JSP
<%=new java.util.Date()%>
- 这是加了page指令的JSP
<%@ page import="java.util.*"%>
<%=new Date()%>
- include指令:文件加载指令,用于在JSP文件中插入一个包含文本或代码的文件。它把文件插入后与原来的JSP文件合并成一个新的JSP页面。还需要注意的是,如果被插入的文件发生了变化,则包含这个文件的JSP文件需要被重新编译。 这个被经常用来作为一个网页的顶部固定栏或者底部固定栏,不是很常用。
- taglib指令:用来引用标签库并设置标签库的前缀。这个指令允许JSP页面使用用户自定义的标签,它也可以为标签库命名,标签在这个库中定义。
形式:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:out value="这是一个taglib标签!"/>
<%-- prefix用来指定该标签库所使用的前缀。--%>
<%-- uri用来指定标签文件或标签库的存放位置。 --%>
JSP的声明
- <%! %> 中间可以声明全局变量、静态代码块和方法
<%!
static{
static {
System.out.println("这是一个静态代码块");
}
private int i = 10;// 全局变量
public void study(){
System.out.println("这是一个方法");
}
}
%>
- 注意: 实际上,JSP页面最终会编译成Servlet类,而在容器中只会存在一个Servlet类的实例。在JSP中声明的变量时成员变量,它只在创建Servlet实例时被初始化一次,此后该变量一直保存,直到Servlet实例被销毁掉
- 举个小例子
<!--JSP声明语句 -->
<%!
public int a;//声明整型变量a
public void printStr() { //声明方法printStr
System.out.println("This is a method");
}
%>
<%
out.println("a=" + a); //输出a值
a++;//a自增
out.println("a=" + a);
%>
<br>
<%
printStr();//调用printStr()方法
%>
JSP的动作元素
- < jsp:include > 提供了一种在JSP页面中包含页面的方式,既可以包含静态文件,也可以包含动态文件
<%-- index.jsp --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%="hello"%>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>jsp:include</title>
</head>
<body>
<h1>标题</h1>
<jsp:include page="index.jsp"></jsp:include>>
</body>
</html>
2. < jsp:forward > 用于页面重定向的动作元素,它的作用是停止当前页面的执行,而将客户端请求转交给另一个JSP页面。此操作是在服务器端进行的,不会引起客户端二次请求,因此浏览器的地址不会发生改变。
<%-- index.jsp --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%="hello"%>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>jsp:include</title>
</head>
<body>
<h1>标题</h1>
<jsp:forword page="index.jsp"></jsp:include>>
</body>
</html>
3. < jsp:param > 一种提供参数的附属动作元素,它以“名-值”对的形式为其它动作元素提供附加信息,一般与< jsp:include >、< jsp:forward >和< jsp:plugin >联合使用。
- < jsp:plugin > 动作元素可以将服务器端的JavaBean和Applet下载到客户端执行。
- < jsp:useBean > 动作元素用来装载一个将在JSP页面中使用的JavaBean。这个功能非常有用,它充分发挥了Java组件重用的优势,同时也提高了JSP使用的方便性。
- < jsp:setProperty > 获取Bean实例之后,就可以用这个动作元素来设置和修改Bean中的属性值。
- < jsp:getProperty > 动作元素用来提取Bean中的属性值,并将其转换成字符串,然后输出。
九大内置对象
- PageContext 存东西 (保存的数据只在一个页面中有效)
- Request 存东西 (保存的数据只在一次请求中有效,请求转发会携带这个数据)
- Response
- Session 存东西 (保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器)
- Application 【ServletContext】 存东西 (保存的数据只在服务器中有效,从打开服务器到关闭服务器)
- config 【ServletConfig】
- out
- page ,不用了解
- exception
request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻
session:客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如:购物车;
application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用,比如:聊天数据;
其中,pageContext、Request、Session、Application都能存东西,但是它们的作用域不同,从低到高排序:ageContext-->Request-->Session-->Application