form表单提交方法get可以,但用post提交却不行,我想知道为啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了form表单提交方法get可以,但用post提交却不行,我想知道为啥相关的知识,希望对你有一定的参考价值。

下面是一段代码,用myeclipse在servlet里面写的
out.println("<h1>登录界面</h1>");
out.println("<form action='/UserManager2/DLCLServlet' method='get'>");
out.println("用户ID:<input type='text' name='Name' value='"+cookie_name+"'/><br/>");
out.println("密 码:<input type='password' name='PSW' value='"+cookie_psw+"'/><br/>");
out.println("<input type='checkbox' value='save' name='saveinfo'/>保存用户名和密码<br/>");
out.println("<input type='submit' value='登录'/>");
out.println("</form>");

参考技术A form 里的 method 方法与servlet里的方法名有直接关系 method='get' servlet里就必须用doGet来处理,method=‘post’ 那servlet就要用doPost来处理,还有,你说说看你用post的时候报什么错。追问

①request.getRequestDispatcher("/MainFrame").forward(request,response); ②response.sendRedirect("/UserManager2/MainFrame");
我用了你们说的方法确实可以了
但我不理解,为什么第一种跳转方式不行,第二种可以,如果是一个web应用,用第一种方法跳转有何不可呢?

追答

第一种是什么情况嘛? 404?
第一个是请求转发,第二个是重定向。你去看一看servlet的帮助文档嘛,一两句话我也给你说不清楚。

追问

我是在另一个servletcl里处理验证的,验证成功后用第二种跳转是没有问题的,但用第一种方法跳转的时候他就停留在servletcl了,整页面什么都不显示,没有提示错误。
提示文档和视频教程都是研究过了,只是觉得奇怪,在这里用转发没理由过不去啊,我还是小菜,希望老鸟们教教我啦 ^_^

参考技术B 首先是看看页面报什么错误,如果是405的话就说明你的servlet中的方法是doget.当使用doget方法获取请求时,只能获取到页面用get方法提交的请求.而post的是无法获取到的.与之相同的还有一个dopost方法.所以我建议你使用service方法.这个方法可以获取到get和post中的任意一种请求. 参考技术C 你的方法是写在serverlet 的get里面吧 你可以在下面的post里面调用get就好啦.

以上是关于form表单提交方法get可以,但用post提交却不行,我想知道为啥的主要内容,如果未能解决你的问题,请参考以下文章

怎么获取form表单将要提交的数据

在java中写jsp网页和servlet中,form表单的提交方法get与post的区别?

ThinkPHP 中 form 表单用 get 提交会直接跳到首页,这个需要在哪里进行啥设置?

表单提交中get和post方式的区别

form表单的GET和POST请求

html中form表单使用POST提交数据是否可以被查看到?