嘿伙计们我正在使用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" %>
答案 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教程的链接:
答案 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">