【JSP】
JSP全名为Java Server Pages,中文名叫java服务器页面,拥有servlet的特性与优点,JSP就是Servlet,直接在HTML中内嵌Java代码,JSP程序由JSP Engine先将它转换成Servlet代码,接着将它编译成类文件载入执行,只有当客户端第一次请求JSP时,才需要将其转换、编译。
【JSP页面结构】
构造一个JSP页面,除了可内嵌规则的HTML代码之外,还有三类主要的JSP元素:脚本元素(Scripting Element),指令(Directive)和动作(Action)。
1、脚本元素用来嵌入Java代码,这些Java代码将成为转换得到的Servlet的一部分;
2、指令用来从整体上控制Servlet的结构;
3、动作用来引入现有的组件来控制Web容器的行为。
此外,为了简化脚本元素,JSP定义了一组可以直接使用的隐式对象变量。
【脚本元素(Scripting Element) 】
脚本元素包含三个部分:Scriptlet、Expression(表达式)和Declaration(声明)。
1、Scriptlet元素允许Java代码被直接嵌入到JSP页面。
2、Expression元素是Java语言表达式,它的值用于计算以及作为字符串返回到页面。
3、Declaration元素用于声明在页面中初始化的变量、方法和类。
Scriptlet元素
1、基本语法:<%程序代码区%>
2、可以放入任何的Java程序代码,采用<% %>定义的代码,都会放到jsp_service方法中,作为局部变量使用,采用方式使用广泛
例:
<%
for (int i=0;i<10,i++)
{
… …
}
%>
表达式(Expression)
1、基本语法: <%=… …%>
2、=后面必须是字符串变量或者可以被转换成字符串的表达式
3、不需要以;结束
4、只有一行
例:
<%=“hello world”%>
<%=i+1%>
<%=request.getParameter(“name”)%>
Comment
注释格式:
<%--… …--%>
<% //… … %>
<% /*… …*/ %>
Declaration元素
1、基础语法:<%!declaration;%>
2、功能:在JSP程序中声明变量、方法和类。声明是以<%!为开始,%>为结尾的。
3、注意:
(1)编译JSP时,scriptlet生成了_jspService()方法的一部分,而Declaration(声明)却生成于_jspService()方法之外,与源文件合为一起。使用<%! %>方式所声明的变量为全局变量,即表示若同时有n个用户在执行此JSP网页时会共享此变量。因此应尽量少用声明变量,若要使用变量时,直接在Scriptlet之中声明使用即可;
(2)每一个声明仅在一个页面中有效,如果要在每个页面都用到一些声明,最好把它们写成一个单独的JSP网页,然后用<%@include%>或<jsp:include >元素包含进来;
(3)<%与!之间不能有空格;
(4)Declaration元素必须是完整的Java语句,以分号结尾,和Scriptlet元素一样;
(5)Declaration元素不能产生任何输出,而Scriptlet和Expression元素可以产生输出。
【指令(Directive)】
1、相当于编译期间的命令2、基本格式:<%@Directive 属性=“属性值”%>
3、常见的Directive:page、include、taglib
Page
1、page指令是针对当前页面的指令
2、指明与JSP Container的沟通方式
3、基本格式:
<%@page language=“script language”|
extends=“className”|--定义此JSP网页产生的Servlet是继承哪个
import=“importList”|--此JSP网页要使用哪些Java API
buffer=“none|kb size”| --none:不缓冲,默认8k
session=“true|false”| --是否可以使用session,默认true
autoFlush=“true|false” --缓冲器是否自动清除,默认true
isThreadSafe=“true|false”| --默认false(永远不要设成true)
info=“infoText”| --任何字符
errorPage=“errorPageUrl”|--如果此页发生异常,网页会重新指向一个url
isErrorPage=“true|false”|--是否为错误处理页面。默认为false
contentType=“contentTyepInfo”|--表示MIME类型 pageEncoding=“gb2312”|--编码方式
%>
【Action】
1、JSP动作不同于JSP指令,它利用XML语法格式的标记来控制Servlet引擎的行为。JSP动作可以改变out流,以及创建和使用对象。遵循XML标准,JSP动作也可以有属性。
2、有2个属性是所有JSP动作共有的:一是id属性;二是scope属性。
id属性唯一地标识JSP动作,这就允许在JSP页面内引入动作。
scope属性标识JSP动作的生命期。scope属性有4个可能的值:page、request、session、和application。
id属性和scope属性直接相关,因为scope属性决定与id相关联的对象的生命期。
3、JSP动作的语法如下:
<jsp:action attribute="attribute value"/>
4、JSP动作可以分为两类:
JavaBean动作都涉及在JSP页面内使用服务器端JavaBean,包括:
<jsp:useBean>: 用于寻找或者实例化一个新的javaBean供以后在JSP页面中使用。
<jsp:setProperty> :设置JavaBean的属性。
<jsp:getProperty>:获取JavaBean的属性。
Resource动作
<jsp:include>: 可以用于将静态和动态页面插入当前页面。
<jsp:forward>:终止当前页面的动作并将请求转发到另一个资源。
<jsp:plugin>:根据浏览器的类型,插入通过Java插件运行Java Applet所必须的OBJECT和EMBED元素。
【JSP中的9个内置对象】:http://blog.csdn.net/koches/article/details/7785415
【JSP的四个作用域】:http://blog.csdn.net/koches/article/details/7785438
【转发与重定向】:http://blog.csdn.net/uk8692/article/details/12865571
【JSP优点】
1、优良的性能:优于CGI,PHP,ASP
2、平台无关性:操作系统无关,Web服务器无关
3、可扩展性:tag的扩展机制,简化页面开发