【问题标题】:Changing form action method name but server reffering to old method name更改表单操作方法名称但服务器引用旧方法名称
【发布时间】:2015-05-19 14:26:08
【问题描述】:

我正在使用 Eclipse Indigo。在我的 HTML 表单操作方法中,我将 <form action="T1" method="post"> 放在其中 T1 是 Java servlet。如果我将表单操作方法编辑并重命名为 T2 并保存更改,则在本地主机上运行 tomcat 服务器时,单击按钮后仍会转到 T1!

我尝试刷新我的项目,删除并重新创建服务器,但仍然是同样的问题。我该怎么办?

感谢任何帮助。

我的 web.xml 文件:

       <?xml version="1.0" encoding="UTF-8"?>
       <welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>

这是我的 html 文件:

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
     <body>
    <form action="Pk" method="post">
    Name <input type="text" name="tex1"> <br> 
    Address <input type="text" name="tex2"> <br>
      College Name <input type="text" name="tex3"> <br>
    Aggregate percentage <input type="text" name="tex4"> <br>
      Title of Resume <input type="text" name="tex5"> <br>
        Username <input type="text" name="tex6"> <br>
       Password <input type="password" name="tex7"> <br>
     <input type="submit" name="sub" value="Login"> <br>
      </form>
      </body>
       </html>

这是 servlet 文件:

      public class Pk extends HttpServlet {
      private static final long serialVersionUID = 1L;
       String name="",addr="",coll="", aggper="", tor="", user="", pass="";
       public Pk() {
         super();


 // TODO Auto-generated constructor stub
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


    response.setContentType("text/html");
    PrintWriter out=response.getWriter();


    name=(String)request.getParameter("tex1");
    addr=(String)request.getParameter("tex2");

    coll=(String)request.getParameter("tex3");

    aggper=(String)request.getParameter("tex4");

    tor=(String)request.getParameter("tex5");
    user =(String)request.getParameter("tex6");
    pass =(String)request.getParameter("tex7");


    System.out.println("Reached after fetching values");
    if(user.equals("")||pass.equals("")||user.equals(null)||pass.equals(null))
    {
        out.println("Username or Password cannot be blank.");
    }
    else
        {
        System.out.println("Reached in else condition");
        Pk2 reg=new Pk2();
        reg.Registration(name,addr,coll,aggper,tor,user, pass);
        RequestDispatcher rd=request.getRequestDispatcher("index.html");
    rd.forward(request, response);
        }
}

}

【问题讨论】:

  • 尝试干净的构建..project&gt;clean
  • 如果在干净构建后仍然无法正常工作,请上传一些代码,以便人们更好更快地理解问题
  • 有机会看到您的 servlet 的映射吗?
  • 尝试过的项目>干净,仍然出现 404 错误

标签: java html servlets


【解决方案1】:

上一次我遇到同样的问题是因为浏览器缓存了网页。您能否清除历史记录或在浏览器的隐私模式(或 Chrome 隐身模式)中尝试相同的操作。您也可以使用 firebug 实用程序或 chrome 自己的实用程序验证网页的源代码,方法是在 Chrome 中按 F12 按钮。

PS - 我本可以在评论中提到这一点,但我没有足够的 Stackoverflow 声誉来评论这篇文章。

【讨论】:

  • 我试过 project>clean,也试过 tomcat server>clean>publish,还有 project>refresh,还是一样的 404 错误
  • 我没有使用任何映射,使用默认的 web.xml 部署描述符
  • 那么你是在使用注解来配置urlpattern和servlet名称吗?您需要为您的 servlet Pk 提供一个 servlet 名称。你提供这些细节吗?如果没有,那么请谷歌一个工作 servlet 示例
  • 是的,我为 servlet 文件使用了注释,因为 @WebServlet("/Pk") 仍然出现 404 错误
  • 请告知您何时收到此 404 错误?您是否在单击登录按钮或加载 HTML 页面时收到此错误?
【解决方案2】:

终于解决了,问题出在我的注释本身,因此单击登录按钮后页面未加载。此外,在更改 html/servlet 文件并刷新和清理项目后,我仍然经常遇到 404 错误,但后来意识到问题是浏览器缓存页面。所以清除了缓存,瞧! 并感谢大家的帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 2017-06-26
    • 1970-01-01
    相关资源
    最近更新 更多