【问题标题】:url pattern syntax (java servlet)url 模式语法(java servlet)
【发布时间】:2012-09-27 22:21:07
【问题描述】:

我想做这样的事情:

localhost:7001/servlet/character?name=zombies

我试过这样做:

<servlet-mapping>
    <servlet-name>zombies</servlet-name>
    <url-pattern>/character?name=zombies</url-pattern>
</servlet-mapping>

但它不起作用并给我找不到错误。关于如何做到这一点的任何建议或解决方案?

【问题讨论】:

  • 除了web.xml中的更正之外,您的应用程序是否称为servlet?我之所以问,是因为这是旧版本 Tomcat 中的一个功能,我认为它不再存在了。
  • 哦不,这是一个例子。

标签: java servlets url-pattern


【解决方案1】:

您的 url 模式的 ?name=zombies 部分不应在 web.xml 中使用。它是一个查询参数,实际上并不是 servlet 安装点的一部分。您需要通过request.getParameter("name") 访问您的僵尸servlet 中的变量name

【讨论】:

  • 谢谢。我对 servlet 编程有点陌生。没想到是个参数。
【解决方案2】:

您正尝试在 URL 模式 中附加 查询字符串 后面跟着 ? 的内容。 URL 模式旨在映射您的 servlet 类。如果您可以在地址栏中传递查询字符串。

【讨论】:

    【解决方案3】:

    如果您想将参数传递给您的 servlet,请这样做

    <servlet>
        <servlet-name>zombies</servlet-name>
        <servlet-class>com.ZombiesDemo</servlet-class>
    
        <init-param>
            <param-name>name</param-name>
            <param-value>zombies</param-value>
        </init-param>
    </servlet>
    
    
    <servlet-mapping>
        <servlet-name>zombies</servlet-name>
        <url-pattern>/character</url-pattern>
    </servlet-mapping>
    

    这你可以在 ZombiesDemo.java servlet 中检索为

    public void init(ServletConfig servletConfig) throws ServletException{
      String name = servletConfig.getInitParameter("name");
      }
    

    【讨论】:

    • 是否可以做多个参数值?所以假设我输入 url/character?name=zombie,它会出现带有文本的页面,然后在我输入 url/character?name=pirates 后,它会出现具有不同文本的同一页面。或者我必须为海盗创建另一个 servlet?
    • 不,它用于初始化 servlet 的值。如果你想要这个,那么使用 request.setAttribute("name","pirates"); 在请求范围内传递这些值和 request.setAttribute("name");
    猜你喜欢
    • 2018-02-13
    • 2011-05-12
    • 2017-03-27
    • 2011-02-24
    • 2013-06-25
    • 2010-12-25
    • 2015-02-19
    • 2016-06-23
    • 2016-02-28
    相关资源
    最近更新 更多