Servlet映射不起作用

时间:2013-05-02 12:08:58

标签: java jsp servlets web.xml

我使用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>&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。到那时它会传递像http://localhost:8080/application/exampleServlet

这样的网址

4 个答案:

答案 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>
相关问题