JSP2.0学习笔记
JSP的本质:JSP已经脱离的Java的类,实际上,JSP只是servlet的一种特殊形式。在运行前,每个JSP都由servlet编译转化成servlet。一个JSP对应一个Servlet,对于tomcat而言,JSP页面生产的servlet在work目录下面对应的web应用里。
JSP必须在JSP服务器内运行;JSP文件必须转化成servlet才能运行;第一个访问JSP的会比较慢,因为要转化成servlet
以下是JSP的语法
1、JSP的注释:
<%-- 注释的内容 -->
HTML注释的格式:
<!--注释内容-->
HTML的注释内容,在浏览器的源码里看得到;JSP的注释部分,在浏览器里看不到
2、JSP声明:
JSP里可以先声明变量和方法,然后在JSP页面的其他位置,调用这些方法或引用这些变量
<%@ page contentType="text/html; charset=gb2312" language="java" %>
声明测试 <!-- 下面是JSP 声明部分>
<%!
//声明一个整形变量
public int count;
//声明一个方法
public String info()
return "hello";
%>
<%
//将count 的值加工后输出
out.println(count++);
%>
<%
//输出info ()方法的返回值
out.println(info());
%>
上面的例子就声明了一个方法和一个变量,并在另外的位置,做了引用
打开多个浏览器,甚至可以在不同的机器上打开浏览器刷新该页面,发现每个客户端count 值是完全连续的,所有的客户端共享了同一个count 变量。这是因为: JSP 页面
会编译成一个Se凹let 类,每个Servlet 在容器中只有一个实例:而在JSP 中声明的变量是类的成员变量,成员变量只在创建实例时初始化,该变量的值将一直保存,直到实例销毁。
3、JSP表达式
JSP提供了一种输出表达式值的简单方法,输出表达式值的格式如下:<%=表达式%>
<%count++ %> 与上面的out.println的效果是一样的
4、JSP脚本:
把Java代码镶嵌到HTML代码中,即为JSP脚本。所有能在java中运行的代码都可以通过JSP脚本运行
<%@ page contentType="text/html; charset=gb2312" language="java" %>
小脚本测试
<%
for(int i = 0 ; i < 10 ; i++)
{
%>
<!--上面的循环将使标签循环-->
循环值: |
<%=i%> |
<%
}
%>
也可以把连接数据库嵌套在JSP中
5、JSP中的三个编译命令:
a、page:针对当前页面的指令
b、include:用于指定如何包含另一个页面
c、tablib:用于定义和访问自定义标签
a、page的语法:
<%@ page
[language="Java"]
[extends="package.class"]
[import= "package. class I package.*},…"]
[session="true|false"]
[buffer="none|8kb|size kb"]
[autoFlush="true|false"]
[isThreadSafe="true|false"]
[info="text"]
[errorPage="relativeURL"]
[contentType="mimeType[;charset=characterSet]"|"text/html;charSet= ISO8859-1"]
[isErrorPage="true|false"]
%>
一个页面可以有多个page命令
language:声明当前JSP 页面使用的脚本语言的种类,因为页面是JSP 页面,该属性的值通常都是java 。
extends: 确定JSP 程序编译时所产生的Java 类,需要继承的父类,或者需要实现的接口的全限定类名。
import: 用来导入包,下面几个包是默认自动导入的,不需要显式导入。默认导入的包有:java.lang.*;javax.servlet.*;javax.servlet.jsp.*;javax.servlet.http.*
session:定义该页面是否需要使用HTTP session
buffer:指定输出缓冲区的大小
autoFlush:当输出缓冲区即将溢出时,是否需要强制输出缓冲区的内容
info:设置该JSP 程序的信息,也可以看做其说明,可以通过Servlet. getServletInfo()方法获取该值。如果在JSP 页面中,可直接调用getServletInfo()方法获取该值,因为JSP页面的实质就是Servlet 。
errorPage:指定错误处理页面。如果本程序产生了异常或者错误,而该JSP页面没有对应的处理代码,则会自动调用该指令所指定的JSP 页面
contentType: 用于设定生成网页的文件格式和编码方式
b、include:
使用include 指令,可以将一个外部文件嵌入到当前JSP 文件中,同时解析这个页面中的JSP 语句(如果有的话)。这是个静态的include 语旬,不会检查所包含JSP页面的变化。
include 既可以包含静态的文本,也可以包含动态的JSP 页面。静态的编译指令include ,是将被包含的页面加入进来,生成一个完整的页面。
include 编译指令的语法:
<%@include file="relativeURLSpec" %>
如果被嵌入的文件经常需要改变,建议使用操作指令,因为它是动态的include 语句。
6、JSP的7个动作指令:
1)、jsp:forward:执行页面的转向,将请求的处理转发给下一个页面
即可以是动态的,也可以是静态的
例如:
forward-result.jsp页面可以通过<%=request.getParameter("age")%>获取参数值
2)、jsp:include:动态导入页面,格式如下:
或者
静态导入和动态导入的区别:静态导入是将被导入页面的代码完全插入,两个页面生成一个整体的Servlet; 而动态导入则在Servlet中使用动态导入,从而将页面引入。
3)、jsp:useBean、jsp:getProperty、jsp:setProperty
这三个指令与bean有关
jsp:useBean:在jsp页面中初始化一个Bean实例
jsp:setProperty:用于修改Bean实例的属性
jsp:getproperty:用于获取Bean实例的属性
useBean的使用格式:
id 属性是JavaBean 的实例名, class 属性确定JavaBean 的实现类。
其中scope 属性用于确定JavaBean 实例的生存范围,该范围有以下四个值。
page: 该JavaBean 实例仅在该页面有效。
request: 该JavaBean 实例在本次请求有效。
session: 该JavaBean 实例在本次session 内有效。
application: 该JavaBean 实例在本应用内一直有效。
setProperty格式:
getProperty格式:
看下面的JSP 页面代码:
<%@ page contentType="text/html; charset=gb2312" language="java" %>
javabean
<!-- 实例化JavaBean 实例,实现类为lee.Person. 该实例的实例名为pl-->
<!-- 设置pl的name 属性值-->
<!--输出pl的name 属性值-->
<!--输出pl的age 属性值-->
如果property 属性确定了name 属性,则要求JavaBean 中必须有setName 和getName方法。事实上,当使用setProperty和getProperty标签时,系统将自动调用setName和getName 方法来访问Person 实例的属性。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/385592/viewspace-674844/
,如需转载,请注明出处,否则将追究法律责任。