2014-05-29 6 views
1

Я использую IDEA 13. Я пытаюсь написать простое приложение JAVA, где есть форма с некоторыми вариантами и его действием является servlet.Here моей структуры файла
Tomcat не может найти мой сервлет

webapps 
|___ROOT 
    |___Beer 
      |___form.html 
      |___index.jsp 
      |___WEB-INF 
       |___web.xml 
       |___classes 
         |____com 
          |___example 
            |___model 
            |  |___BeerExpert.class 
            | 
            |___web 
             |___BeerSelect.class 



Пива этого имя моего приложения. форма отображается правильно, но когда я нажимаю кнопку отправки кот не может найти сервлет снова показывает пустую страницу (форма не отображается) «HTTP Status 404 - /Beer/SelectBeer.do»


Мой web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
    version="3.1"> 
<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> 


Мой сервлет

package com.example.web; 
import com.example.model.*; 

import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.util.Iterator; 
import java.util.List; 

public class BeerSelect extends HttpServlet { 
    public void doPost(HttpServletRequest request,HttpServletResponse response) 
    throws IOException , ServletException { 

     String c=request.getParameter("color"); 
     BeerExpert be=new BeerExpert(); 
     List result=be.getBrands(c); 
     request.setAttribute("styles",result); 
     RequestDispatcher view=request.getRequestDispatcher("result.jsp"); 
     view.forward(request,response); 


    } 
} 


Моя форма

<!DOCTYPE html> 
    <html> 
    <head lang="en"> 
     <meta charset="UTF-8"> 
     <title></title> 
    </head> 
    <body> 
    <h1 align="center">Beer Selection</h1> 
    <form method="POST" action="SelectBeer.do"> 

    Select Beer characteristics<br> 
    Color: 
    <select name="color" size="1"> 
    <option value="light">light</option> 
    <option value="dark">dark</option> 
    <option value="amber">amber</option> 
    <option value="brown">brown</option> 
    </select> 
    <br><br> 
    <center> 
    <input type="submit"> 
    </center> 
    </form> 
    </body> 
    </html> 


Мой файл JSP (результат отображается ею)

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<%@ page import="java.util.*" %> 
<html> 
<head> 
    <title></title> 
</head> 
<body> 
<h1 align="center">Beer Recommendation JSP</h1> 
<% 
    List styles=(List)request.getAttribute("styles"); 
    Iterator it=styles.iterator(); 
    while(it.hasNext()){ 
    out.print("<br>try: " +it.next()); 
    } 
%> 
</body> 
</html> 


Моя модель класса

 /** 
* Created by sasha.s on 5/28/2014. 
*/ 
import java.util.*; 
public class BeerExpert { 
    public List getBrands(String color){ 
     List brands=new ArrayList(); 
     if(color.equals("amber")){ 
      brands.add("Jack Amber"); 
      brands.add("Red Moose"); 
     } 
     else{ 
      brands.add("Jail Pale Ale"); 
      brands.add("Gout Stout"); 
     } 
     return (brands); 
    } 
} 


Почему кот не может найти мой сервлет?

+1

Где ваш 'result.jsp' файл? – Rohan

+0

Почему ваш сервлет и класс модели выглядят одинаково? – ravikumar

+0

@ R.S Мой файл jsp является результатом. Jsp я включил его в сообщение – sashas

ответ

3

Переместите приложение из каталога webapps/ROOT в каталог webapps.

webapps/ 
    ROOT/ 
     ... 
    Beer/ 
     index.jsp 
     ... 
    app2/ 
     ... 
+0

не работает такая же ошибка – sashas

+0

Возможно, она еще не работает, но она была некорректной до –

+0

да, вы правы в круге, о чем вы говорили, была моя проблема, спасибо – sashas

0

Override метод doGet также

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

     doPost(request,response) 
    } 
+0

это не работа, и я не думаю, поэтому мне нужно перезаписать doGet, так как моя форма использует метод POST – sashas

Смежные вопросы