Jsp 语法:
1. 指令元素:用于从jsp页面中给容器发送信息,比如设置全局变量,文字编码,引入包等
① Page指令
常用属性:
Language=”java”:jsp中嵌入的代码是java代码
Import=”包.*,包.类名” 在jsp页面中引入包或某个具体的类
Session=[true|false] 是否在jsp页面给你获取session对象
Buffer=[none|8k|指定大小] 给out对象使用的缓冲区是多大,默认8k
AutoFlash=[true|false] 当buffer满后,是否自动刷新到浏览器
IsThreadSafe=[true|false] 默认true,表示jsp的线程安全由程序员控制,false 则对应的servlet 将实现线程安全接口
errorPage=”相对jap页面” ,jsp出错,自动调整到指定的jsp页面中去
contentType=”text/html charset=uft-8”:指定页面以什么方式显示
pageEncoding=”utf-8”:指定servlet引擎以什么方式翻译jspàservlet,同时指定页面以什么方式显示
② Include指令:引入jsp文件,被翻译成一个servlet文件,也称静态引入
被引入的jap页面,只需保留page指令即可,<html><body>均要省略
<%@include file=”b.jsp”%>
b.jsp中只需保留page指令和内容
③ Taglib指令
④
2. 脚本元素:可以理解为java片段, scriptlet
<%
Int I = 10 ; // i为局部变量
%> java片段
<%= %> 表达式
<%! Int I = 100 ;
//I 是jsp对应的servlet的成员变量
%>
<%! Public int test(int a , int b) {
Return a+b;
}%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<%!
int i= 100;
// 定义一个全局变量,即i是jsp对于的servlet类的成员变量
%>
<%!
public int test(int a, int b){
return a+b; //在jsp中写一个函数(很少用)
}
%>
<%
int j = 100;//局部变量
out.println("i="+(++i)+",j="+(++j));
//面试题:
/**
第一次访问:i,j分别等于多少
第二次访问:i,j分别等于多少
......
......
*/
out.println("a+b="+test(100,100));
%>
</body>
</html>
3. 动作元素(已经用的很少了) 是使用xml语法写的,是jsp规定的一系列标准动作,在容器处理jsp时,当容器遇到动作元素时,就执行相应的操作.
(1)<jsp:useBean> 创建一个javabean实例
(2)<jsp:setProperty> 给一个javabean实例设置初始值
(3)<jsp:param> 给一个jsp设置参数,常常与<jsp:include>结合使用
<jsp:include file=”info.jsp”>
<jsp:param name=”parameter1” value=”paramterValue”>
<jsp:param name=”paramter2’ value=”paramterValue”>
</jsp:include>
(4)<jsp:getProperty> 取得一个JavaBean的成员变量
(5)<jsp:include> 引入一个文件
在指令元素中有个<%@include file=”b.jsp”%>
区别在那?
动态引入,两个jsp会分开编译
静态引入:<%@include file="filename"%>
动态引入:<jsp:include page="filename">
相同点:都是引入jsp界面
不同点:静态引入,是把两个jsp文件,编译成一个servlet类,被引入的jsp文件中,只需保留page指令,不需要<html><body>等信息
动态引入,是把两个jsp文件,分开编译成两个不同的servlet类. 不需要删除其他内容,可以直接运行
(6)<jsp:plugin> 使用插件
(7)<jsp:forward> 转发
<jsp:forward page=”filename”> // 转发
作用:
把jsp页面藏在WEB-INF 目录,避免直接访问
如果把jsp文件,都藏在WEB-INF下面去, 怎么去访问呢?
<body>
<jsp:forward page="/WEB-INF/showTime.jsp"></jsp:forward>
<!-- <jsp:forward page="/WEB-INF/showTime.jsp"/> 这样写可能会报错 -->
</body>
(8)<jsp:fallback>