这是我的HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Beer Selection Page</title>
</head>
<body >
<form method = "post"
action = "SelectBeer.do">
Select beer Characteristics<br/>
Color:
<select name="color" size="1">
<option>light
<option>amber
<option>brown
<option>dark
</select>
<br/><br/>
<center><input type="SUBMIT"></center>
</form>
</body>
</html>
这是我的xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>Test2</display-name>
<servlet>
<servlet-name>Ch3 beer</servlet-name>
<servlet-class>BeerSelect</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Ch3 beer</servlet-name>
<url-pattern>/SelectBeer.do</url-pattern>
</servlet-mapping>
</web-app>
在这里,是我的servlet:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
/**
* Servlet implementation class BeerSelect
*/
public class BeerSelect extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public BeerSelect() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text.html");
PrintWriter out = response.getWriter();
out.println("Beer Selection Advice");
String c= request.getParameter("color");
out.println("Got beer color " + c);
}
}
当我在服务器上运行它时,响应是
HTTP状态404 - / Test2 /
输入状态报告
message / Test2 /
说明请求的资源不可用。
Test2
.....Java Resources
...................src
......................default package
.....................................BeerSelect.java
.....WebContent
...............META-INF
...............WEB-INF
......................lib
......................web.xml
...............Beer.html
此外,是否有人知道为什么返回的字符串&#34; c&#34;在servlet中是null ??
答案 0 :(得分:0)
消息:请求的资源不可用。告诉您,您尝试通过URL /Test2/
获取的资源(文件)不可用,即服务器不能给你。很可能它没有被映射。
在您的Web应用程序的上下文中 Test2
您的servlet映射到:
/SelectBeer.do
这意味着,您的网络应用程序上下文之外的 您的访问网址应该是这样的:
http://server:port/Test2/SelectBeer.do
假设您的HTML文件位于应用程序上下文的 root 中,您应该能够像这样引用servlet:
<form method = "post" action = "SelectBeer.do"> ...
因为它相对映射到根,或使用绝对路径这样:
<form method = "post" action = "/Test2/SelectBeer.do"> ...
由于您似乎没有index.html
(或web.xml
中配置的任何欢迎文件),如果您尝试访问 webapp的根 {{ 1}}如果没有明确包含文件名,您将收到 404错误。要正确打开文件,您需要使用:
Test2/
答案 1 :(得分:0)
只需将网址格式更改为<url-pattern>/Test2/*</url-pattern>
您创建另一个模式并请求不同的请求..您也可以使用通配符*。不
创建调用后,将在模式上搜索url模式。对于上面的示例,您需要将url模式放在请求中
localhost:8080/Test2/
这样的东西将与网址格式相匹配