2013-10-18 55 views
0

我有一个简单的tomcat服务器从intelliJ运行,我试图配置一个servlet,允许用户选择不同颜色的啤酒,但我总是会收到一个404资源,一旦找不到表格已提交。我的代码存在一个问题,还是它是一个intelij配置问题?Tomcat 7 404 intelliJ资源未找到

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
      version="3.0"> 
    <servlet> 
     <servlet-name> 
      beerSelect 
     </servlet-name> 
     <servlet-class> 
      com.example.web.controller.beerSelect 
     </servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>beerSelect</servlet-name> 
     <url-pattern>/beerSelect.do(</url-pattern> 
    </servlet-mapping> 
</web-app> 

form.html

<!DOCTYPE html> 
<html> 
<head> 
    <title>Beverages</title> 
    <link rel="stylesheet" type="text/css" href="/style/main.css"> 
</head> 
<body> 
<h1 class="title">Beer selection form</h1> 
<form method="post" action="beerSelect.do"> 
    Select your beer type: 
    <select name="color" size="1"> 
     <option value="light">Light</option> 
     <option value="amber">Amber</option> 
     <option value="mild">Mild</option> 
     <option value="dark">Dark</option> 
    </select> 
    <input type="SUBMIT" value="Submit"> 
</form> 
</body> 
</html> 

beerSelect.java

package com.example.web.controller; 

import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import java.io.*; 
/** 
* Created with IntelliJ IDEA. 
* User: Chris 
* Date: 18/10/13 
* Time: 10:42 
* To change this template use File | Settings | File Templates. 
*/ 

public class beerSelect extends HttpServlet{ 
    PrintWriter responseWriter; 
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{ 
     response.setContentType("text/html"); 
     responseWriter = response.getWriter(); 
     responseWriter.print("<p>Beer Selection Advice<p>"); 
     responseWriter.print("<br>Beer Color:" + request.getParameter("color")); 
    } 
} 

回答

3

第一眼看上去,如果发现一个错误在web.xml

<url-pattern>/beerSelect.do(</url-pattern> 
          ↑ 

删除(首轮支架

编辑

您将获得未来的错误未处理ServletException为您doPost方法只处理IOException

public void doPost(HttpServletRequest request, HttpServletResponse response) 
               throws IOException{ 

更改为

public void doPost(HttpServletRequest request, HttpServletResponse response) 
               throws IOException, ServletException{ 

同时添加@Override注解doPost方法检查此answer

@Override creates a compile-time check that a method is being overridden. 
This is very useful to make sure you do not have a silly signature issue 
when trying to override. 

见下

@Override 
public void doPost(HttpServletRequest request, HttpServletResponse response) 
               throws IOException, ServletException{ 
+0

哦,我亲爱的上帝我是个白痴。谢谢 –

+0

@ChrisSewell:不客气。检查我编辑过的帖子,相应地更改。 –