JSP基本使用语法.docx
《JSP基本使用语法.docx》由会员分享,可在线阅读,更多相关《JSP基本使用语法.docx(51页珍藏版)》请在冰点文库上搜索。
![JSP基本使用语法.docx](https://file1.bingdoc.com/fileroot1/2023-6/5/9bd0b217-3e9f-4253-8277-77236db9aeef/9bd0b217-3e9f-4253-8277-77236db9aeef1.gif)
JSP基本使用语法
JSP简明参考
JSP概论,介绍
JSP历史
JSP简介:
JSP:
JavaServerPages,JSP1.2,JSP2.0
JSP和servlet的历史:
首先出现的servlet,处理前后台,servlet处理前台功能代码过多,页面人员无法参与开发,开发周期很长,维护效率太低。
jsp出现,前后台都用jsp开发,代码不能重复用(不能import)
jsp和serlvet分别处理前后台
JSP四大特点:
1.指令元素,一般都是在一个html或者jsp文件的开始定义,分为页面指令page,包含指令include,标签指令taglib。
2.动作元素,jsp专用的标签元素
3.脚本元素,手动写入j2se代码
局部表达式<%%>只有在此局部定义以后的代码才能访问
全局表达式<%!
%>当前jsp页面上下都可以访问
显示表达式<%=%>类似j2se里面的相当于局部变量的out.println("直接的打印");
4.JSP中的9大对象。
JSP核心语法
注释:
HTML/XML注释:
--comment[<%=expression%>]-->
内部允许使用表达式.客户端的HTML代码会产生相同的注释代码.
隐藏的注释(JSP中,但不发送到客户端.
<%--comment--%>
jsp编译时会忽略这部分注释.
Scriptlets注释:
同Java注释.(本身就是在Java代码中.)
注意:
--HTML注释方式,HTML的注释在客户端是可以看见的,并且也不能屏蔽jsp标签。
-->
<%--JSP注释方式JSP的注释是不会在客户端页面显示出来的,并且还可以能屏蔽jsp和html代码--%>
jsp自身的注释优先级是最高的(尽可能使用此注释方式)
指令元素
在整个JSP文件中有效,设置全局变量,声明类,要实现的方法和输出内容的类型等.并不向客户产生任何输出.
<%@directivenameattribute=”aa”attribute=”bb”%>
例如:
<%@pagelanguage=“java”pageEncoding=”gb2312”%>
指令元素---page页面指令1
directivename就是page.
一个jsp页面中包含的多个页面指令被抽出来叠加应用制一个页面上.除了import外,其他页面指令只能出现最多一次.
使用方法:
<%@pageattribute=“value”…%>
其中attribue和其可选值:
(属性可以单独使用,也可以同时使用几个).
Attribute(属性)
Attribute(属性)意义
可选Value
Value的默认值
language
指使用的脚本语言
Java
Java
import
用,隔开,表示引入类
session
http会话中是否包含此页面
true/false
true
buffer
对客户端输出流的缓冲,none表示无,否则以不小于指定的数值缓冲.
none/具体的缓冲值
不小于8kb
autoFlush
true表示缓冲区满时,刷新客户端,false则出现运行异常
true/false
true
info
对jsp页面的信息备注
isErrorPage
表明是否为其他页面的error目标,true时可以使用exception对象.
true/false
false
errorPage
有异常时指向的页面
isThreadSafe
是否能多线程的使用,true表示允许一个JSP同时处理多个用户的请求.
true/false
true
contentType
字符编码和MIME类型
text/html;charset=iso-8859-1
pageEncoding
JSP页面的字符编码
pageEncoding=”ISO-8859-1”
isELIgnored
指定EL(表达式语言)是否被忽略
true/false
true
指令元素---include包含指令1
<%@includefile=”fileURL”%>
包含的文件在编译期间被解析.
如果路径以/开头表示参照应用,否则参照该jsp页面本身.
指令元素---taglib标签指令1
<%@tagliburi=“标签tld路径”prefix=“前缀”%>
JSP2.0新增了JSTL标签库.
JSF
前缀不能使用:
jsp,jspx,java,javax,sun,servlet,sunw.
脚本
脚本元素---声明2
定义变量或者方法(对应与产生的类的属性和方法.)
<%!
Stringnow(){
returnnewjava.util.Date().toString();
}
%>
<%!
Stringmyname=”AiSee”;
%>
脚本元素---表达式2
<%=expression%>
将被转换为字符串(如果是对象,则使用对象的toString()方法).
脚本元素---Scriptlet2
<%
//JavaScriptlet
%>
Scriptlet被包含在编译后的Servlet的Service方法中,
多个Scriptlet按照出现的顺序执行,可以合并为一个Scriptlet.
一个Scriptlet可以使用它前面的Scriptlet定义的变量.
动作元素
动作元素在请求处理阶段起作用,使用XML语法写出.
tagattribute=value…./>
或者匹对标签
tagattribute=value>
……
tagattribute=value>
标准的动作元素有:
useBean>,setProperty>,getProperty>,param>,params>,include>,forward>,plugin>,fallback>,attribute>,body>,invoke>,doBody>,element>,text>,output>,root>,declaration>,scriptlet>,expression>
动作元素中目前还有可能使用的是:
param>,include>,forward>
setProperty>,getProperty>,useBean>
注意:
jsp动作元素严格匹配单双标签,所以,当使用单标签的时候,记得斜线收回标签,否则会报错
动作元素---param>1
提供”名---值”对,和jsp:
include,jsp:
forward,jsp:
plugin一起使用.
paramname=”paraName”value=”paramValue”/>
例如:
paramname="username"value="thinkmore"/>
注意:
此标签必须嵌套使用,不能单独使用
动作元素---include>2
允许在请求时间内在现成的JSP里面包含静态或者动态资源.被包含的对象只有对JspWriter对象有访问权,并且不能设置头或者Cookie.
如果页面是缓冲的,那么缓冲区的刷新要优于包含的刷新,语法:
includepage=”filename”flush=”true”/>
或者(同时传人参数):
includepage=”filename”flush=”true”>
paramname=”paraName”value=”paraValue”/>
......
include>
例如:
includepage="action2.jsp"flush="true">
paramname="username"value="thinkmore"/>
include>
动作元素---forward>1
停止执行当前的JSP,转发请求到另一个JSP,Servlet或者静态资源文件,要求资源必须位于和本JSP相同的上下文环境中.
forwardpage=”uri”/>
或者(同时传人参数):
includepage=”uri”>
paramname=”paraName”value=”paraValue”/>
…
include>
例如:
forwardpage="action2.jsp?
username=thinkmore"/>
转发和转向都会继续执行当前页的下面的代码,但是此标签不会执行下面的代码,此标签内核机制相当于转发
动作元素---setProperty>1
和useBean一起使用,用于设置Bean的属性.
setPropertyname=”beanName”propertyDetails/>
其中name指jsp:
useBean的id,propertyDetails可选形式:
property=“*“
property=“propertyName“
property=“propertyName“para=”paraName”
property=“propertyName“value=”propertyValue”
property=“*”Bean的属性名,类型和request对象中的参数匹配,由于表单传过来的都是String,则JSP会把这些参数转换为Bean中对应的值.
request中的空值或者request没有相应属性,则在Bean属性中不会设置值.
property=“propertyName“指定设置某个参数的值,指定了Bean的属性名,而且属性名与request参数的名字相同,.Request中有空值,则不会设置任何值.
property=“propertyName“para=”paraName”指定的参数设置指定的属性.
property=“propertyName“value=”propertyValue”指定的值可以是字符串,也可以是表达式(需要类型匹配),用于设置指定属性的值.
注意:
此标签要和useBean>标签结合使用,单独不能使用,
jsp:
getProperty使用方式:
在userbean标签之中使用,获取一个对象的属性值,id属性是对象的名字,property是对象属性的名字
动作元素---getProperty>1
显示bean的属性到网页上.
getPropertyname=”beanName”property=“propertyName“/>
指定获取指定Bean的指定属性,属性不能是被索引了的.
注意:
此标签要和useBean>标签结合使用,单独不能使用,
jsp:
setProperty使用方式:
在userbean标签之中使用,设置一个对象的属性值,id属性是对象的名字,property是对象属性的名字,value是设置对象属性的值
动作元素---useBean>12
useBeanid=”beanName”scope=”scopeWhere”typedesc/>
首先试图定位一个Bean实例,如果这个Bean不存在,将会从一个class或者模板中进行实例化.
其中,scope表示存在的范围:
page,request,session,application
typedesc可选形式:
1.class=”className”:
要求类路径和类名,需要public的空参数构造函数的非抽象类,
2.beanName=”beanName”type=”typeName”:
使用instance方法从一个class中实例化一个Bean,同时指定Bean的类型.Type=”typeName”type是一个类或者接口,如果没有使用class或者beanName指定type,Bean将不能实例化.
例如:
useBeanid="ob"class="tm.OneBean"scope="request">
setPropertyname="ob"property="username"value="think"/>
getPropertyname="ob"property="username"/>
useBean>
注意:
jsp:
useBean使用方式:
id属性是定义新创建对象的名字,并且设置在scope范围中,以id为key值,class是此类的包名加类名,scope是此对象存放的范围。
上面的例子相当于下面的J2SE代码:
OneBeanonebean=newOneBean();
request.setAttribute("onebean",onebean);
onebean.setUsername("think");
onebean.getUsername();
动作元素---plugin>2
用来产生客户端浏览器的特别标签(Object或者Embed),可以使用它来插入Applet或者JavaBean.
语法:
plugintype=”applet|bean”code=”classFileName”codeBase=”classFileDirectoryName”
[name=”instanceName”]
[archive=”URIToArchive,…“]
[align=”bottom|top|middle|left|right”]
[height=”howMantPixels”]
[width=”howMantPixels”]
[hspace=”howMantPixels”]
[vspace=”howMantPixels”]
[jreversion=”JREVersionNumber|1.1”]
[nspluginurl=”URLToPlugin”]
[iepluginurl=”URLToPlugin”]
[params>
[paramname=”parameterName”value=”{parameterValue|<%=expression%>}”/>]+
params>
]
[fallback>textmessageforuser
fallback>]
plugin>
属性/子元素
描述
默认值
type
beanapplet之一
code
Java类文件的名称,需要包括扩展名.class
codeBase
Java类的根目录
JSP文件的当前路径
name
Bean或者Applet的实例名称,则同一个JSP中可以调用.
archive
逗号隔开的路径名列表,那些用于codebase指定的目录下的类装载器预装载的存档文件所在的路径名.
align
对齐方式bottom|top|middle|left|right
height,width
显示的高,宽(单位为像素)
hspace,vspace
左右上下留出的空间
jreversion
所需的JavaRuntimeEnvironment(JRE)版本.
1.1
nspluginurl
NetscapeNavigator能使用的JRE下载地址
iepluginurl
InternetExplorer用户能够使用的JRE下载地址:
如http:
//
jsp:
params
需要传人的参数
jsp:
fallback
Java插件不能启动是显示给用户的一段文字
动作元素---fallback>
plugin>的一部分,见上面的描述.
JSP内建的对象
9个对象的简介
在J2EE开发中,最主要使用的是两个开发包:
1.javax.servlet包
2.javax.servlet.http包
这两个包在web开发中占据了大部分的使用
javax.servlet包是J2EE中web开发原型包
javax.servlet.http包是J2EE中web开发针对http协议开发的包
jsp中的9大对象原类型,都来自于javax.servlet.http包
标示为*号的对象是开发中比较常用的对象
*application:
容器(web服务器)对象,它可以得到容器中的内容
Config:
项目配置参数(目前被servlet配置所代替)
Exception:
jsp中的异常对象
*out:
页面内容输入对象
Page:
页面对象,最主要是_jspService方法,此方法由容器自动调用
pageContext:
页面上下文(当前页面的内容)
*request:
请求对象,由用户发起(目前B/S项目开发的重点)
*response:
响应对象,用户请求被服务器接收以后,就会产生此对象
*session:
请求对象和响应对象的连接池
存储数据:
pageContext,request,session,application
(对象范围从小到大)
在页面中,一个request和response会产生一个唯一的session
request-------session-------response
(request由用户产生,不同的用户产生的对象也就不同)
下面是9个对象在J2EEAPI中的的原型:
request:
javax.servlet.http.HttpServletRequest
response:
javax.servlet.http.HttpServletResponse
session:
javax.servlet.http.HttpSession
application:
javax.servlet.ServletContext
config:
javax.servlet.ServletConfig
out:
javax.servlet.jsp.JspWriter
page:
javax.servlet.jsp.HttpJspPage
pageContext:
javax.servlet.jsp.PageContext
exception:
java.lang.Exception
request对象是9大对象中,最重要的开发对象
9个对象只能存在于page对象的_jspService方法中,也就是只能在局部脚本中操作9个对象,所以说9个对象是由web服务器调用page对象的_jspService方法创建的
application
application随着服务器启动而创建,直到关闭服务器.
整个应用的共享对象.主要作用在于取得或更改Servlet的设定.
封装了接口javax.servlet.ServletContext.
1.ObjectgetAttribute(Stringname);
返回由name指定的application属性。
2.EnumerationgetAttributeNames();
返回application所有属性的名字。
3.ServletContextgetContext(Stringuripath);
取得当前应用的ServletContext对象。
4.StringgetInitParameter(Stringname);
返回由name指定的application属性的初始值。
5.EnumerationgetInitParameters();
返回所有的application属性的初始值的集合。
6.intgetMajorVersion();
返回servlet容器支持的最高ServletAPI的版本号。
7.StringgetMimeType(Stringfile);
返回指定文件的类型,未知类型返回null。
一般为"text/html"和"image/gif"。
8.intgetMinorVersion();
返回servlet容器支持的最低ServletAPI的副版本号。
9.StringgetRealPath(Stringpath);
返回给定虚拟路径所对应物理路径。
10.RequestDispatchergetNamedDispatcher(Stringname);
为指定名字的Servlet对象返回一个RequestDispatcher对象的实例。
11.RequestDispatchergetRequestDispatcher(Stringpath);
返回一个RequestDispatcher对象的实例。
12.URLgetResource(Stringpath);
返回指定的资源路径对应的一个URL对象实例,参数要以"/"开头。
13.InputStreamgetResourceAsStream(Stringpath);
返回一个由path指定位置的资源的InputStream对象实例。
14.SetgetResourcePaths(Stringpath);
返回存储在web-app中所有资源路径的集合。
15.StringgetServerInfo();
取得应用服务器当前servlet编译器的版本信息。
16.ServletgetServlet(Stringname);
在ServletContext中检索指定名称的servlet。
17.EnumerationgetServlets();
返回ServletContext中所有servlet的集合。
18.StringgetServletContextName();
返回本web应用的名称。
19.EnumerationgetServletContextNames();
返回Se