1. 声明tag <%! %>
在声明tag范围里,只可以声明变量和方法。且仅在一个页面内有效。
<%! 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")); } %>
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" %> 6. include动作指令
<jsp:include page="{relativeURL | <%= %>}" flush="true|false" /> or <jsp:include page="{relativeURL | <%= %>}" flush="true|false" > <jsp:param name="parameterName" value="{parameterValue | <%= %>}" /> </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 | <%= %>}"/> </jsp: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对象常用方法
response对象可用来向客户端输入数据。
response对象常用方法
request.setCharacterEncoding()是设置从request中取得的值或从数据库中取出的值 (只管post方式提交的问题///get需在server.xml中的:
<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被提交之前. 常见的MIME还有image/gif(GIF图片)、image/bitmap(BMP图象)、text/plain(文本文档TXT)、text/vnd.wap.wml(手机WAP页面)等。 session对象用来保持在服务器与一个客户端之间需要保留的数据,当客户端关闭网站(或称为系统)的所有网页时,session变量会自动清除。
session对象常用方法
application对象可用来提供一些全局的数据、对象,一旦创建(在服务器开始提供服务时,即第一次被访问时application对象就会被创建),就会一直保持到服务器关闭服务为止。
application对象常用方法
pageContext用来管理属于JSP中特殊可见部分中已命名对象的访问。
out对象用来向客户端浏览器输出数据。
out对象常用方法
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对象中。 |
|