我使用JSP和Servlets创建了一个简单的程序。毕竟,我已经在web.xml中设置并映射了我的servlet,如下所示。但我总是得到空白页。
<servlet>
<servlet-name>example</servlet-name>
<servlet-class>exampleServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>example</servlet-name>
<url-pattern>/exampleServlet</url-pattern>
</servlet-mapping>
我的JSP文件看起来像这样。
<html>
<head></head>
<body>
<form action ="exampleServlet" method="POST" enctype="multipart/form-data">
<table width="500" style="margin-top:100px;">
<tr>
<td>Subject</td>
<td><input type="text" name="subj" id="subj"/></td>
</tr>
<tr>
<td>Upload File</td>
<td><input type="file" name="upload_file" id="upload_file"/></td>
</tr>
<tr>
<td> </td>
<td></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="submit" value="Upload" /></td>
</tr>
</table>
</form>
</body>
</html>
任何exampleServlet都是,
import java.io.File;
import java.util.List;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
public class exampleServlet extends HttpServlet {
public void init() {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String sub = request.getParameter("subj");
System.out.println(sub);
}
}
我的文件结构是,
JSP file --> tomcat/webapps/application/index.jsp
Servlet --> tomcat/webapps/application/WEB-INF/classes/exampleServlet.class
我哪里出错了?我犯了什么错误?你能建议我吗?
编辑:我将表单元素发布到该servlet。到那时它会传递像http://localhost:8080/application/exampleServlet
答案 0 :(得分:6)
您的应用程序中的一切都很好。您将获得空白页面,因为您的doPost
方法无法执行任何操作。它仅将值打印到控制台输出。
将其更改为例如:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter writer = response.getWriter();
writer.print("something");
}
然后看看浏览器中是否显示something
。
答案 1 :(得分:2)
如果在提交表单时发生“错误”,那是因为您的servlet不呈现任何输出,也不会返回任何响应。在你的doPost
中,你应该将回复写回浏览器,或者将请求移交给那些做出的事情。
public void doPost(HttpServletRequest req, HttpServletResponse res) {
PrintWriter out = res.getWriter();
out.println("<html><body>Hello world</body></html>");
}
至少会打印一些内容,但没什么用处。
要做的“正确”事情是重定向或包含执行渲染的视图。
答案 2 :(得分:0)
尝试使用与servlet-clas
url-pattern.
名称
类似于以下内容,反之亦然
<servlet>
<servlet-name>example</servlet-name>
<servlet-class>exampleServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>example</servlet-name>
<url-pattern>/egServlet</url-pattern>
</servlet-mapping>
更改后重新启动服务器
答案 3 :(得分:-2)
可能您的请求与URL模式不匹配。试试这样:
<url-pattern>/exampleServlet/*</url-pattern>