Http doPost()不起作用

时间:2014-12-10 14:09:16

标签: java servlets

我正在尝试使用http doPost()的简单登录servlet。

Login.html是:

<form action="P3" method="post">
Username :- 
<input type="text" name="usnm"><p>
Password :- 
<input type="password" name="pswd"><p>
<input type="submit" value="Login">
</form>

我的servlet代码是:Server.java:

public void doPost(HttpServletRequest req,HttpServletResponse res)throws IOException,ServletException
{
    try
    {
        res.setContentType("text/html");

        String un=req.getParameter("usnm");
        String pw=req.getParameter("pswd");

        if(un.equals("abc") && pw.equals("123"))
            res.sendRedirect("welcome.html");
        else
            res.sendRedirect("nologin.html");
    }
    catch(Exception e)
    {
        System.out.println(e.getMessage());
    }
}

如果登录成功,则会显示welcome.html或nologin.html。

我将此添加到我的web.xml:

<servlet>
    <servlet-name>z</servlet-name>
    <servlet-class>Server</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>z</servlet-name>
    <url-pattern>/P3</url-pattern>
</servlet-mapping>

当我在“登录”点击后尝试执行Login.html时,出现错误: 在/C:/Users/OWNER/Desktop/apache-tomcat-7.0.37/webapps/vaishnavee/P3找不到该文件。

请建议一些解决方案,以使这项工作。

1 个答案:

答案 0 :(得分:1)

您可能直接从硬盘而不是tomcat服务器显示表单。您可以在浏览器的地址字段中看到此内容:file://C:/Users/OWNER/Desktop/apache-tomcat-7.0.37/webapps/vaishnavee/Login.html而不是http://..../Login.html

表单的操作与表单本身来自的位置有关。因此,如果表单本身直接来自驱动器C:而不是tomcat,则浏览器将根据您在地址字段中看到的相同网址计算操作的完整网址,但替换为Login.html P3。当然,您没有该名称的文件,因此无法将表单传递给它。

你应该:

  1. 从网络服务器显示表单(可能是http://localhost/Login.html,但您必须使用为您的服务器配置的任何网址)
  2. 将表单的操作更改为完整的服务器地址,包括P3
  3. 第一种方式是首选方式,因为在部署应用程序或将其移出时,直接从C:驱动器提供表单不起作用。