Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 执行servlet后,如何控制浏览器地址栏中生成的地址?_Java_Servlets - Fatal编程技术网

Java 执行servlet后,如何控制浏览器地址栏中生成的地址?

Java 执行servlet后,如何控制浏览器地址栏中生成的地址?,java,servlets,Java,Servlets,为了练习,我编写了一个简单的网页,向用户显示一个下拉菜单。用户将选择一个数字并点击Submit按钮 之后,将执行servlet,并返回偶数列表 查看web浏览器地址栏中的地址,它是: http://localhost:8080/FindEvenOdd/FindEvenOdd 我希望它是http://localhost:8080/FindEvenOdd/Result 我该怎么做? 我的DD看起来像这样: <web-app xmlns="http://java.sun.com/xml/ns/

为了练习,我编写了一个简单的网页,向用户显示一个下拉菜单。用户将选择一个数字并点击
Submit
按钮

之后,将执行servlet,并返回偶数列表

查看web浏览器地址栏中的地址,它是:

http://localhost:8080/FindEvenOdd/FindEvenOdd

我希望它是
http://localhost:8080/FindEvenOdd/Result

我该怎么做?
我的DD看起来像这样:

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    web-app_2_4.xsd"
    version="2.4">

    <servlet>
        <servlet-name>Evens</servlet-name>
        <servlet-class>FindIt</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Evens</servlet-name>
        <url-pattern>/FindEvenOdd</url-pattern>
    </servlet-mapping>
</web-app>  

埃文斯
芬迪特
埃文斯
/芬德维诺德
我的HTML:

<html>
    <head>
        <title> List of Even/Odd Numbers </title>
    </head>

    <body>
        <form method="POST" action="FindEvenOdd">
        <center>
            <select name="number" size="1">
                <option> <50
                <option> <100
                <option> <150
            </select>
        </center>
            <center>
                <input type="SUBMIT">
            </center>
        </form>
    </body>
</html>  

偶数/奇数列表

你所尝试的几乎是正确的。
url模式
必须设置为
/Result

不过有一些注意事项:

  • 始终将您的类放在一个包中。不在默认包中
  • 生成有效的HTML5
    center
    是一个不应该长时间使用的标记,并且您的选择框是无效的HTML
  • 学习Servlet3.0而不是Servlet2.4
      您尝试的几乎是正确的。
      url模式
      必须设置为
      /Result

      不过有一些注意事项:

      • 始终将您的类放在一个包中。不在默认包中
      • 生成有效的HTML5
        center
        是一个不应该长时间使用的标记,并且您的选择框是无效的HTML
      • 学习Servlet3.0而不是Servlet2.4
      要更改URL,您需要在servlet中进行重定向

      String contextPath = request.getContextPath();
      response.sendRedirect(response.encodeRedirectURL(contextPath + "/Result") );
      

      为了更改URL,您需要在servlet中进行重定向

      String contextPath = request.getContextPath();
      response.sendRedirect(response.encodeRedirectURL(contextPath + "/Result") );
      

      将url模式更改为
      /findevenod/Result
      并尝试将url模式更改为
      /findevenod/Result
      并尝试是的,先生,我会的。我对HTML几乎一无所知。另外,我将关注Servlet 3.0:)只是一个问题:HTML中
      action
      的值必须与DD中
      url模式
      的值完全匹配。正确吗?否。正如其名称所示,url模式包含映射到Servlet的url模式。它可以是.action或/foo/例如。该模式始终相对于webapp的上下文路径(在您的示例中为/findevenoded)。HTML表单中的action属性是绝对或相对URL。如果是相对的(即,如果它不是以
      /
      开头),则它是相对于您在浏览器地址栏中看到的路径的。如果它是绝对的(即,它以
      /
      开头),那么它将始终从web服务器的根目录开始。因此,在您的情况下,使用相对URL
      Result
      与使用绝对URL
      /FindEvenOdd/Result
      相同。请始终记住,浏览器对Java Web应用程序一无所知。应用程序的上下文路径与Java webapp相关,浏览器不知道也不关心该页面是由Java webapp、静态文件或小精灵池生成的。至于你的第二条评论,我发现:)有一个用户知道的名称,然后是Servlet的部署名称和实际文件名。Servlet2.4和Servlet3.0有多大区别?我在servlets上得到的唯一一本好书是Head First,它在2.4Servlet3.0上允许使用Java注释来声明和映射servlets和其他组件,而不是web.xml文件。它使事情变得更容易。它还支持文件上传和异步请求处理,IIRC。是的,先生,我会的。我对HTML几乎一无所知。另外,我将关注Servlet 3.0:)只是一个问题:HTML中
      action
      的值必须与DD中
      url模式
      的值完全匹配。正确吗?否。正如其名称所示,url模式包含映射到Servlet的url模式。它可以是.action或/foo/例如。该模式始终相对于webapp的上下文路径(在您的示例中为/findevenoded)。HTML表单中的action属性是绝对或相对URL。如果是相对的(即,如果它不是以
      /
      开头),则它是相对于您在浏览器地址栏中看到的路径的。如果它是绝对的(即,它以
      /
      开头),那么它将始终从web服务器的根目录开始。因此,在您的情况下,使用相对URL
      Result
      与使用绝对URL
      /FindEvenOdd/Result
      相同。请始终记住,浏览器对Java Web应用程序一无所知。应用程序的上下文路径与Java webapp相关,浏览器不知道也不关心该页面是由Java webapp、静态文件或小精灵池生成的。至于你的第二条评论,我发现:)有一个用户知道的名称,然后是Servlet的部署名称和实际文件名。Servlet2.4和Servlet3.0有多大区别?我在servlets上得到的唯一一本好书是Head First,它在2.4Servlet3.0上允许使用Java注释来声明和映射servlets和其他组件,而不是web.xml文件。它使事情变得更容易。它还支持文件上传和异步请求处理IIRC。