??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">
题外话:我们可以让页面自动刷新或者蟩转,只需?br />
<meta http-equiv="refresh" content="5">?U自动刷新页面一?br />
<meta http-equiv="refresh" content="5QurlQabc.html">5U?后自动蟩转到abc.html
]]>
Ҏ(gu)1Q关掉已l打开的文档,在左边右键要~辑的文档目录,选择“open with”Q-选择使用“MyEclipse JSP Editor”方式打开?nbsp;
Ҏ(gu)2Q在 MyEclipse 工具栏中依次选择 Window ---- Preferences ---- MyEclipse
1) ?validation 中将 suspend all validation 勾上
2QFiles and Editors ---- JSP ----- ?validate JSP fragments L?nbsp;
Ҏ(gu)3Q换一个编辑器吧! window-->preferences-->General-->Editors-->File Association-->*.jsp 然后在对应的 Associated editors: 下选择不带视图的即?...
]]>
2. 选择“java”Q展开Q?#8220;Editor”Q选择“Content Assist”?/p>
3. 选择“Content Assist”Q然后看到右边,双?#8220;Auto-Activation”下面?#8220;Auto Activation triggers for java”q个选项。其实就是指触发代码提示的就?#8220;.”q个W号?/p>
“Auto activation delay”q个是gӞ可以Ҏ(gu)自己的需要进行设|。我讄的是10
4.“Auto Activation triggers for java”q个选项Q在“.”后加abc字母Q方便后面的查找
修改。然?#8220;apply”Q点?#8220;OK”?/p>
5. 然后Q?#8220;File”→“Export”Q在弹出的窗口中选择“Perferences”Q点?#8220;下一?#8221;?/p>
6. 选择导出文g路径Q本人导出到桌面Q输?#8220;test”作ؓ文g名,点击“保存”?/p>
7. 在桌面找到刚在保存的文g“test.epf”,右键选择“用记事本打开”?/p>
8. 可以看到很多配置MyEclipse 6.0.1的信?/p>
9. ?#8220;ctrl + F”快捷键,输入“.abc”Q点?#8220;查找下一?#8221;?/p>
10. 查找?#8220;.abc”的配|信息如下:
如下Q?/p>
/instance/org.eclipse.jdt.ui/content_assist_autoactivation_triggers_java=.abc
11. ?#8220;.abc”Ҏ(gu)“.abcdefghijklmnopqrstuvwxyz”Q保存,关闭“test.epf”?/p>
12. 回到MyEclipse 6.0.1界面Q?#8220;File”→“Import”Q在弹出的窗口中选择“Perferences”Q点?#8220;下一?#8221;Q选择刚在已经修改?#8220;test.epf”文gQ点?#8220;打开”Q点?#8220;Finish”。该步骤和上面的导出步骤cM?/p>
13. 最后当然是q行代码试了。随便新Z个工E,新徏一个类。在代码输入switchQforeach{进行测试。你立即会发玎ͼ果然Z提示Q而且无论是敲哪个字母都会有很多相关的提示了,很流畅,很方ѝ?/p>
public class Pro_Cus {
public static void main(String[] args){
Container con=new Container();
Producer p=new Producer(con);
Customer c=new Customer(con);
new Thread(p).start();//各定义了两个U程Q可以多个线E?br />
new Thread(c).start();
new Thread(p).start();
new Thread(c).start();
}
}
//产品
class Product{
int id;
public Product(int id){
this.id=id;
}
public String toString(){
return ""+this.id;
}
}
//装品容?br />
class Container{
Product[] num=new Product[10];
int index=0;
public synchronized void push(Product pro){
while(index==num.length){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.notifyAll(); //倘若只有一个消费线E则Q用this.notify();
num[index]=pro;
index++;
}
public synchronized Product pop(){
while(index==0){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.notifyAll();//倘若只有一个生产者线E,用this.notify
index--;
return num[index];
}
}
//生?br />
class Producer implements Runnable{
Container con=null;
public Producer(Container con){
this.con=con;
}
public void run(){
for(int i=0;i<20;i++){
try {
Thread.sleep(10); //10毫秒生一?br />
} catch (InterruptedException e) {
e.printStackTrace();
}
con.push(new Product(i));
System.out.println("生了品:"+i);
}
}
}
//消费?br />
class Customer implements Runnable{
Container con=null;
public Customer(Container con){
this.con=con;
}
public void run(){
for(int i=0;i<20;i++){
try {
Thread.sleep((int)(Math.random()*3000));//随机于{于3U消费一?br />
//Thread.sleep(3000);//?U消费一个用Q这UŞ?br />
} catch (InterruptedException e) {
e.printStackTrace();
}
Product pro=con.pop();
System.out.println("消费了品:"+pro);
}
}
}
Page 指o
定义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作用于整个JSP面Q同样包括静态的包含文g。但?lt;% @ page %>指o不能作用于动态的包含文gQ比?<jsp:include>
你可以在一个页面中用上多个<% @ page %>指oQ但是其中的属性只能用一ơ,不过也有个例外,那就是import属性。因为import属性和Java中的import语句差不?参照Java Language)Q所以你p多用此属性几ơ了.
无论你把<% @ page %>指o攑֜JSP的文件的哪个地方Q它的作用范围都是整个JSP面。不q,ZJSPE序的可L,以及好的~程习惯Q最好还是把它放在JSP文g的顶?
?
Taglib 指o
定义一个标{ֺ以及其自定义标签的前~.
JSP 语法
<%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %>
例子
<%@ taglib uri="http://www.jspcentral.com/tags" prefix="public" %>
<public:loop>
.
.
</public:loop>
描述
<% @ taglib %>指o声明此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 %>指oQ而且你可以在一个页面中多次使用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做ؓ你的前缀
?
<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传送参数和|在这个例子中我们传递的参数名ؓusername,gؓscott,如果你用了<jsp:param>标签的话Q目标文件必L一个动态的文gQ能够处理参?
如果你用了非缓冲输出的话,那么使用<jsp:forward>时就要小心。如果在你?lt;jsp:forward>之前Qjsp文g已经有了数据Q那么文件执行就会出?
属?/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也会被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ؓ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>元素会Ҏ(gu)览器的版本替换?lt;object>或?lt;embed>元素。注意,<object>用于HTML 4.0 Q?lt;embed>用于HTML 3.2.
一般来_<jsp:plugin>元素会指定对象是Appletq是Bean,同样也会指定class的名字,q有位置Q另外还会指定将从哪里下载这个Java插g。具体如?
属?/span>
.被执行的插件对象的cdQ你必须得指定这个是Beanq是applet,因ؓq个属性没有缺省?
会被Java插g执行的Java Class的名字,必须?classl尾。这个文件必d在于codebase属性指定的目录?
会被执行的Java Class文g的目录(或者是路径)Q如果你没有提供此属性,那么使用<jsp:plugin>的jsp文g的目录将会被使用.
q个Bean或applet实例的名字,它将会在Jsp其它的地方调?
一些由逗号分开的\径名Q这些\径名用于预装一些将要用的class,q会提高applet的性能.
囑ŞQ对象,Applet的位|?有以下?
Applet或Bean要昄的长宽的|此gؓ数字Q单位ؓ象素.
Applet或Bean昄时在屏幕左右Q上下所需留下的空_单位?
Applet或Beanq行所需的Java Runtime Environment (JRE) 的版?
~省值是 1.1.
Netscape Navigator用户能够使用的JRE的下载地址Q此gؓ一个标准的URLQ如http://www.aspcn.com/jsp
IE用户能够使用的JRE的下载地址Q此gؓ一个标准的URLQ如http://www.aspcn.com/jsp
value="{parameterValue | <%= expression %>}" /> ]+ </jsp:params>
你需要向applet或Bean传送的参数或参数倹{?/span>
一D|字用于Java
插g不能启动时显C给用户的,如果插g能够启动而applet或Bean不能Q那么浏览器会有一个出错信息弹?
十二.
<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昄一个注?
JSP 语法
<!-- comment [ <%= expression %> ] -->
例子 1
<!-- This file displays the user login screen -->
在客L的HTML源代码中产生和上面一L数据Q?
<!-- This file displays the user login screen -->
例子 2
<!-- This page was loaded on <%= (new java.util.Date()).toLocaleString() %> -->
在客L的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>
描述
用隐藏注释标记的字符会在JSP~译时被忽略掉。这个注释在你希望隐藏或注释你的JSPE序时是很有用的?/span>
JSP~译器不是会?lt;%--and--%>之间的语句进行编译的Q它不会昄在客L览器中Q也不会在源代码中看到在<%-- --%>之间Q你可以L写注释语句,但是不能使用 "--%>",如果你非要用请?--%\>".
?
声明
在JSPE序中声明合法的变量和方?
JSP 语法
<%! declaration; [ declaration; ]+ ... %>
例子
<%! int i = 0; %>
<%! int a, b, c; %>
<%! Circle a = new Circle(2.0); %>
描述
声明你将要在JSPE序中用到的变量和方法。你也必这样做Q不然会出错.
你可以一ơ性声明多个变量和Ҏ(gu)Q只要以";"l尾pQ当然这些声明在Java中要是合法的?
当你声明Ҏ(gu)或变量时Q请注意以下的一些规?
声明必须?;"l尾(Scriptlet有同L规则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来作ؓ表达式的l束W?但是同样的表辑ּ用在scriptlet中就需要以分号来结了Q查看Scriptlet q个表达式元素能够包括Q何在Java Language Specification中有效的表达?
有时候表辑ּ也能做ؓ其它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表辑ּ
因ؓscriptlet,我们便能做以下的?
声明要用到的变量或Ҏ(gu)Q参?声明).
~写JSP表达式(参?表达?.
使用M隐含的对象和M?lt;jsp:useBean>声明q的对象
~写JSP语句 (如果你在使用Java语言Q这些语句必遵从Java Language Specification,).
M文本QHTML标记QJSP元素必须在scriptlet之外
当JSP收到客户的请求时Qscriptlet׃被执行,如果scriptlet有显C的内容Q这些显C的内容p存在out对象中?/span>
5.修改密码update user set password=password('newpassword') where user='root';然后flush privileges;
增添账号Qinsert into user (host,user,password)values('localhost','c',password('c'))Q然后flush privileges;
其它Ҏ(gu)加后也要flush privileges;
借助于工具mysql-front实现数据库的备䆾Q增减用户很方便?/font>
6. mysql用jdbc驱动方式q接数据库?br />
public void getConnect()
{
try
{
/*mysql 5.1.40,q接数据时勿忘将jdbcq接jar包放入tomcat的lib目录?/
/*用驱动方式连?/
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url="jdbc:mysql://localhost/student?"; //studentq接的数据库
String username="root"; //q接数据库的用户?br />
String password="psd"; //密码
conn=DriverManager.getConnection(url,username,password);
}
catch(Exception e)
{
System.out.print("q接数据库失败!");
}
}
注:需要导入相应的数据库连接需要的包:import java.sql*;conn为Connection 的引用变量?/font>