Java Can';t制作一个简单的HelloWorld jetty Web应用程序

Java Can';t制作一个简单的HelloWorld jetty Web应用程序,java,servlets,Java,Servlets,我正在尝试在jetty v9.1中部署一个简单的Helloworld webapp。我在尝试访问servlet时遇到问题,我收到一条错误消息: HTTP错误404 访问/HelloServlet/servlet时出现问题。原因: Not Found 我知道我在这里做错了什么,但我不知道是什么 以下是我在jetty的WebApp中的文件结构: 网络应用 +范例 +你好 hello.xml index.html +WEB-INF web.xml +班级 HelloServlet.class ind

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

HTTP错误404

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

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

以下是我在jetty的WebApp中的文件结构:

网络应用

+范例

+你好

hello.xml index.html +WEB-INF

web.xml +班级

HelloServlet.class

index.html+WEB-INF(在同一文件夹hello中报告文件夹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>
<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>
<<?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>

例子
HelloServlet
HelloServlet
servlet
/servlet


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>");

}

}
import javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入java.io.IOException;
导入java.io.PrintWriter;
公共类HelloServlet扩展了HttpServlet{
受保护的void doGet(HttpServletRequest请求、HttpServletResponse响应)引发IOException{
字符串输入=request.getParameter(“输入”);
PrintWriter out=response.getWriter();
out.println(“”);
out.println(“”);
println(“参数输入为\”“+input+”\”);

out.println(“在
web.xml
中,您将
url模式指定为
/servlet/*
,这意味着您需要使用的前缀是
servlet/
,而不是
HelloServlet/

http://localhost:8080/servlet/servlet

(虽然手工编写servlet具有指导意义,但对于实际项目来说,最好使用Spring这样的系统,它已经为您提供了所有的管道。)

我终于找到了解决方案,我的问题得到了解决。我刚从Intellij Idea启动了服务器,一切正常


谢谢大家的帮助。

是的,关于Spring你可能是对的,但我现在必须使用这种风格,这样我才能了解servlet和jetty,我在这方面是新手,所以对这些愚蠢的问题感到抱歉。我也尝试了你的建议,但我仍然得到同样的错误,我甚至尝试将url模式设置为/servlet,并使用前缀作为servlet@AdrianTotolici就像我说的,很高兴知道这些东西在低水平上是如何工作的。我不确定你说的是什么,你做的不同。请发布你试图加载的整个URL。我还在我的问题中编辑了URL中的新修改above@AdrianTotolici您是如何启动应用程序的?您是否有
war
文件?它是什么调用?我在我的问题中添加了一个新的xml文件,不,不要使用war文件,我想使用的文件sitem已经被反编译。我通过在comand行中启动jetty服务器来使用应用程序,比如“java-jar start.jar”