目录
一:jsp页面的基本结构:
1.普通的HTML标记和JavaScript标记
2.JSP标记
/*
<%@ page contentType="text/html"%>
<%@ page pageEncoding="utf-8"%> 等等均为JSP标记
*/
3.变量和方法的声明 格式:<%! 需要声明的变量以及需要定义的方法和类 %>
4.Java程序片 格式:<% Java程序片 %>
5.Java表达式 格式:<%= 可求值的表达式%>
二.声明变量和定义方法:
1.声明变量:
使用“<%! %>”标记符声明的变量在整个JSP页面都有效,当使用Tomcat服务器执行JSP页面,将其转化为Java文件时,这些变量将被作为类的成员变量。
2.定义方法和类:
使用"<%! %>"标记符定义方法,可以在Java程序片中调用该方法,并且方法内声明的变量只在该方法中有效。
使用"<%! %>"标记符定义类,可以在Java程序片中使用该类创造对象。
<%@ page contentType ="text/html"%>
<%@ page pageEncoding="utf-8"%>
<HTML><body bgcolor=#ffccff>
<p style="font-family:宋体,font-size:36;color:blue">
<%!
double multi(double x,double y){ //定义方法
return x*y;
}
class Circle{
double r;
double getArea(){ //定义类
return 3.14*r*r;
}
}
%>
<% //Java程序片
double x=8.0;
double y=12.0;
out.print(multi(x,y)); //调用方法
Circle circle=new Circle();
circle.r=3.0;
out.print(circle.getArea()); //调用类
%>
</p></body></HTML>
三:Java程序片:
1.Java程序片中声明的变量被作为JSP页面的局部变量,在JSP页面之后的所有程序片以及表达式部分内都有效。
2.Tomcat服务器使用多线程来处理程序片,有以下几点
操作JSP页面的成员变量 任一线程对成员变量做出改变都会影响到其它线程
调用JSP页面的方法 调用的方法必须是JSP页面曾定义过的方法
操作局部变量 任一线程对局部变量做出改变不会影响到其它线程
四:Java表达式:
注意:1.<%= 可求值的表达式%> 格式中"<%"和"="之间不要有空格
2.不可插入语句
3.在JSP页面中,表达式的值被表示为一个字符串的形式
五:JSP中的注释:
1.HTML注释 格式:<!-----注释内容------>
2.JSP注释 格式:<% ----注释内容----%>
注意:Tomcat服务器会忽略JSP注释
六:JSP指令标记:
a. page指令标记
page指令用来定义整个JSP页面的一些属性和这些属性的值,属性值用单引号或双引号括起来。可以使用多个page指令分别为每个属性指定值,也可以用一个page指令指定多个属性的值。
例如:
<%@ page 属性1="属性1的值"%>
<%@ page 属性2="属性2的值"%>
...
<%@ page 属性n="属性n的值"%>
<%@ page 属性1="属性1的值" 属性2="属性2的值" ...%>
1.contentType属性:
contentType属性确定JSP页面响应的MIME类型,属性值的一般形式是:"MIME类型"
注意:一个页面不允许两次使用page指令给contentType属性指定不同的属性值
2.pageEncoding属性:
pageEncoding属性的默认值是UTF-8
注意:一个页面不允许两次使用page指令给pageEncoding属性指定不同的属性值
3.language属性
language属性定义JSP页面使用的脚本语言,该属性的值目前只能去"java"
4.import属性
该属性的作用是为JSP页面引入Java运行环境提供的包中的类,这样就可以在JSP页面的程序片部分、变量及方法定义部分以及表达式部分使用包中的类,可以为该属性指定多个值。
<%@ page import="java.io.*","java.time.LocalDate"%>
5.session属性
session属性用于设置是否需要使用内置的session对象。session的属性值可以是true或false,默认为true。
6.buffer属性
内置输出流对象out负责将服务器的某种信息或运行结果发送到用户端显示。buffer属性用来指定out设置的缓冲区大小或不使用缓冲区。
<%@ page buffer="24kb"%> //指定out的缓冲区大小为24kb
7.autoFlush属性
autoFlush属性指定out的缓冲区被填满时,缓冲区是否会自动刷新。autoFlush可以取值true或者false,默认值为true。
8.isThreadSafe属性
isThreadSafe属性用来设置访问JSP页面是否是线程安全的。isThreadSafe的属性值可取true或false,默认值为true。
9.info属性
info属性的属性值是一个字符串,其目的时为JSP页面准备一个常用但可能要经常修改的字符串。
b.include指令标记
include指令标记的作用时在JSP页面出现该指令的位置处,静态嵌入一个文件,该文件的编码必须和当前JSP页面一致
example2_10_a.jsp
<HTML>
<%@ page contentType="text/html"%>
<%@ page pageEncoding="utf-8"%>
<%@ include file="myfile/ok.txt"%>//嵌入一个静态页面
<h1>这里是北京</h1>
</HTML>
example2_10_b.jsp
<HTML>
<%@ page contentType="text/html"%>
<%@ page pageEncoding="utf-8"%>
<%@ include file="myfile/ok.txt"%> //嵌入一个静态页面
<h1>这里是南京</h1>
</HTML>
ok.txt
<%@ page contentType ="text/html"%>
<center>
<A href="example2_10_a.jsp">北京</A> //超链接,点击可以跳转到href属性的值的页面
<A href="example2_10_b.jsp">南京</A>
七:JSP动作标记
动作标记时一种特殊的标记,它影响JSP运行时的功能。
a.include动作标记
格式为:
<jsp:include page ="文件的URL"/>
或者
<jsp:include page ="文件的URL">
param 子标记
</jsp:include>
注意:当include动作标记不需要param子标记时,必须使用第一种形式。书写时需要注意<jsp:include 中间不要有空格
b:param动作标记
param标记以"名字-值"对的形式为其他标记提供附加信息,param标记不能独立使用,须作为jsp:include , jsp:forward标记的子标记来使用。
格式为:
<jsp:param name="参数"value="参数的值"/>
c:forward动作标记
forward动作标记的格式为:
<jsp:forward page ="要转向的页面"/>
或者
<jsp:forward page ="要转向的页面URL">
param 子标记
</jsp:forward>
该指令的作用是:从该指令处停止当前页面的执行,转向执行page属性指定的JSP页面。需要注意的是,当forward动作标记不需要param子标记时,必须使用第一种形式。
d:useBean动作标记
useBean标记时用来创建并使用一个JavaBean,在后续特别会给出其内容。