HTTP method POST is not supported by this URL ??

sherry7923 2010-05-18 11:29:47
孙鑫的书, servlet/jsp深入详解,网上参见http://www.qijan.com/bbs/viewthread.php?action=printable&tid=10063

书上67页请求转发的例子, 例2-16 PortalServlet.java和例2-17 LoginServlet2.java
网上请通过ctrl+F去查找

点登陆后出现错误: HTTP method POST is not supported by this URL

把例2-17 LoginServlet2.java第21行代码form method=post改成form method=get后运行正常.
请问是为什么?



附两个程序:
例2-16 PortalServlet.java
1. package org.sunxin.ch02.servlet;

2.
3. import java.io.IOException;
4. import java.io.PrintWriter;
5.
6. import javax.servlet.RequestDispatcher;
7. import javax.servlet.ServletContext;
8. import javax.servlet.ServletException;
9. import javax.servlet.http.HttpServlet;
10. import javax.servlet.http.HttpServletRequest;
11. import javax.servlet.http.HttpServletResponse;
12.
13. public class PortalServlet extends HttpServlet
14. {
15. public void doGet(HttpServletRequest req, HttpServletResponse resp)
16. throws ServletException,IOException
17. {
18. resp.setContentType("text/html;charset=gb2312");
19.
20. PrintWriter out=resp.getWriter();
21.
22. out.println("<html><head><title>");
23. out.println("登录页面");
24. out.println("</title></head><body>");
25.
26. String name=req.getParameter("username");
27. String pwd=req.getParameter("password");
28.
29. if("zhangsan".equals(name) && "1234".equals(pwd))
30. {
31. ServletContext context=getServletContext();
32. RequestDispatcher rd=context.getRequestDispatcher("/welcome");
33. rd.forward(req,resp);
34. }
35. else
36. {
37. RequestDispatcher rd=req.getRequestDispatcher("login2");
38. rd.include(req,resp);
39. }
40. out.println("</body></html>");
41. out.close();
42. }
43. public void doPost(HttpServletRequest req,HttpServletResponse resp)
44. throws ServletException,IOException
45. {
46. doGet(req,resp);
47. }
48. }




例2-17 LoginServlet2.java
1. package org.sunxin.ch02.servlet;

2.
3. import java.io.IOException;
4. import java.io.PrintWriter;
5.
6. import javax.servlet.ServletException;
7. import javax.servlet.http.HttpServlet;
8. import javax.servlet.http.HttpServletRequest;
9. import javax.servlet.http.HttpServletResponse;
10.
11. public class LoginServlet2 extends HttpServlet
12. {
13. public void doGet(HttpServletRequest req, HttpServletResponse resp)
14. throws ServletException,IOException
15. {
16.
17. resp.setContentType("text/html;charset=gb2312");
18.
19. PrintWriter out=resp.getWriter();
20.
21. out.println("<form method=post action=portal>");
22.
23. out.println("<table>");
24.
25. out.println("<tr>");
26. out.println("<td>请输入用户名</td>");
27. out.println("<td><input type=text name=username></td>");
28. out.println("</tr>");
29.
30. out.println("<tr>");
31. out.println("<td>请输入密码</td>");
32. out.println("<td><input type=password name=password></td>");
33. out.println("</tr>");
34.
35. out.println("<tr>");
36. out.println("<td><input type=reset value=重填></td>");
37. out.println("<td><input type=submit value=登录></td>");
38. out.println("</tr>");
39.
40. out.println("</table>");
41. out.println("</form>");
42. }
43.
44. public void doPost(HttpServletRequest req,HttpServletResponse resp)
45. throws ServletException,IOException
46. {
47. doGet(req,resp);
48. }
49. }
...全文
246 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sherry7923 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liuxiaolei7676 的回复:]
out.println("<form method=post action=portal>"); 你这里的action写错了吧 这样表单提交你能提交到PortalServlet去么
[/Quote]

应该没错的,因为改为get就完全正常.
web.xml有如下配置:
<servlet>
<servlet-name>PortalServlet</servlet-name>
<servlet-class>
org.sunxin.ch02.servlet.PortalServlet </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PortalServlet</servlet-name>
<url-pattern>/portal</url-pattern>
</servlet-mapping>
liuxiaolei7676 2010-05-18
  • 打赏
  • 举报
回复
out.println("<form method=post action=portal>"); 你这里的action写错了吧 这样表单提交你能提交到PortalServlet去么

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧