我有一个开发文件夹,其结构如下:
G:\MyProjects\beerV1--
|___classes\com\examples\web\BeerSelect.class
|_______src\com\examples\web\BeerSelect.java
|_____etc\web.xml
|_____web\form.html
我的部署文件夹层次结构是:
C:\Tomcat6\apache-tomcat-6.0.37\webapps\Beer-v1
---WEB-INF\classes\com\examples\web\BeerSelect.class
---form.html
---WEB-INF\web.xml
当我运行http://localhost:8080/
时,我可以看到默认的tomcat页面。
但是,我无法使用http://localhost:8080/Beer-v1/form.html
(获取404 error
)
我在这里错过了什么吗?
BeerSelect.java
是:
package com.examples.web;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class BeerSelect extends HttpServlet {
public void doHost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("Beer Selection Advice<br>");
String c=request.getParameter("color");
out.println("<br>Got beer color "+c);
}
}
我的web.xml
是:
<?xml version="1.0" encoding="ISO-8859-1"?>
<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>Ch3Beer</servlet-name>
<servlet-class>com.examples.web.BeerSelect</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Ch3Beer</servlet-name>
<servlet-class>/SelectBeer.do</servlet-class>
</servlet-mapping>
</web-app>
我的form.html
是:
<html>
<!--Some sample HTML-->
<head>
<title>The english pub</title>
</head>
<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>
</select>
<br><br>
<center><input type="SUBMIT"</center>
</form>
</body>
</html>
答案 0 :(得分:1)
我们在HttpServlet中有一个名为doHost()的方法吗?我认为您的doHost()
应更改为doPost()
,因为您在html中的操作表示要发布请求。
HTML:
<form method="POST"action="SelectBeer.do">
的Servlet
public class BeerSelect extends HttpServlet {
public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("Beer Selection Advice<br>");
String c=request.getParameter("color");
out.println("<br>Got beer color "+c);
}
}
答案 1 :(得分:0)
发现更多内容:
web.xml中的:
<servlet-class>/SelectBeer.do</servlet-class>
应更改为:
<url-pattern>/SelectBeer.do</url-pattern>
这解决了这个问题。
愚蠢的错误。
无论如何,谢谢你为我调查这个问题。
干杯!