1. 声明tag <%! %>
在声明tag范围里,只可以声明变量和方法。且仅在一个页面内有效。
<%!
private String str = "成功!";
private String str = "成功!";
public void add() {
......
}
%>
%>
当每个页面都用到一些共同的声明,最好把它们写成一个单独的文件,用<%@ include %>或<jsp:include >元素包含到所需要的页面。
2. 程序段Scriptlet <% %>
Scriptlet 范围内部的代码就是我们平时写的有效代码,可以包括变量声明,初始化等等。
<%
String userName = null;
if (request.getParameter("username") == null) {
%>
<%@ include file="error.html" %>
<%
} else {
userBean.setUserName(request.getParameter("username"));
}
String userName = null;
if (request.getParameter("username") == null) {
%>
<%@ include file="error.html" %>
<%
} else {
userBean.setUserName(request.getParameter("username"));
}
%>
3. 表达式tag <%= %>
表达式tag内的元素可以是变量,有返回值的方法,以及计算表达式总之,相当于System.out.print(元素转换为String的结果)。和声明tag,程序段Scriptlet不同的是,表达式tag的元素是不需要分号“;“结尾的。
Date : <%= new java.util.Date() %>
4. 隐藏注释tag <%-- --%>
此tag相当于平常用的/* */,在JSP编译时被忽略掉,而且不会显示在客户的浏览器中。
5. page指令
<%@ page
[ language="java" ]
[ extends="package.class" ]
[ import="{package.class | package.*}, ..." ]
[ session="true | false" ]
[ buffer="none | 8kb | sizekb" ]
[ autoFlush="true | false" ]
[ isThreadSafe="true | false" ]
[ info="text" ]
[ errorPage="relativeURL" ]
[ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=GBK18030" ]
[ isErrorPage="true | false" ]
%>
<%@ page %>指令作用于整个JSP页面,同样包括静态的包含文件。但是<% @ page %>指令不能作用于动态的包含文件,比如 <jsp:include>。
在一个页面中可以用上多个<% @ page %>指令,但是其中的属性只能用一次,不过也有个例外,那就是import属性,import属性能使用几次。
Example:
<%@ page import="java.util.*, java.lang.*" %>
<%@ page buffer="5kb" autoFlush="false" %>
<%@ page errorPage="error.jsp" %>
[ language="java" ]
[ extends="package.class" ]
[ import="{package.class | package.*}, ..." ]
[ session="true | false" ]
[ buffer="none | 8kb | sizekb" ]
[ autoFlush="true | false" ]
[ isThreadSafe="true | false" ]
[ info="text" ]
[ errorPage="relativeURL" ]
[ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=GBK18030" ]
[ isErrorPage="true | false" ]
%>
<%@ page %>指令作用于整个JSP页面,同样包括静态的包含文件。但是<% @ page %>指令不能作用于动态的包含文件,比如 <jsp:include>。
在一个页面中可以用上多个<% @ page %>指令,但是其中的属性只能用一次,不过也有个例外,那就是import属性,import属性能使用几次。
Example:
<%@ page import="java.util.*, java.lang.*" %>
<%@ page buffer="5kb" autoFlush="false" %>
<%@ page errorPage="error.jsp" %>
6. include动作指令
<jsp:include page="{relativeURL | <%= expression%>}" flush="true|false" />
or
<jsp:include page="{relativeURL | <%= expression %>}" flush="true|false" >
<jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" />
</jsp:include>
or
<%@ include file|page="relativeURL" flush="true|false" />
两者区别:
<jsp:include page="..."/> 运行时插入被 include 文件
<%@ include file="..." %> 或<%@ include page="..." %>编译时插入被 include 文件
<jsp:include page="{relativeURL | <%= expression%>}" flush="true|false" />
or
<jsp:include page="{relativeURL | <%= expression %>}" flush="true|false" >
<jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" />
</jsp:include>
or
<%@ include file|page="relativeURL" flush="true|false" />
两者区别:
<jsp:include page="..."/> 运行时插入被 include 文件
<%@ include file="..." %> 或<%@ include page="..." %>编译时插入被 include 文件
7. forward动作指令
<jsp:forward page="relativeURL"/>
or
<jsp:forward page="relativeURL">
<jsp:para name="parameterName" value="{parameterValue | <%= expression %>}"/>
<jsp:para name="parameterName" value="{parameterValue | <%= expression %>}"/>
</jsp:forward>
forward动作指令用来重定向网页,即从当前网页的forward动作指令处转向执行另一个网页程序。
forward动作指令用来重定向网页,即从当前网页的forward动作指令处转向执行另一个网页程序。
页面之间的重定向也可以在程序段Scriptlet 中使用
response.sendRedirect("relativeURL")方法来实现。
forward与重定向是有差别的,使用forward,是服务器端内部进行,所以浏览器的地址栏上的url没有变化;而重定向是在浏览器进行,地址栏的url将改变为相应的relativeURL。
8. usebean动作指令,setProperty动作指令
9. Taglib tag <% @taglib %>
<%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %>
10.JSP的内置对象
JSP的内置对象在JSP页面中无须声明就可以直接使用,内置对象有:request、response、session、application、out、config、pageContext。这些内置对象是Web开发中最为常用的对象。
request对象可以获取客户端提交的数据,如表单中的数据、网页地址后带的参数等。
request对象可以获取客户端提交的数据,如表单中的数据、网页地址后带的参数等。
request对象常用方法
getAttribute(String name)
|
获取指定的属性值,若不存在该属性,则返回null值
|
getAttributenames()
|
枚举request对象的所有数据
|
getCookies()
|
获取客户端的Cookie对象,返回值为Cookie数组
|
getParameter(String str)
|
获取指定名称的客户端提交的参数的值
|
getParameterNames()
|
枚举客户端提交的参数的名称
|
getParameterValues(String str)
|
返回指定名称的客户端提交的参数值数组,常用于checkBox
|
setCharacterEncoding(String str)
|
设置request对象的编码格式
|
response对象可用来向客户端输入数据。
response对象常用方法
sendRedirect()
|
进行页面重定向
|
setContentType(String str)
|
设置MIME
|
setCharacterEncoding(String str)
|
设置编码格式
|
addCookie(Cookie name)
|
添加Cookie对象,以保存客户端的用户信息,Cookie对象的值只能是字符串
|
request.setCharacterEncoding()是设置从request中取得的值或从数据库中取出的值 (只管post方式提交的问题///get需在server.xml中的:
response.setContentType("text/html;charset=gb2312")是设置页面中为中文编码
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
URIEncoding="GBK" />
)加入以上粗体,解决post和get之间乱码问题
response.setContentType("text/html;charset=gb2312")是设置页面中为中文编码
前者(request)是设置动态文字(参数,数据库),后者(response)设置页面静态文字
response.setContentType指定 HTTP 响应的编码,同时指定了浏览器显示的编码.
response.setCharacterEncoding设置HTTP 响应的编码,如果之前使用response.setContentType设置了编码格式,则使用response.setCharacterEncoding指定的编码格式覆盖之前的设置.与response.setContentType相同的是,调用此方法,必须在getWriter执行之前或者response被提交之前.
response.setCharacterEncoding设置HTTP 响应的编码,如果之前使用response.setContentType设置了编码格式,则使用response.setCharacterEncoding指定的编码格式覆盖之前的设置.与response.setContentType相同的是,调用此方法,必须在getWriter执行之前或者response被提交之前.
常见的MIME还有image/gif(GIF图片)、image/bitmap(BMP图象)、text/plain(文本文档TXT)、text/vnd.wap.wml(手机WAP页面)等。
session对象用来保持在服务器与一个客户端之间需要保留的数据,当客户端关闭网站(或称为系统)的所有网页时,session变量会自动清除。
session对象常用方法
getAttribute(String name) | 获取指定的session数据对象 |
setAttribute(String name, Object value) | 设置指定session对象中的数据对象的值 |
getAttributenames() | 枚举session对象的所有数据 |
getId() | 获取当前session对象的ID号 |
isNew() | 判断是否为新用户 |
invalidate() | 使session对象实效(常用于注销操作) |
removeAttribute(String name) | 删除指定的session数据对象 |
application对象可用来提供一些全局的数据、对象,一旦创建(在服务器开始提供服务时,即第一次被访问时application对象就会被创建),就会一直保持到服务器关闭服务为止。
application对象常用方法
getAttributenames()
|
枚举 application对象的所有数据
|
getAttribute(String name)
|
获取指定的 application数据对象
|
setAttribute(String name, Object value)
|
设置指定 application对象中的数据对象的值
|
pageContext用来管理属于JSP中特殊可见部分中已命名对象的访问。
out对象用来向客户端浏览器输出数据。
out对象常用方法
clear()
|
清除输出缓冲区的数据,对清除的数据不作处理
|
clearBuffer()
|
清除输出缓冲区的数据,将清除的数据输出到客户端
|
close()
|
关闭输出流
|
flush()
|
输出缓冲区的数据内容
|
newLine()
|
输出换行字符
|
print()/
println()
|
config对象是JSP配置处理程序的句柄,在JSP页面范围内有效。
在多个JSP页面之间传递参数,可以使用request, session, application对象的setAttribute(),getAttribute()方法进行参数的传递。
共享数据在web应用中的范围
page
共享数据的有效范围是用户请求访问的当前JSP网页
request
共享数据的有效范围是用户请求访问的当前Web组件,以及和当前Web组件共享同一个用户请求的其他Web组件。
例如用户请求访问的是JSP网页,那么该JSP网页的<%@ include>指令以及 <forward>标记包含的其他JSP文件也能访问共享数据。存放在HttpServletRequest对象中。
session
共享数据的有效范围是整个HTTP会话的生命周期。存放在HttpSession对象中。
application
共享数据的有效范围是整个Web应用的生命周期,Web应用中的所有Web组建都能共享。存放在ServletContext对象中。
page
共享数据的有效范围是用户请求访问的当前JSP网页
request
共享数据的有效范围是用户请求访问的当前Web组件,以及和当前Web组件共享同一个用户请求的其他Web组件。
例如用户请求访问的是JSP网页,那么该JSP网页的<%@ include>指令以及 <forward>标记包含的其他JSP文件也能访问共享数据。存放在HttpServletRequest对象中。
session
共享数据的有效范围是整个HTTP会话的生命周期。存放在HttpSession对象中。
application
共享数据的有效范围是整个Web应用的生命周期,Web应用中的所有Web组建都能共享。存放在ServletContext对象中。
官方的JavaEE 5培训网站: [url]http://java.sun.com/javaee/5/docs/tutorial/doc/index.html[/url]
这里有Jsp, servlet, JSF等培训资料,对于初学者来说,可能不太适合,倒适合用来复习和再学习。
本文转自 Icansoft 51CTO博客,原文链接: http://blog.51cto.com/android/108344