【问题标题】:Tomcat unable to locate my servletTomcat 无法找到我的 servlet
【发布时间】:2014-07-18 13:34:41
【问题描述】:

我正在使用 IDEA 13。我正在尝试编写一个简单的 JAVA 应用程序,其中有一个表单 有一些选项,它的动作是一个servlet。这是我的文件结构

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



Beer 是我的应用程序的名称。表单显示正确,但是当我单击提交按钮时,tomcat 无法找到 servlet 再次显示空白页(不显示表单)“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);
    }
}


为什么tomcat找不到我的servlet?

【问题讨论】:

  • 您的result.jsp 文件在哪里?
  • 为什么你的 servlet 和模型类看起来一样?
  • @R.S 我的 jsp 文件是我在帖子中包含的 result.jsp
  • 在您的 servlet 类中也覆盖 doGet 方法。
  • @ravikumar 抱歉,这是一个错误,现在更正了

标签: java jsp tomcat servlets tomcat7


【解决方案1】:

将您的应用程序从 webapps/ROOT 目录移动到 webapps 目录中。

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

【讨论】:

  • 它可能还没有工作,但之前肯定是不正确的
  • 是的,你在症结上是正确的,你提到的是我的问题,谢谢
【解决方案2】:

也覆盖 doGet 方法,

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

        doPost(request,response)
  }

【讨论】:

  • 它不起作用,我不认为所以我必须覆盖 doGet,因为我的表单正在使用 POST 方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-19
  • 2014-06-05
  • 2014-06-27
相关资源
最近更新 更多