将表单提交到servlet中的.java页面时出现问题

时间:2012-12-14 09:27:29

标签: java apache java-ee tomcat

嘿伙计们我正在使用Apache Tomcat v7.0 servlet,用户输入一些值,然后发送到页面进行预览然后点击提交。问题是,一旦他们点击提交,我得到一个404说文件不存在。

设置项目 -

WebContent文件夹有welcome.js文件发送到roster.js文件进行预览 - 在roster.js文件中你点击提交并发送到这个链接 - src/bandServ/BandListServ.java这个链接包含在Java中Resources文件夹以及WebContent文件夹。 Java Resources文件夹包含我的包,这就是我希望从roster.js文件中的表单发送数据的地方。

roster.js文件代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
   <%@ include file="/includes/header.html" 

   %>

</head>
<body>
    <h1>Battle Of Bands</h1>

    <p>Here is our band roster:</p>


    <table cellspacing="5" cellpadding="5" border="1">
        <tr>
            <td align="right">Band1:</td>
            <td><%= request.getParameter("Band1name")  %></td>
        </tr>
        <tr>
            <td align="right">Band2:</td>
            <td><%= request.getParameter("Band2name") %></td>
        </tr>
        <tr>
            <td align="right">Band3:</td>
            <td><%= request.getParameter("Band3name") %></td>
        </tr>
        <tr>
            <td align="right">Band4:</td>
            <td><%= request.getParameter("Band4name") %></td>
        </tr>
        <tr>


    </table>

    <p>Ready to Rock</p>

    <form action="src/bandServ/BandListServ.java" method="post">
        <input type="submit" value="submit">
    </form>

</body>
</html>
<%@ include file="/includes/footer.jsp" %>

3 个答案:

答案 0 :(得分:2)

无法直接从表单调用Java类。 应该将类创建为扩展HttpServlet类的Servlet。然后必须修改deployment descriptor(/ Project / WEB -INF / web.xml)以包含servlet类详细信息和映射到它的url。

<servlet>
  <servlet-name>BandListServ</servlet-name>
  <servlet-class>bandServ.BandListServ</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>BandListServ</servlet-name>
  <url-pattern>/list-bands</url-pattern>
</servlet-mapping>

修改JSP中的from以调用web.xml中定义的URL模式。

<form action="/list-bands" method="post">
    <input type="submit" value="submit">
</form>

答案 1 :(得分:1)

您应该提供一个servlet映射,将URL请求转换为方法调用。 http://docs.oracle.com/cd/E11035_01/wls100/webapp/configureservlet.html

更简单的方法是使用Java Server Pages,它可以自动翻译代码并自动执行servlet映射。

[编辑]

添加指向servlet教程的链接:

http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html

答案 2 :(得分:1)

这一行

<form action="src/bandServ/BandListServ.java" method="post">
我很相信。

action =“”应该包含一个uri,它被映射到web.xml中的逻辑servlet名称,该名称实际映射到servlet的fullt限定类名。相反,您无法在操作中指定您的servlet名称。

你的web.xml应该包含这样的东西

<servlet>
  <servlet-name>BandServlet</servlet-name>
  <servlet-class>com.band.BandServlet</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>BandServlet</servlet-name>
  <url-pattern>/getBands</url-pattern>
</servlet-mapping>

并在表单标签中执行此操作

<form action="getBands" method="post">