JSP语法基础
一: JSP的语法结构:
JSP页面结构
Html标记符
声明:变量、方法、类<%! %>
JAVA程序片<%%>
JAVA 表达式<%=%>
JSP标签、分为指令标签和动作标签
注释标签
二:声明<%! %>
a. 变量的声明
b. 方法的声明
c. 类的声明
在<%! %>中声明的变量、方法、类、在整个jsp文件内都有效!!
三Java程序段(Scriptle)
一个Jsp页面可以有多个Java程序段
语法格式如下:
<%Java程序段 %>
…..
<%Java程序段 %>
Scriptlet示例代码1:
<%@ page content="text/html; charset=Shift_JIS"%>
<HTML>
<BODY bgcolor=cyan><FONT size=1>
<%
String name = null;
if (request.getParameter("name") == null) {
%>
<%@ include file="error.html" %>
<%
} else {
foo.setName(request.getParameter("name"));
... ... ...
</BODY>
</HTML>
四:Java表达式
用户在页面输出信息语法格式如下:
<%= expression %>
示例:
<% a=12;b=a; c=a+b; %>
a=<%= a %><br>
b=<%= b %><br>
c=<%= c %><br>
五:注释
。HTML注释<!-- 注释内容 -->
。JSP注释<%-- 注释内容 --%>
<%程序段
/*多行注释内容
多行注释内容*/
程序段
//单行注释内容
程序段
%>
六:JSP标签
分为指令标签和动作标签
最常用的指令标签是Page指令和include指令
它们包含在<%@ %>卷标里。
示例:
<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ include file="/pages/global/jsp/template/html_import.jsp" %>
八种常用Page指令
Page
<% Page
[language = “java’]
[import = “{package.class | package.*},…”]
[contentType = “text/html;charset= Shift_JIS”]
[session=”true | fasle”]
[buffer = “none | 8kb | sizekb”]
[autoFlush = “ture | false”]
[isThreadSafe = “true | false”]
[info = “hello wicresoft”]
%>
包含指令include
静态嵌入的文件其实是主体文件的一部分,page指令的约束是有效的。
作用:分块,增强Jsp页面开发的管理性
七:JSP标签:动作标签
Include
Param
Forwoard
Plugin
useBean
<jsp:include>标签
例如:
<jsp:include page = “/friend/info/info.txt” %>
<jsp:include page = “hello.html”%>
<jsp:include page = “welcome.jsp’ %>
包含指令与包含标签的区别:
<%@ include file = “文件名”%>
<jsp:include page = “文件名“%>
指令标签的“包含指令include“,是将静态嵌入文件作为文件的一部分,所以文件和子文件其实是一一体。
动作标签的“include“,是动态的嵌入文件,子文件不必考虑主文件的属性。
指令标签在编译是就将子文件载入
动作标签在运行是,才将文件载入
动作标签:forward
JSP语法格式如下:
JSP 语法格式如下:
1.<jsp:forward page={"relativeURL" | "<%= expression %>"} />
2.<jsp:forward page={"relativeURL" | "<%= expression %>"} >
<jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" />
[<jsp:param … />]
</jsp:forward>
(“[<jsp:param … />]”指可以有多个“<jsp:param/>”标记。)
<jsp:forward>例子
<%@ page contentType="text/html; charset=Shift_JIS" %><html>
<head>
<title>test</title>
</head>
<body>
<jsp:forward page="forwardTo.jsp">
<jsp:param name="userName“ value="riso"/>
</jsp:forward>
</body>
</html>
动作标签:plugin
使用“<jsp:plugin>“插入一个applet 或bean,必要的话还可以下载一个Java插件用与执行他
Jsp语法格式如下:
<jsp:plugin type="bean | applet" code="classFileName" codebase=“classFileDirectoryName“
… … 太多了,就不写了。
动作标签useBean
Jsp语法格式如下:
JSP 语法格式如下:
<jsp:usebean
id="beaninstancename"
scope="page|request|session|application"
class="package.class" |
type="package.class" |
class="package.class" type="package.class" |
beanname="" type="package.class"
/>
八.JSP内置对象
Jsp程序中8个默认的内置对象
对于他们而言,不用声明就可以直接使用,这8个对象分别是request、response、pageContext、session、application、out、config和page.
内置对象 |
类型 |
代表内容 |
范围 |
Request |
依赖协议的java.servlet.ServletRequest 子类(例如,javax.servlet.HttpServletRequest) |
触发服务调用的请求 |
request |
response |
依赖协议的java.servlet.ServletResponse 子类(例如,javax.servlet.HttpServletResponse) |
对请求的应答 |
page |
pageContext |
Javax.servlet.jsp.PageContext |
本 JSP 的页面上下文 |
page |
session |
Javax.servlet.http.HttpSession |
为请求的客户创建的session对象 |
session |
application |
Javax.servlet.ServletContext |
从 servlet 配置对象获得的 servlet 上下文(如在 getServletConfig() ,getContext()的调用中) |
application |
out |
Javax.servlet.jsp.JspWriter |
向输出流写入内容的对象 |
page |
config |
javax.servlet.ServletConfig |
本 JSP 的 ServletConfig |
page |
page |
java.1ang.Object |
实现处理本页当前请求的类的实例 |
page |
Rquest对象的方法
方法 |
描述 |
getAttribute |
返回请求的给出名字的属性的值 |
getCharacterEncoding |
返回为请求的输入进行编码的字符集合 |
getContentLength |
返回请求实体数据的大小 |
getContenType |
返回请求实体数据的 InternetMedia 类型 |
getlnputStream |
返回在请求体中读取二进制数据的输入流 |
getParameter |
返回包含指定参数的单独值的字符串 |
getParameterName |
返回本次请求的参数名字 |
getParameterValues |
返回作为字符串列举的指定参数的值 |
getProtocol |
返回请求的协议和版本号 |
getReader |
返回从请求体中读取的文本的缓存数据 |
getRealPath |
返回运用替换规则从虚拟地址中获得的实际地址 |
getRemoteAddr |
返回发送请求的接口程序的 IP 地址 |
getRemoteHost |
返回发送请求的接口程序的完全限定的主机名 |
getScheme |
返回发出请求的 URL 的机制 |
getServerName |
返回接收请求的服务器的主机名 |
getServerPort |
返回接收请求的端口 |
|
|
response对象的方法
getCharacterEncoding |
返回用于MIME编码的字符集合 |
getCharacterEncoding |
返回用于书写二进制应答数据的输出流 |
getWriter |
返回用于格式化文本应答的打印程序 |
setContentLength |
为应答设置内容长度 |
setContentType |
为应答设置内容类型 |
addCookie |
添加一个Cookie对象,用来保存客户端的用户信息 |
addHeader |
添加HTTP文件头(Header),将会传送到客户端 |
containsHeader |
判断指定的HTTP文件头是否存在 |
sendError |
向客户端发送错误信息 |
setHeader |
设定指定名字的HTTP文件头的值 |
sendRedirect |
重定向客户端的地址 |
8.3、session对象
session在JSP程序中是一个内置的对象
每一个客户端都有一个session对象用来存放于这个客户端相关的数据。
在JSP的程序中,通常不用任何代码,就可以直接使用session对象。不过为了确认,可以加入以下代码,以表示需要启动session功能。
<%@page session=“true”%>
如果设置上述的session值为false,则说明禁用session功能。
session对象的类为HttpSession,它提供了很多使用的方法。
Session对象的方法
getCreationTime |
返回会话创建的时间 |
getId |
返回会话标识符 |
getLastAccessTime |
返回客户端上一次发送携带会话账号的时间 |
getSessionContext |
返回会话相连的上下文 |
getValue |
返回和应用层数据中指定名字相联系的对象 |
getValueNames |
返回和会话相连的应用层数据对象的名字 |
invalidate |
使会话无效,并将其从上下文中移出 |
isNew |
检查是否客户端参加了会话 |
putValue |
将指定的对象和使用指定名字的会话应用层数据相连 |
removeValue |
移去和会话应用层数据中指定名字相连的对象 |
8.4 application 对象的方法
对象 |
含义 |
getAttribute |
以Object对象的形式返回对应名称的application对象的属性值 |
getAttributeNames |
以Enumeration数据形式返回所有application对象的属性名称 |
getInitParameter |
返回application某个属性的值 |
getServerInfo |
获得当前版本的Servlet编译器的信息 |
setAttribute |
设置某个application对象的某个属性值 |
8.5out 对象
out对象用于输出数据,它可以是javax.servlet.jsp.JspWriter的一个实例。out对象的范围是page。
从java.io.Writer拓展而来的公共抽象类JspWriter效仿了java.io.BufferedWriter和java.Io.PrintWriter中的某些功能。但是,不同之处在于它会在打印方法中抛出(throw) java.Io.IOException异常,而PrintWriter不这样做。
JSP中的out对象就是这种类型的。如果page指令选择了autoflush="true",那么当出现由于当前的操作不清空缓存而造成缓冲区溢出的情况时,这个类的所有I/O操作会自动清空缓冲区的内容。如果autoflush="false",那么当操作造成了缓冲区溢出时,这个类的所有的I/O操作将抛出一个IOException。