【问题标题】:Calling servlet from a JSP page's form action从 JSP 页面的表单操作调用 servlet
【发布时间】:2015-02-06 19:23:12
【问题描述】:

我正在尝试将输入到 JSP 页面中的文本框的值传递给将值存储为变量的 servlet。但是当我单击提交按钮时,找不到 servlet。我收到一条错误消息,指出 the requested resource is not available

Servlet 类:

    //parse input from hello.jsp input box 
    //and assign to fibNum variable
    
    
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        
        
        
        
    }
    

}

我看过一些这样的问题:<form action="/sampleServlet" giving me exception 但改变路径并没有改变结果。

有谁知道如何解决这个调用 servlet 的问题?还是在链接 servlet 时我缺少一个步骤?

这也是我的项目树的结构:

【问题讨论】:

  • @Reimeus 刚刚更新了问题以包含 ``wem.xml`。这个问题可能是因为这个文件中必须有对 servlet 的引用吗?
  • 你能发布你的servlet吗?

标签: java jsp servlets


【解决方案1】:

您需要在您的web.xml 中创建servlet 映射。参见here。 所以在你的 web.xml 中定义;

<servlet>
  <servlet-name>hello</servlet-name>
  <servlet-class><package name>.HelloServlet</servlet-class>
</servlet>

然后为 servlet 创建映射(url 模式)。

<servlet-mapping>
  <servlet-name>hello</servlet-name>
  <url-pattern>/say_hello/*</url-pattern>
</servlet-mapping>

现在在你的 JSP 中引用像

这样的 servlet
 <form action="say_hello" method="get">            
   <b>Fibonacci Sequence Length </b>  <br>
   <input type="text" name="fibNum"size="20px" style="font-size:30pt;height:60px" >
   <input type="submit" value="submit" style="font-size:30pt;height:60px" > <br>  
   Value [1-100]<br>
 </form>  

【讨论】:

  • 我厌倦了上述内容,但似乎该行的其中一个标签有问题:&lt;servlet-class&gt;&lt;package ie.gmit&gt;.HelloServlet&lt;/servlet-class&gt;。我得到的错误是Attribute name "name" associated with an element type "package" must be followed by the ' = ' character.
  • 我还必须将表单操作更改为 post 以匹配 servlet。
  • 上述解决方案有效,只需要纠正所指出的映射,如何将整数数组传递给 jsp 页面,而不仅仅是一个整数值?我在想这样的事情:@ 987654329@ 但后来我得到了eeror:@ 987654330@ 我猜有一个不同的方法来传递一个数组?整数数组声明为int[] fibSequence
【解决方案2】:

您必须将与您的 url_pattern(web.xml) 相同的 servlet 名称传递给表单的操作标记。

【讨论】:

    【解决方案3】:

    您必须在 web.xml 中使用 url 模式进行映射 - HelloServlet。

    【讨论】:

      【解决方案4】:

      我认为在您的代码中,您只是错过了 web.xml 文件中的一些 servlet 声明

      <servlet>
         <servlet-name>...</servlet-name>
         <servlet-class>...</servlet-class>
      </servlet>
      
      <servlet-mapping>
         <servlet-name>...</servlet-name>
         <url-pattern>...</url-pattern>
      </servlet-mapping>
      

      【讨论】:

        猜你喜欢
        • 2014-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-01
        • 2011-05-01
        • 2011-02-15
        相关资源
        最近更新 更多