JavaServer Pages (tm) Web Development Kit [faq]
这一份文档列出了一些经常被提及的有关 JavaServer(TM) Web Development Kit (JSWDK). 的问题。独立的文档可以在 java.sun.com 的 component technologies (Servlets and JSP)上找到。
1。使用 JSWDK 需要设置的环境变量
你需要设置一个有效的关于 JDK 的 CLASSPATH 变量。(对于 Unix, JDK 1.1.x or 1.2. For Windows, JDK 1.2 )
如果你使用的是 JDK 1.2 , 你依然需要按照如下的建议中的一条去操作。
· 在 JAVA_HOME 变量中设置 JDK 的路径
·在 CLASS_PATH 变量中设置 tools.jar 的路径
其它必需的.classes和.jar文件在JSWDK 的startserver命令的运行脚本或者批处理文件中设置。
2。运行JSPs 和Servlets需要的.classes文件在哪里?
这些文件在如下位置:
·webserver.jar --Servlet 编译器的.class文件
·lib/jspengine.jar --JSP编译器的.class文件
·lib/servlet.jar --Servlet的公共APIs文件
·lib/xml.jar --xml文件的解析.class文件
3。我可以使用其他的webservers来整合这些.class吗?
JSP 的编译器实际只使用了 Java Servlet 2.1 API 的公共部分。理论上,它可以在其他支持 Servlet 2.1 API 的 Servlet 编译器上运行。但是 SUN 公司没有在除了 JSWDK 以外的 Servlet 编译器上作过测试。
4。 我应该把我的 JSP 文件 和 JAVABEAN 文件放在什么地方?
如果你只是尝试的运行JSP 而不是建立一个独立的 WEB 应用程序。你可以使用缺省的 “EXAMPLE” 的程序。如果你是建立一个新的 WEB 应用程序,请参考 FAQ 中有关设置新的 WEB 应用程序的问题的解答。
使用缺省的“EXAMPLE” 的程序:
<1> 把所有的JSP源程序放在 /examples/jsp 文件夹下,或者置于该文件夹的子目录下。
<2> 把所有的BEAN 的CLASS 文件置于 /examples/WEB-INF/jsp/beans 文件夹下。 JSWDK 的 startserver 命令的 运行脚本会自动在运行时的把这些 .class 添加到 CLASSPATH 变量中。
<3> 如果你的 JSWDK 服务器已经开始运行,请先停掉它,然后重起。
<4> 访问你的 JSP 文件,请通过以下的地址
http://locahost:8080/examples/jsp/[你的JSP 文件名.jsp]
5。什么是 WEB 应用程序?
一个 WEB应用程序是一个映射到一个 Uniform Resource Identifier (URI) 的资源的集合。这些资源可以包括 JSP 文件, Servlets, HTML 文件, 和图片 等等.
举例,所有的有关篮球的资源可以整合到一个 “baseball”目录。所有以 “/baseball”为地址进行的网络访问,都可以映射到“baseball”目录对应的 WEB 应用程序
6。我如何创建一个新的 WEB 应用程序?
<1> 为 WEB 应用程序建立一个文件夹。在下面的例子里,我们建立一个称之为“WEBAPP”文件夹。如果合适,我们也可以设置这个文件夹,使它的结构和Examples 文件夹一样,拥有相同的子目录,jsp, servlets, WEB-INF, 和 images。实现这个目标的方法之一就是把Examples 拷贝一份,然后做必要的修改。
<2> 通过修改 JSWDK 根目录的 webserver.xml 文件来新增一个 WEB 应用程序。
举例,创建一个篮球的应用程序,你可以把如下的内容添加到webserver.xml 文件合适的位置。
<WebApplication id="baseball0" mapping="/baseball" docBase="baseball="/>
请阅读 webserver.xml 文件,了解更多有关语法规则和设置的信息。
然后请参阅下面 有关设置 Servlets, JSP 文件 和 Beans 的问题.
7。我如何在 WEB 应用程序中建立一个Servlets
请按照如下的步骤,在你 WEBAPP 的文件夹里进行相应的操作。
<1> 编译 Servlet ,并决定要把它添加到哪个 WEB 应用程序中
<2> 把 Servlet 的 .class 文件添加到 WEBAPP/WEB-INF/servlets 文件夹下。
<3> 通过把 Servlet 的信息添加到WEBAPP/WEB_INF/servlets.properties 文件中,使得 Servlet 可以被用户访问。正确的添加信息的书写方法,请参考Examples/WEB-INF/mappings.properties 文件。
<4> 你也可以通过把 Servlet 的映射信息添加到WEBAPP/WEB-INF/mappings.properties 文件来实现同样的目的,具体实施的方法,请参考 Examples/WEB-INF/mappings.properties 文件。
<5> 最后重起服务器
你可以通过如下的地址访问你的 Servlet ,在WEB 应用程序 WEBAPP 的 URI 地址上加上 Servlet 的名字 SERVLET_NAME 。
http://localhost:8080/WEBAPP/servlet/SERVLET-NAME
如果你是设置你的 Servlet 通过映射的方式,请按如下的方法去访问它。这里 EXTENSION 表示文件名称的扩展,MAP-PATH 表示一个合理的映射地址。
http://localhost:8080/WEBAPP/foo.EXTENSION
或
http://localhost:8080/WEBAPP/MAP-PATH
8。我如何在 WEB 应用程序中添加自己的 JSP 和 JAVABEAN
<1> 把 JSP 的源文件 放到 WEB 应用程序文件夹下的目录中去。(就如同上面例子中的 /WEBAPP )
<2> 确认编译过的 JAVABEAN 的路径信息已经在 CLASSPATH 参数中被设置过了。你可以手动的设置 CLASSPATH 参数,或者 编辑 STARTSERVER 命令的运行脚本。
<3> 编辑 WEBAPP/WEB-INF/mappings.properties 文件 和 WEBAPP/WEB-INF/servlets.properties 文件,使得那些可能与 JSP 文件有关联的 JSP SERVLET 可以通过映射的地址来访问 JSP 文件。(可以参考/examples/WEB-INF/ 文件夹里的 .properties 文件,你的映射设置应该是类似的。)
<4> 最后重起服务器
你可以通过和下面示例相似的方式访问你自己的JSP 文件
http://localhost:8080/WEBAPP/yourfile.jsp
9。 URI 在服务器上是如何映射的?
WEB 服务器会把请求的 URI 地址和 WEB 应用程序里的所有前缀象比较,如果没有匹配的,就自动使用默认的设置来替代。
10。如何把数据从 Servlet 传递到 JSP?
可以参考 JSWDK 中 JSP 例子中 有关从 Servlet 传递数据到 JSP 的例子,或者从 JSP 传递数据到 Servlet 的例子。
11。不同的初始参数的意义
keepgenerated:
决定是否保留生成的 JAVA 文件。值可以为 TRUE 或 FALSE 。设置为 TRUE ,将会保留 生成的文件,设置为 FALSE 则会在编译以后删除这些文件。
scratchDir:
设置保留所有生成代码的文件夹。这可以被设置为 DocBase 下的任意文件夹。
largeFile:
值为 TRUE 或着 FALSE ,如果被设置为 TRUE ,则表示所有的静态 HTML 文件都是存放在一个独立的文件夹下的。
sendErrToClient:
值为 TRUE 或者 FALSE,如果被设置为 TRUE ,则所有编译/解析错误都会被发送给用户。
ieClassId:
这个参数用来激活 IE 的 PLUG-IN ,默认的设置是针对 IE4 和 IE5 。如果这个面向 IE 的参数在以后会进一步修改的话,可能会发挥更大的作用。
12。 404错误代表什么?
代表 服务器 不能找到你所请求的 资源。这可能是因为以下的两个原因引起的:
·你输入的 URL 地址错误。
·该 URL 没有被放入当前 的 服务器的主目录。如果你是运行你个人的 WEB 应用程序,请阅读和你个人程序相关的说明和文档。
13。 505 错误代表什么?
505 错误代表 在处理你的请求时 发生了一个“网络服务器错误”。为了找出更多的错误信息,请观察服务器运行窗口的状态显示信息。
这些错误有可能发生在编译 JSP 源文件到 Servlet。JSP 文件或着生成的 JAVA 文件中的语法错误就是引起错误的一个典型的原因。请根据服务器运行窗口的状态显示信息来调试你的程序。
请求的时间也是 另一个可能引起问题的原因。同样,请根据服务器运行窗口的状态显示信息来调试程序。