过程:
1.停掉MSSQLSERVER,将MSSQL安装目录下的E:\Program Files\Microsoft SQL
Server\MSSQL\Data\pubs.mdf和E:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf文
件移走。
2.重新启动MSSQLSERVER,在SQL Server Enterprise Manager中可看到PUBS的图标是灰色的加了个'(置疑
)',删除PUBS。至此是为了模拟Pubs数据库只留下了pubs.mdf,(pubs_log.ldf不再用到)。
3.将pubs.mdf移到MSSQL安装目录下E:\Program Files\Microsoft SQL Server\MSSQL\Data\
4.在SQL查询分析器中执行 exec sp_attach_db 'pubs' ,'E:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
会有错误提示:
设备激活错误。物理文件名 'e:\Program Files\Microsoft SQL Server\MSSQL\data\pubs_log.ldf' 可
能有误。
已创建名为 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.LDF' 的新日志文件。
不过没关系,因为新日志文件已创建了,呵呵。
用此方法只要有.mdf文件,就能回复数据库。
posted @
2006-09-06 11:58 摩西 阅读(3797) |
评论 (1) |
编辑 收藏
试题是模仿GRE考试,在这实例中,编了一套"中文GRE测试"总共有十道题,读者可自行增加.
注:实例中的试题,可选答案,正确答案封装在文件exam.java 中.用index.jsp文件来实现对问题的调用.核对,显示结果.所以要先编译exam.java成exam.class ,之后index.jsp才能调用.
少说费话--直入主题:
1.在Tomcat目录下的webapps目录下新建book文件夹,
1.5 在Tomcat目录下的conf/Catalina/localhost目录下新建一个book.xml (这一步很重要!!)
写入:
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="E:/Program Files/Apache Software Foundation/Tomcat 5.0/webapps/book" path="/book" reloadable="true">
</Context>
2.在book文件夹下新建WEB-INF文件夹.
2.5 在WEB-INF目录下新建web.xml 写入:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
</web-app>
3.在WEB-INF文件夹下新建classes文件夹.
4.把index.jsp exam.java 放到book目录下.
5.用javac exam.java 编译exam.java成exam.jsp (可在命令行中运行此步)
6.exam.jsp 放到WEB-INF/classes/exam目录下.
7.启动tomcat.
8.输入地址: http://localhost:8080/book 回车 OK !!!!
附index.jsp代码:
<html>
<head>
<META http-equiv=Content-Type content="text/html; charset=GB2312">
<title>网上测试</title>
</head>
<body>
<%@ page language="java" contentType="text/html;charset=GB2312" buffer="none"%>
<jsp:useBean id="exam" scope="session" class="exam.exam"/>
<FONT SIZE="+2"><B>
<%=exam.getExamName()%>
</B></FONT>
<br><br>
<%
int current=exam.getCurrent();
String reset=null;
reset=request.getParameter("Reset");
if(reset==null){
reset="";
}
if(reset.equals("1"))
{
exam.reset();
}
int iqn=0;
String questionNum=null;
questionNum=request.getParameter("QuestionNum");
if(questionNum==null)
{
iqn=0;
}
else
{
Integer tmpInt=new Integer(questionNum);
iqn=tmpInt.intValue();
}
if(iqn!=0)
{
current++;
exam.setCurrent(current);
}
String answer=null;
answer=request.getParameter("Answer");
if(answer==null)
{
answer="";
}
if(exam.getCurrent()>exam.getCount())
{
if(exam.getCorrect()>=6)
{
%>
恭喜!你以<%=exam.getCorrect()*10 %>分的成绩通过了测试!<BR>
<%
}
else
{
%>
对不起,你需要60分以上的成绩才能通过测试!<BR>
你可以按<A HREF="exam.jsp?Reset=1">这里</A>重新进行测试。<BR>
<%
}
}
else
{
if(iqn==0)
{
if(answer. equals(exam.getCorrectAnswer(exam.getCurrent()-1)))
{
exam.setCorrect(exam.getCorrect()+1);
}
}
else
{
if(answer.equals(exam.getCorrectAnswer(exam.getCurrent()-2)))
{
exam.setCorrect(exam.getCorrect()+1);
}
}
%>
<FORM action="exam.jsp" method="post">
<input type="hidden" name="QuestionNum" value="<%=current%>">
<P>
总共<%=exam.getCount()%>个问题,现在是第<%=exam.getCurrent()%>个问题
</P>
<br>
<b>
<%=current%>
</b>
<%
out.println(exam.getExamQuestion(current-1));
%>
<br>
<input type="radio" name="Answer" value="A">
<%
out.println(exam.getExamAnswer(current-1,0));
%>
<br>
<input type="radio" name="Answer" value="B">
<%
out.println(exam.getExamAnswer(current-1,1));
%>
<br>
<input type="radio" name="Answer" value="C">
<%
out.println(exam.getExamAnswer(current-1,2));
%>
<br>
<input type="radio" name="Answer" value="D">
<%
out.println(exam.getExamAnswer(current-1,3));
%>
<br>
<input type="submit" value="确定">
</form>
<%
}
%>
</body>
</html>
exam.java代码:
package exam;
public class exam
{
int count;
int current;
int correct;
String examName;
// String answer;
String[] examQuestion=
{//存放所有的问题
"1.科学常识:下列有关科学家的叙述,何者正确?",
"2.牛顿三大运动定律的第一定律是:",
"3.两个报名参加海军的年轻人被问道:\"你们会游泳吗?\"他俩愣住了。过了一会儿,其中一个人回答说:\"怎么回事,难道船不够用吗?\"这篇文章的主题是什么",
"4.接上题。考官为什么要问这两个人游泳的事?",
"5.男:看那个妹妹,好靓哦!女:看你个大头鬼!问:这个女的是什么意思?",
"6.男:今天天气不错。女:可不是咋得!问:这个女的什么意思?",
"7.男:我把捡来的钱包交给警察了。男:我KAO!",
"8.女:您好,您拨叫的用户没有开机,要留言请留言,不留言请挂机。问:这是发生在什么时候?",
"9.ABCD四教授申请中科院院士,如果以下事实为真,谁最有资格入选",
"10.以下是摘自电影《大话西游》中唐僧的一句台词,选项中可能正确的是人和妖精都是妈生的,不同的人是人他妈的,妖是妖他妈的,妖要有了仁慈之心,就不是妖了,而是人妖"
};
String[][] examAnswer=
{//问题可选的答案
{"(A)天文学家常常到天体营去研究天文的奥秘","(B)地质学家常常到地牢去研究地层结构","(C)大气科学家常常坐热气球到天空研究台风","(D)以上都不对"},
{"(A)静如处子 动于脱兔","(B)静中有动 动中有静","(C)运动绝对 静止相对","(D)静者恒静 动者恒动"},
{"(A)参军","(B)打鱼","(C)游泳","(D)造船"},
{"(A)他想让他们教他游泳","(B)他想知道这两个人会不会被淹死","(C)他担心船不够用","(D)他想举行游泳比赛"},
{"(A) 这个男的头有病","(B)这个男的头比较大","(C)这个男的看见的是鬼","(D)这个女的有点吃醋"},
{"(A)今天天气不好","(B)今天天气很好","(C)这女的没听清","(D)这女的不知道"},
{"(A)他很惊讶","(B)他丢了钱包","(C)他想揍第一个人","(D)他累了想找个地方靠靠"},
{"(A)打电话","(B) 开飞机","(C) 发EMAIL","(D)坐飞机"},
{"(A)是中国改革开放以后第一个公费留德的四十岁以下的女性的在微电子领域的花了少于三年毕业的毅然回国的博士","(B)是在使用黑白胶卷照出彩照这一国际前沿领域做出突破贡献的科学家","(C)毕业于我国著名的海南热带作物学院,学惯东西,差一点就复制出了恐龙。而且率先提出,中国人才没有断层,只是待遇和职称断层","(D)经常陪李岚清打敲三家和拱猪,对高校合并做出突出贡献"},
{"(A)人妖是指:妈妈还健在就去做了和尚的妖精","(B)人和妖精没有本质区别,因为他们都是同一位女士生的","(C)唐僧为了超度一只妖精,不惜和妖精一起骂人","(D)唐僧暗示自己的母亲原来就是一只妖精变的"}
};
String[] correctAnswer=
{//正确的答案
"D","C","A","B","D","B","A","A","B","C"
};
String message;
public exam()
{//重设测试
reset();
}
public void reset()
{//重设测试
count=10;
current=1;
correct=0;
examName="中文GRE考试样题";
}
public void setCount(int c)
{
count=c;
}
public int getCount()
{
return count;
}
public void setCurrent(int c)
{
current=c;
}
public int getCurrent()
{
return current;
}
public void setCorrect(int c)
{
correct=c;
}
public int getCorrect()
{
return correct;
}
public void setExamName(String name)
{
examName=name;
}
public String getExamName()
{
return examName;
}
public void setCorrectAnswer(String[] answer)
{
correctAnswer=answer;
}
public void setCorrectAnswer(int i,String answer)
{
correctAnswer[i]=answer;
}
public String getCorrectAnswer(int i)
{
return correctAnswer[i];
}
public String[] getCorrectAnswer()
{
return correctAnswer;
}
public void setExamQuestion(String[] question)
{
examQuestion=question;
}
public void setExamQuestion(int i,String question)
{
examQuestion[i]=question;
}
public String[] getExamQuestion()
{
return examQuestion;
}
public String getExamQuestion(int i)
{
return examQuestion[i];
}
public void setExamAnswer(String[][] answer)
{
examAnswer=answer;
}
public void setExamAnswer(int i,String[] answer)
{
examAnswer[i]=answer;
}
public void setExamAnswer(int i ,int j,String answer)
{
examAnswer[i][j]=answer;
}
public String[][] getExamAnswer()
{
return examAnswer;
}
public String[] getExamAnswer(int i)
{
return examAnswer[i];
}
public String getExamAnswer(int i,int j)
{
return examAnswer[i][j];
}
}
posted @
2006-09-06 10:57 摩西 阅读(292) |
评论 (0) |
编辑 收藏
经常看到jsp的初学者问tomcat下如何配置jsp、servlet和bean的问题,于是总结了一下如何tomcat下配置jsp、servlet和ben,希望对那些初学者有所帮助。
一、开发环境配置
第一步:下载j2sdk和tomcat:到sun官方站(http://java.sun.com/j2se/1.5.0/download.jsp)下载j2sdk,注意下载版本为Windows Offline Installation的SDK,同时最好下载J2SE 1.5.0 Documentation,然后到tomcat官方站点(http://jakarta.apache.org/site/downloads/downloads_tomcat-5.cgi)下载tomcat(下载最新5.5.9版本的tomcat);
第二步:安装和配置你的j2sdk和tomcat:执行j2sdk和tomcat的安装程序,然后按默认设置进行安装即可。
1.安装j2sdk以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的j2sdk安装在c:\j2sdk1.5.0):
JAVA_HOME=c:\j2sdk1.5.0
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(.;一定不能少,因为它代表当前路径)
path=%JAVA_HOME%\bin
接着可以写一个简单的java程序来测试J2SDK是否已安装成功:
public class Test{
public static void main(String args[]){
System.out.println("This is a test program.");
}
}
将上面的这段程序保存为文件名为Test.java的文件。
然后打开命令提示符窗口,cd到你的Test.java所在目录,然后键入下面的命令
javac Test.java
java Test
此时如果看到打印出来This is a test program.的话说明安装成功了,如果没有打印出这句话,你需要仔细检查一下你的配置情况。
2.安装Tomcat后,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的tomcat安装在c:\tomcat):
CATALINA_HOME=c:\tomcat
CATALINA_BASE=c:\tomcat
然后修改环境变量中的classpath,把tomat安装目录下的common\lib下的(可以根据实际追加)servlet.jar追加到classpath中去,修改后的classpath如下:
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet.jar;
接着可以启动tomcat,在IE中访问http://localhost:8080,如果看到tomcat的欢迎页面的话说明安装成功了。
第三步:建立自己的jsp app目录
1.到Tomcat的安装目录的webapps目录,可以看到ROOT,examples, tomcat-docs之类Tomcat自带的的目录;
2.在webapps目录下新建一个目录,起名叫myapp;
3.myapp下新建一个目录WEB-INF,注意,目录名称是区分大小写的;
4.WEB-INF下新建一个文件web.xml,内容如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"
http://java.sun.com/dtd/web-app_2_3.dtd
">
<web-app>
<display-name>My Web Application</display-name>
<description>
A application for test.
</description>
</web-app>
5.在myapp下新建一个测试的jsp页面,文件名为index.jsp,文件内容如下:
<html><body><center>
Now time is: <%=new java.util.Date()%>
</center></body></html>
6.重启Tomcat
7.打开浏览器,输入http://localhost:8080/myapp/index.jsp 看到当前时间的话说明就成功了。
第四步:建立自己的Servlet:
1.用你最熟悉的编辑器(建议使用有语法检查的java ide)新建一个servlet程序,文件名为Test.java,文件内容如下:
package test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Test extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out=response.getWriter();
out.println("<html><body><h1>This is a servlet test.</h1></body></html>");
out.flush();
}
}
2 .编译
将Test.java放在c:\test下,使用如下命令编译:
C:\Test>javac Test.java
然后在c:\Test下会产生一个编译后的servlet文件:Test.class
3 .将结构test\Test.class剪切到%CATALINA_HOME%\webapps\myapp\WEB-INF\classes下,也就是剪切那个test目录到classes目录下,如果classes目录不存在,就新建一个。 现在webapps\myapp\WEB-INF\classes下有test\Test.class的文件目录结构
4 .修改webapps\myapp\WEB-INF\web.xml,添加servlet和servlet-mapping
编辑后的web.xml如下所示,红色为添加的内容:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>My Web Application</display-name>
<description>
A application for test.
</description>
<servlet>
<servlet-name>Test</servlet-name>
<display-name>Test</display-name>
<description>A test Servlet</description>
<servlet-class>test.Test</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/Test</url-pattern>
</servlet-mapping>
</web-app>
这段话中的servlet这一段声明了你要调用的Servlet,而servlet-mapping则是将声明的servlet"映射"到地址/Test上
5 .好了,重启动Tomcat,启动浏览器,输入http://localhost:8080/myapp/Test 如果看到输出This is a servlet test.就说明编写的servlet成功了。
注意:修改了web.xml以及新加了class,都要重启Tomcat
第四步:建立自己的Bean:
1.用你最熟悉的编辑器(建议使用有语法检查的java ide)新建一个java程序,文件名为TestBean.java,文件内容如下:
package test;
public class TestBean{
private String name = null;
public TestBean(String strName_p){
this.name=strName_p;
}
public void setName(String strName_p){
this.name=strName_p;
}
public String getName(){
return this.name;
}
}
2 .编译
将TestBean.java放在c:\test下,使用如下命令编译:
C:\Test>javac TestBean.java
然后在c:\Test下会产生一个编译后的bean文件:TestBean.class
3 .将TestBean.class文件剪切到 %CATALINA_HOME%\webapps\myapp\WEB-INF\classes\test下,
4 .新建一个TestBean.jsp文件,文件内容为:
<%@ page import="test.TestBean" %>
<html><body><center>
<%
TestBean testBean=new TestBean("This is a test java bean.");
%>
Java bean name is: <%=testBean.getName()%>
</center></body></html>
5 .好了,重启Tomcat,启动浏览器,输入http://localhost:8080/myapp/TestBean.jsp 如果看到输出Java bean name is: This is a test java bean.就说明编写的Bean成功了。
这样就完成了整个Tomcat下的jsp、servlet和javabean的配置。接下来需要做的事情就是多看书、多读别人的好代码,自己多动手写代码以增强自己在这方面开发的能力了。
jvm应填写到
c:\j2sdk\bin
给你一个简单的配置::::
JSP环境配置心得
首先要说的是,使用jdk+tomcat完全可以配置我们的jsp服务器,不再需要其实任何东东,有很多文章介绍了Apache,其实根本用不着,一般的学习调试tomcat完全可以胜任了。
安装jdk后,tomcat在安装之前会自动找到jdk的安装路径,一路点击"下一步",经过一段时间的文件复制,最后"close",完成comcat的安装。
您最好去下载一个版本较高的tomcat,比如4.1以上的,因为它不需要设置太多的系统变量,右击"我的电脑",选择"属性"->"高级"->"环境变量"->"系统变量",新建一个TOMCAT_HOME,值设置成你的tomcat所在的路径,比如:D:\Program Files\Apache Group\Tomcat 5.5,配置完成。
从开始菜单中找到tomcat选项,一般打开顺序是:开始->程序->Apache Tomcat 5.5,选择"Start Tomcat",让jsp服务器开始运行,此时会打开一个类似Dos的窗口,会显示一些相关的信息。
如果您使用代理上网,一定要先撤掉代理,不然您的jsp程序永远也得不到执行。如果不是代理的,这一步就跳过了。
打开浏览器,在地址栏中输入:http://localhost:8080,如果看到有老虎(我也不知道是老虎还是猫)的画面,恭喜您,您成功了一半。
先来享受一下成功的喜悦吧,请输入下面的代码:
<html>
<head>
<title>First Page</title>
</head>
<body>
<H3>Today is: h
<%= new java.util.Date() %>
</H3>
</body>
</html>
将该程序保存为:First.jsp,放到Tomcat的ROOT目录下,然后在浏览器的地址栏中输入:http://localhost:8080/First.jsp,(First.jsp跟我们保存的文件名的大小写要一致)回车,如果不出意外,应该可以看到形如Today is: h Fri Apr 11 08:32:38 CST 2003 的结果。
注意:ROOT是tomcat的默认虚拟目录,如果要改成自己的虚拟目录怎么办呢?请继续往下看吧。
要改成自己的虚拟目录,就要请出server.xml来了,该文件是一个配置文件,在Tomcat\conf目录下,使用任何文本编辑软件都能打开它,我们先找到下面一句:
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="100" debug="0" connectionTimeout="20000"
useURIValidationHack="false" disableUploadTimeout="true" />
这里的port="8080"就是端口,我们完全可以用别的端口来代替,但不能是被系统占用的端口(0--1023),这里简单提一下。
下面我们再往下找,会发现以下的语句:
</Context>
</Host>
我们就应该找到这两个语句,如果不懂E文,您就认定这两个语句好了。然后我们将该语句更改如下:
</Context>
<Context path="/myjsp" debug="0" docBase="e:/myjsp" reloadable="true">
</Context>
</Host>
这里的path="/myjsp"就是我们就配置的虚拟目录了,以后在地址栏中输入http://localhost:8080/myjsp即可。而docBase="e:/myjsp" 则是机器本地路径,他们通过这个语句形成一个映射关系,其它照抄。
将上面的First.jsp文件放到e:/myjsp目录下,输入http://localhost:8080/myjsp/First.jsp,是不是有一种喜上眉梢的感觉?
在论坛里我见得最多的就是很多人不知道javaBean文件放到哪里,老实说开始我也不知道,更令人不解的是,十个人有九种不同的说法,这更让我们茫然。其实这问题也不是我们想像的那么复杂,我们以一个例子说明:
先建立一个java程序,代码如下:
package hall;
public class SimpleBean {
private String message = "No message specified";
public String getMessage() {
return(message);
}
public void setMessage(String message) {
this.message = message;
}
}
保存为SimpleBean.java,编译后会生成一个包,其实就相当于一个目录,也就是SimpleBean.class会存放在hall目录中,暂且保存起来,将来备用。
再输入以下代码:
<HTML>
<HEAD>
<TITLE>Reusing JavaBeans in JSP</TITLE>
</HEAD>
<BODY>
<CENTER>
<TABLE BORDER=5>
<TR><TH CLASS="TITLE">
Reusing JavaBeans in JSP</TABLE>
</CENTER>
<P>
<jsp:useBean id="test" class="hall.SimpleBean" />
<jsp:setProperty name="test" property="message" value="Hello WWW" />
<H1>Message: <I>
<jsp:getProperty name="test" property="message" />
</I></H1>
</BODY>
保存在我们刚才建立的虚拟目录e:/myjsp下面,并命名为:BeanTest.jsp。
现在我们应该将hall(包)目录放在哪儿呢?别急,我们先在e:/myjsp下建立一个文件夹WEB-INF,然后再在WEB-INF下建立一个classes文件夹,最后将hall目录放到classes下,当然,hall下的字节码文件SimpleBean.class也一并要移过来,而SimpleBean.java就和BeanTest.jsp放到同一目录吧(可以不需要放的,自己试试)。
重新启动机器(如果您试了好多次都不行,这一步一定要做),在浏览器中输入:http://localhost:8080/myjsp/BeanTest.jsp,您看到了什么?呵,别告诉我您什么都没看到,那肯定是您设置的问题了。
posted @
2006-09-05 16:41 摩西 阅读(176) |
评论 (0) |
编辑 收藏
1、JAVA的安装:
正常安装JDK,完成后添加系统变量JAVA_HOME,其值为JDK的根目录,如C:\J2SDK1.4.2(TOMCAT安装时使用此变量捕获JDK)
2、TOMCAT的安装:
A:运行jakarta-tomcat-5.0.12.exe文件,自动捕获JDK
B:解压缩jakarta-tomcat-5.0.12.zip,解压的过程既是安装的过程,
安装完成后设置系统变量:CATALINA_HOME,它是TOMCAT的安装目录,如果没有进行设置,则在TOMCAT第一次启动时自动设置
3、TOMCAT的测试:
A启动:如果安装时是.EXE文件,则会在开始菜单中出现TOMCAT的菜单,如果解压缩安装则在安装目录的BIN目录下有STARTUP.BAT
B关闭:如果安装时是.EXE文件,则会在开始菜单中出现TOMCAT的菜单,如果解压缩安装则在安装目录的BIN目录下有SHUTDOWN.BAT
C测试:TOMCAT服务器启动后,浏览器中输入HTTP://LOCALHOST:8080
若要改变访问端口号,则在CONF目录下将SERVER.XML中CONNECTOR元素的PORT属性值改变即可。
4、TOMCAT目录结构
bin 存放启动和关闭tomcat脚本
conf 包含不同的配置文件,server.xml(Tomcat的主要配置文件)和web.xml
SERVER 包含3个子目录classes,lib,webapps
server/classes 各种类文件,默认为空
server/lib 存放tomcat服务器所需的各种JAR文件
server/webapps 存放tomcat自带的两个web应用案例:admin manager
common tomcat服务器以及所有web应用都可以访问的JAR文件
shared 所有web应用都可以访问的JAR文件
work 存放jsp编译后产生的class文件
logs 存放日志文件
webapp 存放应用程序示例,以后你要部署的应用程序也要放到此目录 (重要)
5、WEB应用程序的目录结构
在WEB上发布的J2EE应用程序都有自己特定的目录结构
假设创建一名为HELLOAPP的WEB项目
HELLOAPP:WEB应用根目录,所有JSP\HTML等文件均存放于此
HELLOAPP/WEB-INF 存放WEb应用的发布描述文件web.xml
HELLOAPP/WEB-INF/classes 存放各种class文件,servlet类文件也存放于此
HELLOAPP/WEB-INF/lib 存放WEb应用所需的各种JAR文件
6、web.xml文件配置
参见conf目录下web.xml
7、server.xml文件配置(重要的配置)
server port 指定一个端口,这个端口负责监听关闭tomcat的请求
shutdown 指定向端口发送的命令字符串
service name 指定service的名字
Connector
(表示客户端和service之间的连接) port 指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求
minProcessors 服务器启动时创建的处理请求的线程数
maxProcessors 最大可以创建的处理请求的线程数
enableLookups 如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
redirectPort 指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
connectionTimeout 指定超时的时间数(以毫秒为单位)
Engine
(表示指定service中的请求处理机,接收和处理来自Connector的请求) defaultHost 指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的
Context
(表示一个web应用程序,通常为WAR文件,关于WAR的具体信息见servlet规范) docBase 应用程序的路径或者是WAR文件存放的路径
path 表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/****
reloadable 这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序
host
(表示一个虚拟主机)
name 指定主机名
appBase 应用程序基本目录,即存放应用程序的目录
unpackWARs 如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序
Logger
(表示日志,调试和错误信息)
className 指定logger使用的类名,此类必须实现org.apache.catalina.Logger 接口
prefix 指定log文件的前缀
suffix 指定log文件的后缀
timestamp 如果为true,则log文件名中要加入时间,如下例:localhost_log.2001-10-04.txt
Realm
(表示存放用户名,密码及role的数据库)
className 指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口
Valve
(功能与Logger差不多,其prefix和suffix属性解释和Logger 中的一样)
className 指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValve类可以记录应用程序的访问信息
directory 指定log文件存放的位置
pattern 有两个值,common方式记录远程主机名或ip地址,用户名,日期,第一行请求的字符串,HTTP响应代码,发送的字节数。combined方式比common方式记录的值更多
在以上的设置项目中Context是最重要也是使用最频繁的元素,他代表了运行在主机上的每个web应用。一个主机上可以用 多个web应用,每个web应用对应一个唯一的地址,而地址在Context元素的path属性中设置
path:访问web程序的url入口
docbase:制定web程序的路径,如果web应用是开放目录结构,则为根目录,若为war文件则为war文件的路径
例如:
<Context path="/helloapp" docbase="helloapp" reloadable="true"/>
当设置jsp文件时,只需把文件放到web应用根目录下即可访问,而设置servlet还要在web.xml中设置
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=813657
posted @
2006-09-05 12:06 摩西 阅读(489) |
评论 (0) |
编辑 收藏
摘要: 一、Tomcat背景
自从JSP发布之后,推出了各式各样的JSP引擎。Apache Group在完成GNUJSP1.0的开发以后,开始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JSP服务器,当然同时也支持Servlet, 这样Tomcat就诞生了。
Tomcat是ja...
阅读全文
posted @
2006-09-05 12:04 摩西 阅读(199) |
评论 (0) |
编辑 收藏
1.one page: action_demo.html
<html>
<head></head>
<body>
<form name="input" action="html_form_action.html" method="get">
Usename:
<input type="text" name="user" value="admin"><input type="submit" value="Submit">
</form>
</body>
</html>
2.two page: html_from_action.html
<html>
<head></head>
<script language="javascript">
function getparastr(strname)
{
var hrefstr,pos,parastr,para,tempstr;
hrefstr = window.location.href;
pos = hrefstr.indexOf("?")
parastr = hrefstr.substring(pos+1);
para = parastr.split("&");
tempstr="";
for(i=0;i<para.length;i++)
{
tempstr = para[i];
pos = tempstr.indexOf("=");
if(tempstr.substring(0,pos) == strname)
{
return tempstr.substring(pos+1);
}
}
return null;
}
// 获取program参数
//var userstr = getparastr("user");
//document.write(userstr);
//用得到的值给form中的文本框赋值
function getname()
{
var userstr = getparastr("user");
document.fr1.input.value=userstr;
}
</script>
<body>
<form name="fr1" >
你的名字是:
<input type="text" name="input" >
<input type="button" name="bt1" value="查看用户名" onclick="getname()">
</form>
</body>
</html>
posted @
2006-09-05 10:18 摩西 阅读(5027) |
评论 (1) |
编辑 收藏
XML相关资源
一. XML的大本营
XML是由W3C(World Wide Web Consortium)国际组织负责开发和制定标准的。关于XML最权威,最新的消息都来自W3C。网址是:
http://w3c.org/XML/ 另外一个名为OASIS的前著名的SGML研究组织也在一起推动XML的发展,网址是:
http://www.oasis-open.org/ 二. XML指南
http://www.w3.org/TR/REC-xml W3C关于XML规范的详细,完整的说明。不用多说,绝对权威。
http://www.xml.com/axml/testaxml.htm 这是Tim Bary写的XML规范说明书,非常的详细和严密,是学习XML规范的好帮手。
三. XML常见问题
Peter Flynn的 XML FAQ
http://www.ucc.ie/xml/ 包含大量详细的资料,经常更新,由W3C协会XML组维护。
Lisa Rein’s finetuning XML FAQs
http://www.finetuning.com/faq.html 这个FAQ列表有侧重点,主要包含XSLT FAQ,XPath FAQ和IE5中的XSL FAQ。
Dave Pawson’s XSL FAQ
http://www.dpawson.co.uk/xsl/idx.html 提供最好的关于XSL方面的FAQ,创建于1999年。
jGuru’s Extensible Markup Language (XML) FAQ
http://www.jguru.com/jguru/faq/faqpage.jsp?name=XML 这个FAQ列表是一个典型的"老百晓",任何问题,从普通的到非常细节的XML问题都可以在这里找到。
Ronald Bourret’s XML Namespaces FAQ
http://www.informatik.tu-darmstadt.de/DVS1/staff/bourret/xml/ NamespacesFAQ.htm
创建于2000初,是关于namespaces概要的FAQ。
四. XML主题网站
http://www.xml.com/ 一个以XML为主题的内容丰富的网站
http://www.xml-zone.com/ 另一个比较知名的XML网站,提供XML的新闻和资讯。
http://www.xmlinfo.com/ 网站创建者James Tauber’s是W3C组织XML发展组的成员之一,他的网站提供了大量的连接和例子。
http://www.simonstl.com/ 网站创建者Simon St. Laurent也是XML发展组的成员。他是W3C中XML初级入门教程的作者,他的站点主要提供有关XML的发展信息。
http://msdn.microsoft.com/xml/c-frame.htm#/xml/default.asp 微软的MSDN关于XML的主题网站。微软在推进XML应用方面不遗余力。
http://www.xmlsoftware.com/ 是XML info的姐妹网站,内容包括XML/DTD/XSL编辑软件,XML API软件等。
http://xmlhack.com/ 1999年9月建立的大型XML新闻网站,同时提供XML人才信息。
http://xml.apache.org/ Apache软件基金会(ASF),提供了大量open source的XML和XSL的工具软件。
http://www.biztalk.org/ BizTalk是微软发起的以XML商业应用为目标的组织。BizTalk不是一个标准组织。
五. XML的编辑软件
目前XML文档的编辑软件依然很少。虽然我们可以手工编写,但是如果有一个好的软件(类似用DW/FP编写HTML),可以减少差错和提高效率。下面是现有的一些编辑软件。
http://www.macromedia.com/software/dreamweaver/ Macromedia最新的Dreamweaver 4.0已经支持XML文档的编写。推荐使用。
http://www.microsoft.com/xml/notepad/intro.asp 微软在这方面向来不会落后,它推出的XML Notepad是一个非常小巧灵活的XML文档编辑器。推荐使用。
http://www.adobe.com/prodindex/framemaker/prodinfosgml.html Adobe公司的Framemaker plus是目前较好的XML编辑软件。
http://www.arbortext.com/ Arbortext公司是重点开发XML游戏的公司。
http://www.inso.com/ Inso,好象是用来处理大型SGML或者XML文档的软件。
http://www.softquad.com/ Softquad 是HTML和SGML软件的开发商,对XML自然不会放过。
六. 支持XML的浏览器
http://www.microsoft.com/windows/ie/ IE 5.X是目前流行浏览器唯一支持XML的,它可以在微软的网站免费下载到。
http://developer.netscape.com/software/communicator/ngl/ index.html?cp=dev09fg01
Gecko是另一种支持XML的浏览器,但目前只是测试版。
七. XML parser
Parser是一个检查XML文档语法是否符合DTD定义,并进行解析的软件。
在线的parser
http://validator.w3.org/ W3C组织提供的一个在线paeser。可以根据你在线提交的XML文档URL,进行验证和解吸。
http://www.stg.brown.edu/service/xmlvalid/ 一个Brown大学科技小组提供的parser,非常方便和容易理解。。
可下载的Parser
有很多可以下载到本机上运行的parser,下面列出一些主要的:
http://www.jclark.com/xml/expat.html James Clark是在SGML/XML领域的元老,他写的parser被广泛的运用。
http://www.alphaworks.ibm.com/tech/xml 一个以Java语言编写的Parser,来自IBM。
http://www.microsoft.com/xml/parser/cparser.asp 微软的XML Parser,用C++写成。
http://www.stud.ifi.uio.no/~larsga/download/python/xml/xmlproc.html 用Python写的parser。
http://www.jeremie.com/Dev/XML/ 用javascript写的parser,只用来检查语法,不进行解吸析。
http://w3c.org/RDF/Implementations/SiRPAC/ 来自W3C组织的SiRPAC,全称是Simple RDF Parser and Compiler。
八. Schema编辑软件
Schema我们前面介绍过,DTD就是一种Schema,我们可以手工写DTD,但现在已经有一些Schema编辑软件来帮助我们更方便的建立DTD。
http://www.extensibility.com/ Extensibility这个软件被称为XML权威。可以以图形化方式建立和编辑schema,包括DTD文件。
九. 国内XML资源
http://www.xml.net.cn/ XML中国论坛是一个非赢利的学术网站。由北京大学计算机科学与技术研究所创办,北大方正集团公司提供赞助。
http://www.xml.org.cn:8188 中国XML联盟将建立为国内第一个开放性网络标准组织,提供XML技术认证、咨询和交流。由上海易方公司赞助。
http://www.xml.com.cn/ chinaasp.com的子站,提供XML文章和技术交流等。
http://www.egroups.com/group/china_xml_list/info.html 中国XML邮件组包括中文XML资源, XML的最新资料,同行的交流空间。由非盈利性组织中国XML联盟负责维护。
http://weblab.crema.unimi.it/xmlzh/XML_FAQ.htm 一个XML FAQ邮件列表的中文翻译,可惜是1998年10月的
posted @
2006-09-03 17:33 摩西 阅读(245) |
评论 (0) |
编辑 收藏
1.传递表单参数:
String name = new String(request.getParameter("name"));
2.数据库连接:
~~MYSQL
//设置数据库的URL
String url = "jdbc:mysql://localhost:3306/jspsky";
try
//加载驱动程序
Class.forname("org.gjt.mm.mysql.Driver").newInstance();
//建立连接
java.sql.Connection connection = java.sql.DriverManager.getConnection(url);
java.sql.Statement statement = connection.createStatement();
//SQL语句
String sqlStringi ="insert into commu(name,tel,mobile,oicq,email)values(‘"+name+"',‘"+tel+"',‘"+mobile+"',‘"+oicq+"',‘"+email+"')";
//运行SQL语句,并建立结果集
java.sql.ResultSet rsi = statement.executeQuery(sqlStringi);
//在屏幕上输出库中的内容
while(rss.next())
{
String a_name = rss.getString(1);
out.println(a_name);
{}
//关闭连接
connection.close();
}
//捕捉异常
catch(java.sql.SQLException e)
out.println(e.getMessage());
{}
catch(ClassNotFoundException e)
out.println(e.getMessage());
{}
~~DB2
//定义数据库的URL
String url = "jdbc:db2:portal";
try
//加载驱动程序
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
//建立连接,
java.sql.Connection connection = java.sql.DriverManager.getConnection(url,"user","password");
java.sql.Statement statement = connection.createStatement();
//SQL语句
String sqlString = "select * from client";
//执行SQL语句
java.sql.ResultSet rs = statement.executeQuery(sqlString);
//在屏幕上显示所连表中的内容
while(rs.next())
{
String name = rs.getString(1);
out.println(name);
{}
//关闭连接
connection.close();
}
//捕捉异常
catch(java.sql.SQLException e)
out.println(e.getMessage());
{}
catch(ClassNotFoundException e)
out.println(e.getMessage());
{}
3.文件操作
~~将一个字符串写到一个指定的文件中,如果该文件不存在,则新建一个文件,并完成写入;如果存在,则用此字符串覆盖原文件的所有内容
import java.io.*;
String str = "print me 雪峰!";
//定义好打印的目标文件名
//取得当前主机存放WEB页面的绝对路径
String hostdir = System.getProperty("user.dir");
//取得当前主机所采用的路径分隔符
String fileBar = System.getProperty("file.separator");
//书写完整的目标文件存放路径
String nameOfFile=hostdir+fileBar+"test.html";
try
//实例化一个文件输出流对象
FileOutputStream afile = new FileOutputStream(nameOfFile);
//将文件输出流,创建一个打印输出流对象
PrintWriter pw = new PrintWriter(afile);
pw.println(str);
//clean up
pw.close();
{}
catch(IOException e)
out.println(e.getMessage());
{}
~~列出指定目录下的文件列表
import java.io.*;
String cdur = System.getProperty("user.dir");
String fileBar = System.getProperty("file.separator");
String mydir =cdur+fileBar+"doc"+fileBar+"jspsky";
File my = new File(mydir);
String d[] = my.list();
int i;
int l=d.length;
for(i=0;i out.print(d);
{}
4.计数器
Integer count = null;
synchronized (application)
count =(Integer) application.getAttribute("d");
if (count ==null)
count =new Integer("0");
count = new Integer(count.intValue()+1);
application.setAttribute("d",count);
{}
out.println(count);
// 首先定义一个整形对象,并初始化为:NULL,
// 取回APPLICATION对像的属性D的值,并强制转化为整形对象,赋给COUNT
// 判断COUNT是否为空,为空时,将O赋给COUNT对象,
// 否则,通过COUNT。INTVALUE()方法,实现COUNT对象加1,并赋值给COUNT
// 最后,将COUNT对象保存在APPLICATION对象的D变量中。
posted @
2006-09-01 10:16 摩西 阅读(179) |
评论 (0) |
编辑 收藏
来自:
Matrix
:
http://www.matrix.org.cn/resource/article/43/43811.html
你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOF,J2EEDP)以及综合模式。你应该十分了解UML,尤其是class,object,interaction以及state diagrams.
你需要学习JAVA语言的基础知识以及它的核心类库(collections,serialization,streams,networking,multithreading,reflection,event,handling,NIO,localization,以及其他)。
你应该了解JVM,class loaders,class reflect,以及垃圾回收的基本工作机制等。你应该有能力反编译一个类文件并且明白一些基本的汇编指令。
如果你将要写客户端程序,你需要学习WEB的小应用程序(applet),必需掌握GUI设计的思想和方法,以及桌面程序的SWING,AWT,SWT。你还应该对UI部件的JAVABEAN组件模式有所了解。JAVABEANS也被应用在JSP中以把业务逻辑从表现层中分离出来。
你需要学习java数据库技术,如JDBC API并且会使用至少一种persistence/ORM构架,例如Hibernate, JDO, CocoBase, TopLink,Inside Liberator(国产JDO 红工厂软件)或者iBatis。你还应该了解对象关系的阻抗失配的含义,以及它是如何影响业务对象的与关系型数据库的交互,和它的运行结果,还需要掌握不同的数据库产品运用,比如: oracle,mysql,ms sql server.
你需要学习JAVA的沙盒安全模式(class loaders, byte code verification, managers, policy and permissions, code signing, digital signatures, cryptography, certification, Kerberos,以及其他)还有不同的安全/认证API,例如JAAS( Java Authentication and Authorization Service), JCE (Java Cryptography Extension), JSSE (Java Secure Socket Extension), 以及 JGSS (Java General Security Service).
你需要学习Servlets, JSP, 以及JSTL(Standard Tag Libraries)和可以选择的第三方Tag Libraries。
你需要熟悉主流的网页框架,例如JSF, Struts, Tapestry, Cocoon, WebWork, 以及他们下面的涉及模式,如MVC/MODEL2.
你需要学习如何使用及管理WEB服务器,例如tomcat,resin,Jrun,并且知道如何在其基础上扩展和维护WEB程序。
你需要学习分布式对象以及远程API,例如RMI和RMI/IIOP。
你需要掌握各种流行中间件技术标准和与java结合实现,比如Tuxedo、CROBA,当然也包括java EE 本身.
你需要学习最少一种的XML API,例如JAXP (Java API for XML Processing), JDOM (Java for XML Document Object Model), DOM4J, 或 JAXR (Java API for XML Registries).
你应该学习如何利用JAVA API和工具来构建Web Service。例如JAX-RPC (Java API for XML/RPC), SAAJ (SOAP with Attachments API for Java), JAXB (Java Architecture for XML Binding), JAXM (Java API for XML Messaging), JAXR (Java API for XML Registries), 或者 JWSDP (Java Web Services Developer Pack)。
你需要学习一门轻量级应用程序框架,例如Spring, PicoContainer, Avalon, 以及它们的IoC/DI 风格(setter, constructor, interface injection)。
你需要熟悉不同的J2EE技术,例如JNDI (Java Naming and Directory Interface), JMS (Java Message Service), JTA/JTS (Java Transaction API/Java Transaction Service), JMX (Java Management eXtensions), 以及 JavaMail.
你需要学习企业级Java Beans(EJB)以及它们的不同组件模式:Stateless/Stateful Session Beans, Entity Beans (包含Bean-Managed Persistence [BMP] 或者 Container-Managed Persistence [CMP] 和它的 EJB-QL), 或者Message-Driven Beans (MDB).
你需要学习如何管理与配置一个J2EE应用程序服务器,如WebLogic ,JBoss等,并且利用它的附加服务,例如簇类,连接池以及分布式处理支援。你还需要了解如何在它上面封装和配置应用程序并且能够监控、调整它的性能。
你需要熟悉面向方面的程序设计以及面向属性的程序设计(这两个都被很容易混淆的缩写为AOP),以及他们的主流JAVA规格和执行。例如AspectJ 和AspectWerkz。
你需要熟悉对不同有用的API和framework等来为你服务。例如Log4J (logging/tracing), Quartz (scheduling), JGroups (network group communication), JCache (distributed caching), Lucene (full-text search), Jakarta Commons等等。
如果你将要对接或者正和旧的系统或者本地平台,你需要学习JNI (Java Native Interface) and JCA (Java Connector Architecture).
你需要熟悉JINI技术以及与它相关的分布式系统,比如掌握CROBA。
你需要Java Community Process(JCP)以及他的不同Java Specification Requests (JSRs), 例如 Portlets (168), JOLAP (69), Data Mining API (73), 等等。
你应该熟练掌握一种JAVA IDE例如sunOne ,netBeans ,IntelliJ IDEA或者Eclipse。(有些人更喜欢VI或EMACS来编写文件。随便你用什么了:))
JAVA(精确的说是有些配置)是冗长的,它需要很多的人工代码(例如EJB),所以你需要熟悉代码生成工具,例如XDoclet。
你需要熟悉一种单元测试体系(JNunit),并且学习不同的生成、部署工具(Ant, Maven)。
你需要熟悉一些在JAVA开发中经常用到的软件工程过程。例如RUP (Rational Unified Process) and Agile methodologies.
你需要能够深入了解加熟练操作和配置不同的操作系统,比如GNU/linux ,sun solaris,mac OS等,做为跨平台软件的开发者。
你还需要紧跟java发展的步伐,比如现在可以深入的学习java ME ,以及各种java 新规范,技术的运用,如 新起的web富客户端技术。
你必需要对open source有所了解,因为至少java 的很多技术直接是靠开源来驱动发展的 ,如 java 3D技术。
posted @
2006-09-01 10:14 摩西 阅读(192) |
评论 (0) |
编辑 收藏
<!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>css菜单演示</title>
<style type="text/css">
<!--
*{margin:0;padding:0;border:0;}
body {
font-family: arial, 宋体, serif;
font-size:12px;
}
#nav {
line-height: 24px; list-style-type: none; background:#666;
}
#nav a {
display: block; width: 80px; text-align:center;
}
#nav a:link {
color:#666; text-decoration:none;
}
#nav a:visited {
color:#666;text-decoration:none;
}
#nav a:hover {
color:#FFF;text-decoration:none;font-weight:bold;
}
#nav li {
float: left; width: 80px; background:#CCC;
}
#nav li a:hover{
background:#999;
}
#nav li ul {
line-height: 27px; list-style-type: none;text-align:left;
left: -999em; width: 180px; position: absolute;
}
#nav li ul li{
float: left; width: 180px;
background: #F6F6F6;
}
#nav li ul a{
display: block; width: 156px;text-align:left;padding-left:24px;
}
#nav li ul a:link {
color:#666; text-decoration:none;
}
#nav li ul a:visited {
color:#666;text-decoration:none;
}
#nav li ul a:hover {
color:#F3F3F3;text-decoration:none;font-weight:normal;
background:#C00;
}
#nav li:hover ul {
left: auto;
}
#nav li.sfhover ul {
left: auto;
}
#content {
clear: left;
}
-->
</style>
<script type=text/javascript><!--//--><![CDATA[//><!--
function menuFix() {
var sfEls = document.getElementById("nav").getElementsByTagName("li");
for (var i=0; i<sfEls.length; i++) {
sfEls[i].onmouseover=function() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
sfEls[i].onMouseDown=function() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
sfEls[i].onMouseUp=function() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
sfEls[i].onmouseout=function() {
this.className=this.className.replace(new RegExp("( ?|^)sfhover\\b"),
"");
}
}
}
window.onload=menuFix;
//--><!]]></script>
</head>
<body>
<ul id="nav">
<li><a href="#">产品介绍</a>
<ul>
<li><a href="#">产品一</a></li>
<li><a href="#">产品一</a></li>
<li><a href="#">产品一</a></li>
<li><a href="#">产品一</a></li>
<li><a href="#">产品一</a></li>
<li><a href="#">产品一</a></li>
</ul>
</li>
<li><a href="#">服务介绍</a>
<ul>
<li><a href="#">服务二</a></li>
<li><a href="#">服务二</a></li>
<li><a href="#">服务二</a></li>
<li><a href="#">服务二服务二</a></li>
<li><a href="#">服务二服务二服务二</a></li>
<li><a href="#">服务二</a></li>
</ul>
</li>
<li><a href="#">成功案例</a>
<ul>
<li><a href="#">案例三</a></li>
<li><a href="#">案例</a></li>
<li><a href="#">案例三案例三</a></li>
<li><a href="#">案例三案例三案例三</a></li>
</ul>
</li>
<li><a href="#">关于我们</a>
<ul>
<li><a href="#">我们四</a></li>
<li><a href="#">我们四</a></li>
<li><a href="#">我们四</a></li>
<li><a href="#">我们四111</a></li>
</ul>
</li>
<li><a href="#">在线演示</a>
<ul>
<li><a href="#">演示</a></li>
<li><a href="#">演示</a></li>
<li><a href="#">演示</a></li>
<li><a href="#">演示演示演示</a></li>
<li><a href="#">演示演示演示</a></li>
<li><a href="#">演示演示</a></li>
<li><a href="#">演示演示演示</a></li>
<li><a href="#">演示演示演示演示演示</a></li>
</ul>
</li>
<li><a href="#">联系我们</a>
<ul>
<li><a href="#">联系联系联系联系联系</a></li>
<li><a href="#">联系联系联系</a></li>
<li><a href="#">联系</a></li>
<li><a href="#">联系联系</a></li>
<li><a href="#">联系联系</a></li>
<li><a href="#">联系联系联系</a></li>
<li><a href="#">联系联系联系</a></li>
</ul>
</li>
</ul>
</body>
</html>
posted @
2006-08-29 15:18 摩西 阅读(229) |
评论 (0) |
编辑 收藏