3

我使用 JSP 和 Servlet 创建了一个简单的程序。毕竟,我已经在 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>&nbsp;</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。到那时它会像这样传递 URLhttp://localhost:8080/application/exampleServlet

4

4 回答 4

6

您的应用程序中的一切都很好。你得到空白页,因为你的doPost方法没有做任何事情。它仅将值打印到控制台输出。

将其更改为例如:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter writer = response.getWriter();
    writer.print("something");
}

然后看看是否something出现在浏览器中。

于 2013-05-02T12:18:48.270 回答
2

如果在您提交表单时发生“错误”,那是因为您的 servlet 没有呈现任何输出,也没有返回任何响应。在您的doPost情况下,您应该将响应写回浏览器,或者将请求交给执行的操作。

public void doPost(HttpServletRequest req, HttpServletResponse res) {
    PrintWriter out = res.getWriter();
    out.println("<html><body>Hello world</body></html>");
}

至少会打印一些东西,虽然没什么用处。

“正确”的做法是重定向或包含一个进行渲染的视图。

于 2013-05-02T12:18:19.207 回答
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>

更改后重新启动服务器

于 2013-05-02T12:27:50.870 回答
-2

可能您的请求与 URL 模式不匹配。试试这样:

<url-pattern>/exampleServlet/*</url-pattern>
于 2013-05-02T12:12:20.267 回答