JSP基本语句用法总结
本文实例讲述了JSP基本语句用法。分享给大家供大家参考。具体如下:
1>JSP指令
JSP指令(Directive)作用是与JSP引擎进行沟通,为JSP页面设置全局变量,声
明类以及JSP要实现的方法和输出内容的类型等
JSP指令在整个页面范围内有效,且不在客户端产生任何输出
格式:<%@directivenameattribute="value"%>
<%@directivenameattribute1="value1"......attributeN="valueN"%>
2>page指令
用来定义JSP页面的全局属性和相关功能,并由该指令和JSP引擎进行通信
格式:<%@pageattribute1="value1",........%>
可用属性:languageimportcontentTypesessionbufferautoFlush
isThreadSafeinfoerrorPageisErrorPageextends.
一个JSP页面可以包含多个Page指令
除了import属性外,每个属性只能定义一次,否则出错
language属性:language="脚本语言"声明JSP页面中使用的脚本语言的种类
extends="ClassName"定义JSP页面所产生的Servlet所继承的类,将限制JSP引
擎提供的超类
import="importList"和java的import的意思一样,导入包文件
session="true|false"指定JSP页是否参与一个Http会话
buffer="none|sizeKB"指定客户端输出流的缓冲模式,none表示不缓冲
false"当缓冲区满时将自动刷新,如果为false,缓冲区满了
就会出现溢出异常
isThreadSafe="true|false"可以使用多线程
info="info_text"定义一个任意的字符串,用来说明JSP说明的信息,将直接加
入翻译的页面
errorPage="error_url"设置处理异常事件的JSP文件
isErrorPage="true|false"设置此页是否为异常页面"
contentType="type;charset=CHARSET"定义了JSP页面相应MIME类型以及JSP页
面的字符编码(可以只写type部分)
pageEncoding="peinfo"处理中文字符通常charset=GB2312
isELIgnored="true|false"用来设置EL表达式是否被忽略
3>include指令
用来指定JSP被编译时所需要插入的资源,可以是文本,代码,HTML文件或JSP
文件
格式:<%@includefile="URL">一旦编译完成,资源内容就不可改变
用include指令可以将一个复杂的JSP页面分为若干部分,如:head.jsp
body.jsptail.jsp然后在同一网站的不同JSP页面用include指令调用
4>taglib指令
用来自定义标签,可以把一些需要反复显示的内容定义成为一个标签,从而增
加代码的重用度,并使页面便于维护
步骤1定义一个标签处理类,用来实现标签的功能
步骤2定义标签库描述文件,.tld后最对标记相关信息进行说明
步骤3最后配置文件web.xml
格式:<%@tagliburi="tagligURLprefilx="tagPrefix"%>
5>Scriptlet脚本元素
声明用来定义变量方法<%!inti,a,b=0;%>声明每个语句以;结束
声明方法<%!StringgetDate(){}%>(一个声明只能在一个JSP页面有效)
表达式格式:<%=表达式%>(表达式不能以;结尾)
<%=1+2+3%>输出6
<%=newjava.util.Date().toString()%>输出日期
Scriptlet:以<%%>括起来的java代码
JSP提供了很多种动作元素:
<jsp:useBean><jsp:setProperty><jsp:getProperty><jsp:fallback>
<jsp:param><jsp:include><jsp:forward><jsp:plugin>
<jsp:params><jsp:root><jsp:expression_r_r><jsp:text>
<jsp:output><jsp:declaration><jsp:scriptlet>.....20多种
<jsp:param>传递一个或多个参数到指定动态文件,需要和
<jsp:include><jsp:forward><jsp:plugin>一起来使用
<jsp:paramname="paramName"value="paramValue"/>
<jsp:includepage="HelloWorld.html"/>
<jsp:forward>允许将当前的请求转发至另一个静态文件或JSP页面或含有与当
前页面相同内容的Servlet
<jsp:forwardpage="confirm.jsp">
<jsp:paramname="user"value="aaa"/>
<jsp:paramname="password"value="12345"/>
</jsp:forward>转向confirm.jsp页面并传递两个参数user和password
<jsp:plugin>用来在客户端浏览器中播放或显示一个对象,通常为Applet或
Bean,最终根据浏览器版本替换为<object>或<embed>
格式:
<jsp:plugintype="bean|applet"code="objectCode"
codebase="objectCodebase"archive="archiveList"
name="componentName"align="alignment"
vspace="vspace"hspace="hspace"
height="height"width="width"
nspluginurl="url"iepluginurl="url"
jreversion="jreversion"myscript="true|false"/>
<jsp:paramsname="paramName"value="paramValue">
<jsp:fallback>artibutetext</jsp:fallback>(当显示Bean|Applet失败时显
示此字符串
6>JSP的内建对象
JSP提供了一些由容器实现和管理的内建对象,在JSP页面中可以直接使用,不
需要实例化,通过存取这些内建对象实现与JSP页面的Servlet环境的互相访问
JSP一共提供了9个内建对象:outrequestrepnsesessionpageContext
applicationconfigpageexception
JSP是构建在Servlet上的,JSP的每个内建对象都是与JavaServletAPI包中的类
相对象,在服务器运行时自动生成
JSP提供给开发人员一项传递数据的机制,那就是利用setAttribute()和
getAttribute()方法
JSP有四种范围:分别为PageRequestSessionApplication
Page范围指的是单单一页JSPPage的范围离开页面就失效
PageContext.setAttribute("Name","abc");设置属性Name的值为abc,该值只
在本页范围内有效,在本页调用(String)PageContext.getAttribute("Name")将
返回"abc"
Request范围是指在一JSP页面发出请求到另一个JSP网页之间(include指
令,forward指令等..),随后范围就失效
Request.setAttribute()和Request.getAttribute()
Session范围为一段用户持续和服务器所连接的时间,但与服务器断线后,属性
就失效
Application的作用范围在服务器运行一开始执行服务就生效,直到服务器关闭
为止
以上四种内建对象可以使用的存储和取得属性的方法:
voidsetAttribute(Stringname,Objectvalue)设定name属性的值为value
EnumerationgetAttributeNamesInscope(intscope)取得所有scope范围属性
ObjectgetAttribute(Stringname)取得name属性的值
voidremoveAttribute(Stringname)移除name属性的值
备注:pageContext并无getAttributeNames()方法。
out对象被封装在javax.servlet.jsp.JspWriter接口,可以通过out对象对缓冲
区进行操作
通常通过pageContext.getOut()方法获得out对象
常用方法:publicabstractvoidprint()
publicabstractvoidprintln()
publicabstractvoidnewLine()//输出一个换行符
publicabstractvoidclose()//关闭输出流
publicabstractvoidclearBuffer()//清除缓冲区内容,并将数据
发送至客户端
publicabstractvoidclear()//清除缓冲区内容,不将数据发送至
客户端
publicintgetBufferSize()//获取缓冲区的大小
publicabstractintgetRemaining()//获得缓冲区剩余空间的大小
publicabstractvoidflush()//输出缓冲区的数据
publicbooleanisAutoFlush()//获取AutoFlush的取值
request对象封装了用户所提交的信息,被封装在
javax.servlet.http.HttpServletRequest接口
方法有四大类:
1.存取属性的方法:
ObjectgetAttribute(String)
EnumerationgetAttributeNames(int)
voidsetAttribute(String,Object)
2.取得Request本身参数的方法:
StringgetParameter(String)取得指定参数名称
EnumerationgetParameterNames()取得所有参数名称
String[]getParameterNames(Stringname)取得所有name的参数值
MapgetParameterMap()取得一个要求参数的Map
3.能够取得请求HTTP标头的方法:
StringgetHeader(Stringname)取得name的标头
EnumerationgetHeaderNames()取得所有的标头名称
EnumerationgetHeaders(Stringname)取得所有name的标头
intgetIntHeader(Stringname)取得整数类型name的标头
longgetDateHeader(Stringname)取得日期类型name的标头
Cookie[]getCookies()取得与请求有关的cookies
4.其他方法:
StringgetContextPath()取得Context路径
StringgetMethod()取得Http方法(Get|Post)
StringgetServletPath()获取接受客户提交信息的页面
StringgetProtocol()取得使用的协议(Http/1.1Http/1.0)
StringgetQueryString()取得请求的参数字符串(Http方法必须为GET)
StringgetRequestedSessionId()取得用户端的SessionID
StringgetRequestURI()取得请求URL,不包括请求的参数字符串
StringgetRemoteAddr()取得用户的IP地址
StringgetRemoteHost()取得用户的主机名称
intgetRemotePort()取得用户的主机端口
StringgetRemoteUser()取得用户的名称
voidsetCharacterEncoding(Stringencoding)设定编码格式,用来解决窗体传递
中文的问题
response对象:是封装JSP处理数据后产生的结果,封装在
javax.servlet.http.HttpServletResponse接口
voidaddCookie(Cookiecookie)新增cookie
voidaddDateHeader(Stringname,longdate)新增long类型的值到name标头
voidaddHeader(Stringname,Stringvalue)新增String类型的值到name标头
voidaddIntHeader(Stringname,intvalue)新增int类型的值到name标头
voidsetDateHeader(Stringname,longdate)指定long类型的值到name标头
voidsetHeader(Stringname,Stringvalue)指定String类型的值到name标头
voidsetIntHeader(Stringname,intvalue)指定String类型的值到name标头
voidsendError(intsc)传递状态码
voidsendError(intsc,Stringmsg)传递状态码和错误信息
voidsetStatus(intsc)设定状态码
StringencodeRedirectURL(Stringurl)使用sendRedirect()方法的URL予以编
码
response.setContentType("text/htmlcharset=Big5")改语句同<%@page
contentType="text/html;charset="Big5"%>等价
cookie技术:
Cookie使站点跟踪特定访问者的访问次数,最后访问时间,访问者进入站点的路
径
Cookie告诉在线广告商广告被点击的次数
Cookie能帮助站点统计用户个人资料以实现各种各样的个性化服务
创建Cookie
CookiedemoCookie=newCookie("CookieName","Cookiue")
Cookie中的get方法:
StringgetComment()返回cookie中的注释
StringgetDomain()返回cookie中Cookie的域名,域名以点开始(.yesky.com)
intgetMaxAge()返回Cookie过期之前的最大时间,以秒计算
StringgetName()返回Cookie的名字
StringgetPath()返回Cookie适用的路径,如果不指定,Cookie将返回给当前页
面所在目录及其子目录下的所有页面
booleangetSecure()如果浏览器通过安全协议发送cookies将返回true,使用标
准协议将返回false
StringgetValue()返回Cookie的值
intgetVersion()返回Cookie的协议版本
Cookie中的set方法:
voidsetComment(Stringpurpose)
voidsetDomain(Stringpattern)
voidsetMaxAge(intexpiry)
voidsetPath(Stringuri)
voidsetSecure(booleanflag)
voidsetValue(StringnewValue)
voidsetVersion(intv)
Cookie示例代码:
StringsessionID=makeUniqueString(); HashMapsessionInfo=newHashMap(); HashMapglobaTable=findTableStoringSessions(); globeTable.put(sessionID,sessionInfo); CookiesessionCookie=newCookie("JSESSION",sessionID); cookiesetMaxAge(30*60);//存活时间为30分钟 response.addCookie(cookie);//写入客户硬盘
session和cookie的区别:
session存放在服务器端的内存里
session随用户的登陆而生成,用户下线后消失
session存放在服务器里,用户不能修改,安全性好
session是一个动作状态的持续,是一个会话
session对象,记录每个客户端的访问状态以便跟踪每个客户端的操作状态,被封
装为javax.servlet.http.HttpSession接口,可以通过pageContext.getSession()
方法获取一个session对象
session对象中的方法:
longgetCreationTime()获得session产生的时间
StringgetId()获得session的ID
longgetLastAccessedTime()取得用户最后通过这个session送出请求的时间,
单位:毫秒
longgetMaxInactiveInterval()取得最大session不活动的时间,若超过这个时
间,session将会失效单位:秒
voidinvalidate()取消session对象
booleanisNew()判断session是否为新的
voidsetMaxInactiveInterval(intinterval)设定最大session不活动的时间,
若超过这时间,session将回失效单位:秒
application对象,负责提供应用程序在服务器中运行时的一些全局信息,直到服
务器关闭,被封装在javax.servlet.SertletContext接口
intgetMarorVersion()取得Container主要的ServletAPI版本
inggetMinorVersion()获得container次要的ServletAPI版本
StringgetServerInfo()取得Container的名称和版本
StringgetMimeType(Stringfile)取得指定文件的MIME类型
ServletContextgetContext(Stringuripath)取得指定LOcalURL的
ApplicationContext
StringgetRealPath(Stringpath)取得本地端Path绝对路径
voidlog(Stringmessage)将信息写入log文件中
voidlog(Stringmessage,Throwablethrowable)将stacktrace所产生的异常
信息写入log文件中
pageContent对象一般用于设置,获取当前JSP页面的一些属性,也能够存取页面
的其他隐含对象(out,request,response,session,application等)及其所有属性,
被封装在javax.servlet.jsp.PageContext接口
javax.servlet.jsp.PageContext类所提供的四种范围参数:PAGE_SCOPE
REQUEST_SCOPESESSION_SCOPEAPPLICATION_SCOPE
ExceptiongetException()回传目前网页的异常,不过此网页要为errorpage
JspWritergetOut()回传目前网页的输出流,如out
ObjectgetPage()回传目前网页的Servlet实体
ServletRequestgetRequest()回传目前网页的请求
ServletResponsegetResponse()回传目前网页的响应
ServletConfiggetServletConfig()回传目前网页的ServletConfig对象
ServletContextgetServletContext()回传此网页的执行环境
HttpSessiongetSession()回传目前和网页有联系的会话
config对象,主要作用是取得服务器的配置信息,被封装在
javax.servlet.servletConfig接口,痛多pageContext.getServletConfig()方法
可以获取一个config对象,提供存取servlet类初始化参数以及有关服务器环境信
息的ServletContext对象
config对象的常用方法:
publicStringgetInitParatemer(Stringname)获取服务器指定name参数的
初始值
publicEnumerationgetInitParameterNames()获取服务器所有初始参数的名
字
publicServletContextgetServletContext()获取Servlet的上下文
publicStringgetServletName()获取Servlet的服务器名
page对象,代表JSP文件被编译后的Servlet类对象,实质就是Object的一个实例
exception对象,主要作用是显示吟唱信息,代表了JSP文件运行时所产生的例外
对象,是java.lang.Throwable类的一个实例,只有在包含<%@page
isErrorPage="true"%>的页面才可以被使用,在一般的JSP页面中使用该对象无法
编译JSP文件
希望本文所述对大家的JSP程序设计有所帮助。