??xml version="1.0" encoding="utf-8" standalone="yes"?>
1Q在servlet中输入下面的代码Q?br />
response.setHeader("Cache-Control", "no-cache"); // HTTP 1.1
response.setHeader("Pragma", "no-cache"); // HTTP 1.0
response.setDateHeader("Expires", 0); // prevents caching at the proxy
2Q或者在jsp面中输?br />
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
题外话:(x)我们可以让页面自动刷新或者蟩转,只需?br />
<meta http-equiv="refresh" content="5">?U自动刷新页面一?br />
<meta http-equiv="refresh" content="5QurlQabc.html">5U?后自动蟩转到abc.html
]]>
Page 指o(h)
定义JSP文g中的全局属?
JSP 语法
<%@ 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=ISO-8859-1" ]
[ isErrorPage="true | false" ]
%>
例子
<%@ page import="java.util.*, java.lang.*" %>
<%@ page buffer="5kb" autoFlush="false" %>
<%@ page errorPage="error.jsp" %>
描述
<%@ page %>指o(h)作用于整个JSP面Q同样包括静态的包含文g。但?lt;% @ page %>指o(h)不能作用于动态的包含文gQ比?<jsp:include>
你可以在一个页面中用上多个<% @ page %>指o(h)Q但是其中的属性只能用一ơ,不过也有个例外,那就是import属性。因为import属性和Java中的import语句差不?参照Java Language)Q所以你p多用此属性几ơ了.
无论你把<% @ page %>指o(h)攑֜JSP的文件的哪个地方Q它的作用范围都是整个JSP面。不q,ZJSPE序的可L,以及(qing)好的~程?fn)惯Q最好还是把它放在JSP文g的顶?
?
Taglib 指o(h)
定义一个标{ֺ以及(qing)其自定义标签的前~.
JSP 语法
<%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %>
例子
<%@ taglib uri="http://www.jspcentral.com/tags" prefix="public" %>
<public:loop>
.
.
</public:loop>
描述
<% @ taglib %>指o(h)声明此JSP文g使用了自定义的标{,同时引用标签库,也指定了他们的标{前缀?
q里自定义的标签含有标签和元素之分。因为JSP文g能够转化为XML,所以了解标{֒元素之间的联pd重要。标{֏不过是一个在意义上被抬高了点的标讎ͼ是JSP元素的一部分。JSP元素是JSP语法的一部分Q和XML一h开始标记和l束标记。元素也可以包含其它的文本,标记Q元素。比如,一个jsp:plugin元素?lt;jsp:plugin>开始标记和</jsp:plugin>l束标记Q同样也可以?lt;jsp:params>?lt;jsp:fallback>元素.
你必d使用自定义标{之前?lt;% @ taglib %>指o(h)Q而且你可以在一个页面中多次使用Q但是前~只能使用一?
属?/span>
uri="URIToTagLibrary"
Uniform Resource Identifier (URI)Ҏ(gu)标签的前~对自定义的标{进行唯一的命名,URI可以是以下的内容:
Uniform Resource Locator (URL), ?RFC 2396 定义, 查看 http://www.hut.fi/u/jkorpela/rfc/2396/full.html
Uniform Resource Name (URN), ?RFC 2396定义
一个相Ҏ(gu)l对的\?
prefix="tagPrefix"
在自定义标签之前的前~Q比如,?lt;public:loop>中的publicQ如果这里不写publicQ那么这是不合法的。请不要用jsp, jspx, java, javax, servlet, sun, 和sunw做ؓ(f)你的前缀
?
<jsp:forward>
重定向一个HTML文gQJSP文gQ或者是一个程序段.
JSP 语法
<jsp:forward page={"relativeURL" | "<%= expression %>"} />
or
<jsp:forward page={"relativeURL" | "<%= expression %>"} >
<jsp:param name="parameterName"
value="{parameterValue | <%= expression %>}" />+
</jsp:forward>
例子
<jsp:forward page="/servlet/login" />
<jsp:forward page="/servlet/login">
<jsp:param name="username" value="jsmith" />
</jsp:forward>
描述
<jsp:forward>标签从一个JSP文g向另一个文件传递一个包含用戯求的request对象.<jsp:forward>标签以下的代码,不能执?
你能够向目标文g传送参数和|在这个例子中我们传递的参数名ؓ(f)username,gؓ(f)scott,如果你用了<jsp:param>标签的话Q目标文件必L一个动态的文gQ能够处理参?
如果你用了非缓冲输出的话,那么使用<jsp:forward>时就要小心。如果在你?lt;jsp:forward>之前Qjsp文g已经有了数据Q那么文件执行就?x)出?
属?/span>
q里是一个表辑ּ或是一个字W串用于说明你将要定向的文g或URL.q个文g可以是JSP,E序D,或者其它能够处理request对象的文?如asp,cgi,php).
向一个动态文件发送一个或多个参数Q这个文件一定是动态文?
如果你想传递多个参敎ͼ你可以在一个JSP文g中用多?lt;jsp:param>。name指定参数名,value指定参数?
?ji)?/span>
<jsp:getProperty>
获取Bean的属性|用于昄在页面中
JSP 语法
<jsp:getProperty name="beanInstanceName" property="propertyName" />
例子
<jsp:useBean id="calendar" scope="page" class="employee.Calendar" />
<h2>
Calendar of <jsp:getProperty name="calendar" property="username" />
</h2>
描述
q个<jsp:getProperty>元素获得Bean的属性|q可以将其用或昄在JSP面?在你使用<jsp:getProperty>之前Q你必须?lt;jsp:useBean>创徏?
<jsp:getProperty>元素有一些限?
Bean一起用?/span>
属?/span>
bean的名??lt;jsp:useBean>指定
所指定的Bean的属性名?/span>
技?
十.
<jsp:include>
包含一个静态或动态文?
JSP 语法
<jsp:include page="{relativeURL | <%= expression%>}" flush="true" />
or
<jsp:include page="{relativeURL | <%= expression %>}" flush="true" >
<jsp:param name="parameterName"
value="{parameterValue | <%= expression %>}" />+
</jsp:include>
Examples
<jsp:include page="scripts/login.jsp" />
<jsp:include page="copyright.html" />
<jsp:include page="/index.html" />
<jsp:include page="scripts/login.jsp">
<jsp:param name="username" value="jsmith" />
</jsp:include>
描述
<jsp:include>元素允许你包含动态文件和静态,q两U包含文件的l果是不同的。如果文件仅是静态文Ӟ那么q种包含仅仅是把包含文g的内容加到jsp文g中去Q而如果这个文件动态的Q那么这个被包含文g也会(x)被Jsp~译器执?q一切与asp怼)
你不能从文g名上判断一个文件是动态的q是静态的Q比?em>aspcn.asp
有可能只是包含一些信息而已Q而不需要执行?lt;jsp:include>能够同时处理q两U文Ӟ因此你就不需要包含时q要判断此文件是动态的q是静态的.
如果q个包含文g是动态的Q那么你q可以用<jsp:param>q传递参数名和参数倹{?/span>
属?/span>
参数Z相对路径Q或者是代表相对路径的表辑ּ.
q里你必M用flush="true",你不能用false?~省gؓ(f)false
<jsp:param>子句能让你传递一个或多个参数l动态文?/span>
你能在一个页面中使用多个<jsp:param>来传递多个参数?/span>
十一.
<jsp:plugin>
执行一个applet或Bean,有可能的话还要下载一个Java插g用于执行?
JSP 语法
<jsp:plugin
type="bean | applet"
code="classFileName"
codebase="classFileDirectoryName"
[ name="instanceName" ]
[ archive="URIToArchive, ..." ]
[ align="bottom | top | middle | left | right" ]
[ height="displayPixels" ]
[ width="displayPixels" ]
[ hspace="leftRightPixels" ]
[ vspace="topBottomPixels" ]
[ jreversion="JREVersionNumber | 1.1" ]
[ nspluginurl="URLToPlugin" ]
[ iepluginurl="URLToPlugin" ] >
[ <jsp:params>
[ <jsp:param name="parameterName"
value="{parameterValue | <%= expression %>}" /> ]+
</jsp:params> ]
[ <jsp:fallback> text message for user </jsp:fallback> ]
</jsp:plugin>
例子
<jsp:plugin type=applet code="Molecule.class" codebase="/html">
<jsp:params>
<jsp:param name="molecule" value="molecules/benzene.mol" />
</jsp:params>
<jsp:fallback>
<p>Unable to load applet</p>
</jsp:fallback>
</jsp:plugin>
描述
<jsp:plugin>元素用于在浏览器中播放或昄一个对象(典型的就是applet和Bean),而这U显C需要在览器的java插g?/span>
当Jsp文g被编译,送往览器时Q?lt;jsp:plugin>元素会(x)Ҏ(gu)览器的版本替换?lt;object>或?lt;embed>元素。注意,<object>用于HTML 4.0 Q?lt;embed>用于HTML 3.2.
一般来_(d)<jsp:plugin>元素?x)指定对象是Appletq是Bean,同样也会(x)指定class的名字,q有位置Q另外还?x)指定将从哪里下载这个Java插g。具体如?
属?/span>
.被执行的插件对象的cdQ你必须得指定这个是Beanq是applet,因ؓ(f)q个属性没有缺省?
会(x)被Java插g执行的Java Class的名字,必须?classl尾。这个文件必d在于codebase属性指定的目录?
会(x)被执行的Java Class文g的目录(或者是路径)Q如果你没有提供此属性,那么使用<jsp:plugin>的jsp文g的目录将?x)被使?
q个Bean或applet实例的名字,它将?x)在Jsp其它的地方调?
一些由逗号分开的\径名Q这些\径名用于预装一些将要用的class,q会(x)提高applet的性能.
囑ŞQ对象,Applet的位|?有以下?
Applet或Bean要昄的长宽的|此gؓ(f)数字Q单位ؓ(f)象素.
Applet或Bean昄时在屏幕左右Q上下所需留下的空_(d)单位?
Applet或Beanq行所需的Java Runtime Environment (JRE) 的版?
~省值是 1.1.
Netscape Navigator用户能够使用的JRE的下载地址Q此gؓ(f)一个标准的URLQ如http://www.aspcn.com/jsp
IE用户能够使用的JRE的下载地址Q此gؓ(f)一个标准的URLQ如http://www.aspcn.com/jsp
value="{parameterValue | <%= expression %>}" /> ]+ </jsp:params>
你需要向applet或Bean传送的参数或参数倹{?/span>
一D|字用于Java
插g不能启动时显C给用户的,如果插g能够启动而applet或Bean不能Q那么浏览器?x)有一个出错信息弹?
十二.
<jsp:useBean>
创徏一个Bean实例q指定它的名字和作用范围.
JSP 语法
<jsp:useBean
id="beanInstanceName"
scope="page | request | session | application"
{
class="package.class" |
type="package.class" |
class="package.class" type="package.class" |
beanName="{package.class |<%= expression %>}" type="package.class"
}
{
/> |
> other elements </jsp:useBean>
}
例子
<jsp:useBean id="cart" scope="session" class="session.Carts" />
<jsp:setProperty name="cart" property="*" />
<jsp:useBean id="checking" scope="session" class="bank.Checking" >
<jsp:setProperty name="checking" property="balance" value="0.0" />
</jsp:useBean>
HTML 注释
在客L(fng)昄一个注?
JSP 语法
<!-- comment [ <%= expression %> ] -->
例子 1
<!-- This file displays the user login screen -->
在客L(fng)的HTML源代码中产生和上面一L(fng)数据Q?
<!-- This file displays the user login screen -->
例子 2
<!-- This page was loaded on <%= (new java.util.Date()).toLocaleString() %> -->
在客L(fng)的HTML源代码中昄?
<!-- This page was loaded on January 1, 2000 -->
描述
q种注释和HTML中很像,也就是它可以?查看源代?中看到?/span>
唯一有些不同的就是,你可以在q个注释中用表达式(例子2所C?。这个表辄是不定的Q由面不同而不同,你能够用各U表辑ּQ只要是合法的就行?br />
?
隐藏注释
写在JSPE序中,但不是发l客戗?/span>
JSP 语法
<%-- comment --%>
例子Q?/span>
<%@ page language="java" %>
<html>
<head><title>A Comment Test</title></head>
<body>
<h2>A Test of Comments</h2>
<%-- This comment will not be visible in the page source --%>
</body>
</html>
描述
用隐藏注释标记的字符?x)在JSP~译时被忽略掉。这个注释在你希望隐藏或注释你的JSPE序时是很有用的?/span>
JSP~译器不是会(x)?lt;%--and--%>之间的语句进行编译的Q它不会(x)昄在客L(fng)览器中Q也不会(x)在源代码中看到在<%-- --%>之间Q你可以L写注释语句,但是不能使用 "--%>",如果你非要用请?--%\>".
?
声明
在JSPE序中声明合法的变量和方?
JSP 语法
<%! declaration; [ declaration; ]+ ... %>
例子
<%! int i = 0; %>
<%! int a, b, c; %>
<%! Circle a = new Circle(2.0); %>
描述
声明你将要在JSPE序中用到的变量和方法。你也必这样做Q不然会(x)出错.
你可以一ơ性声明多个变量和Ҏ(gu)Q只要以";"l尾pQ当然这些声明在Java中要是合法的?
当你声明Ҏ(gu)或变量时Q请注意以下的一些规?
声明必须?;"l尾(Scriptlet有同L(fng)规则Q但?表达式就不同?.
你可以直接用在<% @ page %>中被包含q来的已l声明的变量和方法,不需要对它们重新q行声明.
一个声明仅在一个页面中有效。如果你x个页面都用到一些声明,最好把它们写成一个单独的文gQ然后用<%@ include %>?lt;jsp:include >元素包含q来?
?
表达?/strong>
包含一个符合JSP语法的表辑ּ
JSP 语法
<%= expression %>
例子
<font color="blue"><%= map.size() %></font>
<b><%= numguess.getHint() %></b>.
描述
表达式元素表C的是一个在脚本语言中被定义的表辑ּQ在q行后被自动转化为字W串Q然后插入到q个表达C在JSP文g的位|显C。因个表辑ּ的值已l被转化为字W串Q所以你能在一行文本中插入q个表达式(形式和ASP完全一?.
当你在JSP中用表辑ּ时请C以下几点Q?
你不能用一个分P"Q?Q来作ؓ(f)表达式的l束W?但是同样的表辑ּ用在scriptlet中就需要以分号来结了Q查看Scriptlet q个表达式元素能够包括Q何在Java Language Specification中有效的表达?
有时候表辑ּ也能做ؓ(f)其它JSP元素的属性?一个表辑ּ能够变得很复杂,它可能由一个或多个表达式组成,q些表达式的序是从左到叟?/span>
?
Scriptlet
包含一个有效的E序D?
JSP 语法
<% code fragment %>
例子
<%
String name = null;
if (request.getParameter("name") == null) {
%>
<%@ include file="error.html" %>
<%
} else {
foo.setName(request.getParameter("name"));
if (foo.getName().equalsIgnoreCase("integra"))
name = "acura";
if (name.equalsIgnoreCase( "acura" )) {
%>
描述
一个scriptlet能够包含多个jsp语句Q方法,变量Q表辑ּ
因ؓ(f)scriptlet,我们便能做以下的?
声明要用到的变量或Ҏ(gu)Q参?声明).
~写JSP表达式(参?表达?.
使用M隐含的对象和M?lt;jsp:useBean>声明q的对象
~写JSP语句 (如果你在使用Java语言Q这些语句必遵从Java Language Specification,).
M文本QHTML标记QJSP元素必须在scriptlet之外
当JSP收到客户的请求时Qscriptlet׃(x)被执行,如果scriptlet有显C的内容Q这些显C的内容p存在out对象中?/span>
JAVA_HOME
C:\Program Files\Java\jdk1.6.0
2、JAVA_HOME配置完好后,新徏classpath
相应的\径如下:(x)
以下路径代表在JAVA_HOME卻IC:\Program Files\Java\jdk1.6.0Q之下的lib文g夹,“*.jar”代表本文件夹下所有的jar文g
注意Q此处前面的“.”必须?br />
classpath
.;%JAVA_HOME%\lib\*.jar;
3、classpath路径讄好以后,在下面找到path的变量,在其变量之后加上如下路径Q如果是在已有的变量之前加入路径的话Q?br /> %前面的分号加在bin后面Q目的是Z与其他变量值区分开?br /> 即JAVA_HOME下的bin文g?/font>
Path
;%JAVA_HOME%\bin
以上步骤都完成后Q你可以在命令行里面输入“javac”查你的java环境变量是否都正;
如果出现“javac不是内部变量”Q则配置p|Q否则配|成?br />
然后在C盘放一个java文g test.java
其内容如下:(x)
public class test
{
public static void main(String[] args)
{
System.out.println("怎么P很简单吧Q!Q?);
}
}
二、下面我们来接着配置jsp的环境变?br />
1、新建CATALINA_BASE变量Q在其变量g输入如下路径Q?br />
如果你的Tomcat是装在其他的路径的话Q先扑ֈ你的Tomcat位置Q拷贝过来即?br />
注意Q\径后要以分号“Q?#8221;l束
CATALINA_BASE
C:\Tomcat 6.0;
2、接下来新徏CATALINA_HOME变量Q其变量值和CATALINA_BASE一?br />
CATALINA_HOME
C:\Tomcat 6.0;
3、最后在上面已经新徏有的classpath变量的变量值后面加上如下\径,
本部特别注意Q如果在你安装的Tomcat路径下有common文g夹的话,lib换成common卛_
classpath
%CATALINA_HOME%\lib\*.jar;
特别注意Q你新徏的所有变量都应该?#8220;pȝ变量QSQ?#8221;Q而不?#8220;Administrator的用户变?#8221;或者其?/p>
以上变量都配|完好后Q就可以查你配置的tomcat变量是否正确
打开览器,在浏览器里面输入如下|址
【http://localhost:8080】如果出现tomcat主页Q就说明你已l配|成?br />
否则查你的变量D\径,是否丢分受tomcat的版本号、安装\径等{?/p>
三、以上都配置好以后,我们来配|装机的jsp文g目
1、找到如下\径【C:\Tomcat 6.0\webapps】在此\径下新徏一个你用于存放目的文件夹
比如?#8220;myapp”Q徏号以后在里面新徏目录WEB-INFx新徏一个名字ؓ(f)WEB-INF的文件夹
在WEB-INF内新Z个xml文gQ其命名为web.xmlQ然后打开
在里面输入如下代码:(x)
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
</web-app>
温馨提示Q?br /> 本部分你也可以不用亲手输入代码,你找到C:\Tomcat 6.0\webapps\ROOT目录Q将本目录之下的WEB-INF文g夹全部拷贝到你的目文g多w面即可用
保存后重启Tomcat
然后在你的项目文件夹myapp内新Z个测试文件test.jspQ其代码如下Q?br />
<html>
<body>
<center>
Now time is: <%=new java.util.Date()%>
</center>
</body>
</html>
然后在浏览器里输入如下地址Qhttp://localhost:8080/myapp/test.jsp
如果你看到如下时间显C:(x)Now time is: Tue Apr 28 19:16:31 CST 2009
q且你的面为浅青色Q就说明你已l配|成?/p>
四、也怽不希望把装机的项目放在C盘下吧,或者说不希望放的那?#8220;隐藏”QTomcat没有那么固Q它已经惛_?br />
那就是Tomcat的虚拟\径,下面我们来接着介绍虚拟的\径的配置
很简单,首先你先扑ֈTomcat下的conf目录
1、在之下扑ֈserver.xml文gQ打开之后扑ֈ文g的最后,?/p>
</Host>
</Engine>
</Service>
</Server>
?lt;/Host>之上加入如下代码Q?br />
<Context path="/jsp" docBase="E:\jsp" debug="0" reloadable="true"/>
其中path的\径ؓ(f)你的目命名QdocBase为项目的l对路径Q上例的目名ؓ(f) jspQ?br />
目的绝对\径ؓ(f) E:\jsp
特别注意大小写,q有必须是在英文输入状态下输入的,拯上面的代码也可以
reloadable为true表示可以昄目文g夹内的所有文件即下层目录
加上<Context path="/jsp" docBase="E:\jsp" debug="0" reloadable="true"/>之后的代码如下所C:(x)
---------------------------------------------------------------------------------------------
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
-->
<Context path="/jsp" docBase="E:\jsp" debug="0" reloadable="true"/>
</Host>
</Engine>
</Service>
</Server>
--------------------------------------------------------------------------------------------
2、打开本目录下的web.xml文g
扑ֈ如下代码D:(x)Q大概是在第70行到84行,也就是本文g中两个servlet代码D늚W一个)
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
其<param-name>listings</param-name>之下?lt;param-value>false</param-value>改ؓ(f)
<param-value>true</param-value>之后保存卛_
例如在浏览器例输入如下地址Qhttp://localhost:8080/jsp
有如下昄Q?br />
||=================================================================||
|| ||
|| Directory Listing For /mydatajsp/ - Up To / ||
|| ||
|| --------------------------------------------------------------- ||
|| Filename Size Last Modified ||
|| Landing.jsp 1.2 kb Mon, 27 Apr 2009 15:34:54 GMT ||
|| data/ Mon, 27 Apr 2009 15:14:14 GMT ||
|| image/ Mon, 27 Apr 2009 15:14:08 GMT ||
|| login.jsp 1.3 kb Mon, 27 Apr 2009 16:35:34 GMT ||
|| test/ Mon, 27 Apr 2009 15:58:50 GMT ||
|| ||
|| --------------------------------------------------------------- ||
|| ||
|| Apache Tomcat/6.0.14 ||
|| ||
||=================================================================||
如果reloadable的gؓ(f)falseQ则不能昄
到此q有两个特别注意的地方,
W一QTomcat的默认是不允许新拟目录的Q?br />
W二Q凡是改变了server.xml和web.xml文g内容都必重启Tomcat?/p>