我尝试研究Web服务器编程的基础
我在Ubuntu 12.04上安装了tomcat 7(当我输入myIp:8080
时,一切正常我真的看到了正确的tomcat页面)。
创建了简单的结构:
在apache-tomcat-7.0.42/webapps
=>下这里创建了Beer-v1
progect =>进入此文件夹WEB-INF
文件夹和form.html
。
form.html
代码:
<html>
<body>
<h1 align=”center”>Beer Selection Page</h1>
<form method=”POST”
action=”SelectBeer.do”>
Select beer characteristics<p>
Color:
<select name=”color” size=”1”>
<option value=”light”> light </option>
<option value=”amber”> amber </option>
<option value=”brown”> brown </option>
<option value=”dark”> dark </option>
</select>
<br><br>
<center>
<input type=”SUBMIT”>
</center>
</form>
</body>
</html>
进入 WEB-INF web.xml
。
web.xml
代码:
<web-app 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/web-app_2_4.xsd”
version=”2.4”>
<servlet>
<servlet-name>Ch3 Beer</servlet-name>
<servlet-class>com.example.web.BeerSelect</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Ch3 Beer</servlet-name>
<url-pattern>/SelectBeer.do</url-pattern>
</servlet-mapping>
</web-app>
当我将bin/startup.sh
运行到apache-tomcat-7.0.42
文件夹时,我会看到下一个输出:
root@nazar-desctop:/usr/local/tomcat/apache-tomcat-7.0.42# bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat/apache-tomcat-7.0.42
Using CATALINA_HOME: /usr/local/tomcat/apache-tomcat-7.0.42
Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-7.0.42/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/apache-tomcat-7.0.42/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-7.0.42/bin/tomcat-juli.jar
在浏览器http://localhost:8080/Beer-v1/form.html
输入后 - 我看到:
HTTP状态404 - /Beer-v1/form.html。
我无法弄清楚出了什么问题。
的更新 的
catalina.out
的内容 - 您可以看到here
localhost.2013-09-12.log
:
Sep 12, 2013 9:17:26 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Sep 12, 2013 9:17:26 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Sep 12, 2013 9:17:27 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@d47feb3')
Sep 12, 2013 9:17:34 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Sep 12, 2013 9:17:34 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Sep 12, 2013 9:17:35 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@27c76b8d')
Sep 12, 2013 9:17:35 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextDestroyed()
Sep 12, 2013 9:17:35 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextDestroyed()
Sep 12, 2013 9:21:12 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Sep 12, 2013 9:21:12 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Sep 12, 2013 9:21:14 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@41fb43a2')
Sep 12, 2013 9:21:17 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextDestroyed()
Sep 12, 2013 9:21:17 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextDestroyed()
Sep 12, 2013 9:30:38 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Sep 12, 2013 9:30:38 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Sep 12, 2013 9:30:38 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@30ce9337')
Sep 12, 2013 9:30:39 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextDestroyed()
Sep 12, 2013 9:30:39 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextDestroyed()
Sep 12, 2013 9:44:30 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Sep 12, 2013 9:44:30 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Sep 12, 2013 9:44:30 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@357c4ab7')
Sep 12, 2013 9:44:31 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextDestroyed()
Sep 12, 2013 9:44:31 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextDestroyed()
如何解决这个问题?
答案 0 :(得分:4)
catalina.out
的这一部分引起了我的注意:
INFO: Deploying web application directory /usr/local/tomcat/apache-tomcat-7.0.42/webapps/Beer-v1
Sep 12, 2013 9:17:27 PM org.apache.tomcat.util.digester.Digester fatalError
SEVERE: Parse Fatal Error at line 1 column 16: Open quote is expected for attribute "{1}" associated with an element type "xmlns".
org.xml.sax.SAXParseException; systemId: jndi:/localhost/Beer-v1/WEB-INF/web.xml; lineNumber: 1; columnNumber: 16; Open quote is expected for attribute "{1}" associated with an element type "xmlns".
web.xml
的第1行第16列对应xmlns=
之后的双引号:
<web-app xmlns=”http://java.sun.com/xml/ns/j2ee”
但后来我注意到web.xml
中的双引号看起来不像标准的双引号。查看”
和"
之间的区别?所以我的猜测是Tomcat无法解析web.xml
,因为你没有使用标准的双引号,而是一个看起来像它的不同字符,但Tomcat没有将其解释为分隔符。尝试用标准双引号替换它们。
答案 1 :(得分:0)
也许您可以通过配置context来实现。
不鼓励这样做,但您可以尝试在conf/server.xml
中添加以下内容,只是为了试一试:
<Context path="Beer-v1" docBase="webapps/Beer-v1" crossContext="true"
debug="0" reloadable="false">
</Context>
修改强>
正如David Levesque在他的回答中所写,你的web.xml中存在一些不正确的字符(”
问题似乎已在那里修复)和你的html文件。关于这一点,我不确定带有Ch3 Beer
等空格的servlet名称是否合法(但是再一次它不应该在HTML页面中出现问题)。
另请注意,您的servlet-name
值不一致。它们应该是相同的,以便链接类和URL映射。
我已经使用您的新web.xml文件进行了测试,并且没有修改conf / server.xml文件,并且显示了html文件(由于您的特殊”
而导致其缺陷)。我认为正如大卫所写,还有一些无效的角色。
答案 2 :(得分:-1)
原因
Tomcat服务器(或容器)2.2或更高版本遵循任何Web应用程序存档的特定标准格式。
HTML和JSP页面必须位于文档根目录中,或者更具体地说是ROOT文件夹。
这里的原因很简单。我们正在让客户端浏览器轻松找到该文件。 WEB_INF是包含所有类的文件夹。除非您在浏览器中指定了正确的路径,否则它还可以包含任何类型的文件。
解 现在来寻找适合我的解决方案。
/beerV1/WEB-INF/form.html
,然后就可以了。