【问题标题】:Can't make a simple HelloWorld jetty webapp无法制作简单的 HelloWorld jetty webapp
【发布时间】:2013-12-11 05:19:27
【问题描述】:

我正在尝试在我的码头 v9.1 中部署一个简单的 Helloworld webapp。我在尝试访问 servlet 时遇到问题,我收到一条错误消息:

HTTP 错误 404

访问 /HelloServlet/servlet 时出现问题。原因:

Not Found

我知道我在这里做错了什么,但我不知道是什么。

这是我在码头的 Webbapp 的文件结构:

网络应用

+例子

+你好

你好.xml 索引.html +WEB-INF

web.xml +类

HelloServlet.class

index.html +WEB-INF(代表一个文件夹,WEB-INF和一个文件index.html,在同一个文件夹你好)

这是我的 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_2_5.xsd" 
version="2.5">
<display-name>Example</display-name>

<!-- Declaraa existenta unui servlet. -->
<servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>HelloServlet</servlet-class>

</servlet>

<!-- Map URLs to that servlet. -->
<servlet-mapping>
    <servlet-name>servlet</servlet-name>
    <url-pattern>/servlet</url-pattern>
</servlet-mapping>


HelloServlet.java

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class HelloServlet extends HttpServlet {

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

   String input=request.getParameter("input");
   PrintWriter out=response.getWriter();

   out.println("<html>");
   out.println("<body>");
   out.println("The parameter input was \" "+input+"\" .");
   out.println("</body");
   out.println("</html");

}


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

    String field=request.getParameter("field");
    PrintWriter out=response.getWriter();

    out.println("<html>");
    out.println("<body>");
    out.println("You entered \" "+field+"\" into the text box.");
    out.println("</body>");
    out.println("</html>");

}

}

index.html

<html>
<head>
    <title>Example Web Application</title>
</head>

<body>
    <p>This is a static document with a form in it.</p>
    <form method="POST" action="servlet">
        <input name="field" type="text" />
        <input type="submit" value="Submit" />
    </form>
</body>
</html>

hello.xml

<<?xml version="1.0"  encoding="ISO-8859-1"?>
<<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">



<<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/hello</Set>
<Set name="extractWAR">false</Set>
<Set name="copyWebDir">false</Set>
<Set name="defaultsDescriptor"><Property name="jetty.home" default="."/>/etc/webdefault.xml</Set>
<Call name="setAttribute">
<Arg>org.eclipse.jetty.websocket.jsr356</Arg>
<Arg type="Boolean">true</Arg>
</Call>

<Get name="securityHandler">
<Set name="loginService">
  <New class="org.eclipse.jetty.security.HashLoginService">
    <Set name="name">Test Realm</Set>
    <Set name="config"><SystemProperty name="jetty.base" default="."/>/etc/realm.properties</Set>
  </New>
</Set>
<Set name="authenticator">
  <New class="org.eclipse.jetty.security.authentication.FormAuthenticator">
    <Set name="alwaysSaveUri">true</Set>
  </New>
</Set>
<Set name="checkWelcomeFiles">true</Set>
</Get>

</Configure>

【问题讨论】:

    标签: java servlets


    【解决方案1】:

    在您的web.xml 中,您将url-pattern 指定为/servlet/*,这意味着您需要使用的前缀是servlet/,而不是HelloServlet/

    http://localhost:8080/servlet/servlet
    

    (虽然手动编写 servlet 可能具有指导意义,但对于实际项目,最好使用像 Spring 这样已经为您处理好所有管道的系统。)

    【讨论】:

    • 是的,你对 Spring 的看法可能是正确的,但我暂时必须使用这种风格,这样我才能了解 servlet 和 jetty,我是新手,所以对愚蠢的问题感到抱歉。我也尝试了您的建议,但仍然遇到相同的错误,我什至尝试将 url-pattern 设为 /servlet 并将前缀用作 servlet
    • @AdrianTotolici 就像我说的,很高兴知道事情在低级别是如何工作的。我不确定你在说什么你做了不同的事情。请发布您尝试加载的整个 URL。
    • localhost:8080/servlet ,我还在上面的问题中编辑了 url 中的新修改
    • @AdrianTotolici 您如何启动您的应用程序?你有war 文件吗?它叫什么?
    • 我在我的问题中添加了一个新的 xml 文件,不要使用我想使用已解压缩的文件 sitem 的 war 文件。我通过在“java -jar start.jar”之类的命令行中启动码头服务器来为应用程序提供午餐
    【解决方案2】:

    毕竟我已经设法找到了解决方案,并且我的问题得到了解决。我刚从 Intellij Idea 启动服务器,一切正常。

    感谢大家的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-08
      • 2012-09-09
      • 1970-01-01
      • 1970-01-01
      • 2012-07-17
      • 1970-01-01
      • 2014-09-28
      相关资源
      最近更新 更多