本文实例讲述了JSP基本语句用法。分享给大家供大家参考。具体如下:
1>JSP指令
JSP指令(Directive)作用是与JSP引擎进行沟通,为JSP页面设置全局变量,声
明类以及JSP要实现的方法和输出内容的类型等
JSP指令在整个页面范围内有效,且不在客户端产生任何输出
格式:<%@ directivename attribute="value"%>
<%@ directivename attribute1="value1"......attributeN="valueN"%>
2>page指令
用来定义JSP页面的全局属性和相关功能,并由该指令和JSP引擎进行通信
格式:<%@ page attribute1="value1",........%>
可用属性:language import contentType session buffer autoFlush
isThreadSafe info errorPage isErrorPage extends.
一个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
文件
格式:<%@ include file="URL">一旦编译完成,资源内容就不可改变
用include指令可以将一个复杂的JSP页面分为若干部分,如:head.jsp
body.jsp tail.jsp然后在同一网站的不同JSP页面用include指令调用
4>taglib指令
用来自定义标签,可以把一些需要反复显示的内容定义成为一个标签,从而增
加代码的重用度,并使页面便于维护
步骤1定义一个标签处理类,用来实现标签的功能
步骤2定义标签库描述文件,.tld后最 对标记相关信息进行说明
步骤3最后配置文件web.xml
格式:<%@ taglib uri="tagligURL prefilx="tagPrefix"%>
5>Scriptlet脚本元素
声明用来定义变量方法 <%! int i,a,b=0;%>声明每个语句以;结束
声明方法<%! String getDate(){}%> (一个声明只能在一个JSP页面有效)
表达式格式:<%=表达式%>(表达式不能以;结尾)
<%=1+2+3%>输出6
<%=new java.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:param name="paramName"value="paramValue"/>
<jsp:include page="HelloWorld.html"/>
<jsp:forward>允许将当前的请求转发至另一个静态文件或JSP页面或含有与当
前页面相同内容的Servlet
<jsp:forward page="confirm.jsp">
<jsp:param name="user" value="aaa"/>
<jsp:param name="password" value="12345"/>
</jsp:forward>转向confirm.jsp页面并传递两个参数user和password
<jsp:plugin>用来在客户端浏览器中播放或显示一个对象,通常为Applet或
Bean,最终根据浏览器版本替换为<object>或<embed>
格式:
<jsp:plugin type="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:params name="paramName"value="paramValue">
<jsp:fallback>artibute text</jsp:fallback>(当显示Bean|Applet失败时显
示此字符串
6>JSP的内建对象
JSP提供了一些由容器实现和管理的内建对象,在JSP页面中可以直接使用,不
需要实例化,通过存取这些内建对象实现与JSP页面的Servlet环境的互相访问
JSP一共提供了9个内建对象:out request repnse session pageContext
application config page exception
JSP是构建在Servlet上的,JSP的每个内建对象都是与JavaServletAPI包中的类
相对象,在服务器运行时自动生成
JSP提供给开发人员一项传递数据的机制,那就是利用setAttribute()和
getAttribute()方法
JSP有四种范围:分别为Page Request Session Application
Page范围指的是单单一页JSP Page的范围 离开页面就失效
PageContext.setAttribute("Name","abc");设置属性Name的值为abc,该值只
在本页范围内有效,在本页调用(String)PageContext.getAttribute("Name")将
返回"abc"
Request范围是指在一JSP页面发出请求到另一个JSP网页之间(include指
令,forward指令等..),随后范围就失效
Request.setAttribute()和Request.getAttribute()
Session范围为一段用户持续和服务器所连接的时间,但与服务器断线后,属性
就失效
Application的作用范围在服务器运行一开始执行服务就生效,直到服务器关闭
为止
以上四种内建对象可以使用的存储和取得属性的方法:
void setAttribute(String name,Object value) 设定name属性的值为value
Enumeration getAttributeNamesInscope(int scope)取得所有scope范围属性
Object getAttribute(String name) 取得name属性的值
void removeAttribute(String name) 移除name属性的值
备注:pageContext并无getAttributeNames()方法。
out对象被封装在javax.servlet.jsp.JspWriter接口,可以通过out对象对缓冲
区进行操作
通常通过pageContext.getOut()方法获得out对象
常用方法:public abstract void print()
public abstract void println()
public abstract void newLine()//输出一个换行符
public abstract void close()//关闭输出流
public abstract void clearBuffer()//清除缓冲区内容,并将数据
发送至客户端
public abstract void clear()//清除缓冲区内容,不将数据发送至
客户端
public int getBufferSize()//获取缓冲区的大小
public abstract int getRemaining()//获得缓冲区剩余空间的大小
public abstract void flush()//输出缓冲区的数据
public boolean is AutoFlush()//获取AutoFlush的取值
request对象封装了用户所提交的信息,被封装在
javax.servlet.http.HttpServletRequest接口
方法有四大类:
1.存取属性的方法:
Object getAttribute(String)
Enumeration getAttributeNames(int)
void setAttribute(String,Object)
2.取得Request本身参数的方法:
String getParameter(String)取得指定参数名称
Enumeration getParameterNames()取得所有参数名称
String[]getParameterNames(String name)取得所有name的参数值
Map getParameterMap()取得一个要求参数的Map
3.能够取得请求HTTP标头的方法:
String getHeader(String name) 取得name的标头
Enumeration getHeaderNames() 取得所有的标头名称
Enumeration getHeaders(String name) 取得所有name的标头
int getIntHeader(String name) 取得整数类型name的标头
long getDateHeader(String name)取得日期类型name的标头
Cookie[] getCookies()取得与请求有关的cookies
4.其他方法:
String getContextPath()取得Context路径
String getMethod()取得Http方法(Get|Post)
String getServletPath()获取接受客户提交信息的页面
String getProtocol()取得使用的协议(Http/1.1 Htt