关于doGet和doPost

问题描述

问题是这样的:我用myEclipse自动生成一个servlet,什么代码也没有写!我只是想测试一下tomcat是怎么调用doGet和doPost的,前提,我没有生成任何表单!!情况一:代码没做任何修改,运行tomcat,浏览器显示正常!情况二:注释整个doPost方法,浏览器显示正常!情况三:注释整个doGet方法,浏览器显示错误!!!!!(为什么tomcat不能单独调用doPost方法)情况四:doGet和doPost互相调用,浏览器显示正常!哪位大侠能解释以上述出现的情况,主要是第三个!!!(没有表单提交)求详解,不能复制网上的答案!!!积分全给!!! 问题补充:package com.amaker.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class TestSession extends HttpServlet {public TestSession() {super();}public void destroy() {super.destroy(); }public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">");out.println("<HTML>");out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");out.println(" <BODY>");out.print(" This is ");out.print(this.getClass());out.println(", using the GET method");out.println(" </BODY>");out.println("</HTML>");out.flush();out.close();} public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">");out.println("<HTML>");out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");out.println(" <BODY>");out.print(" This is ");out.print(this.getClass());out.println(", using the POST method");out.println(" </BODY>");out.println("</HTML>");out.flush();out.close();}public void init() throws ServletException {}}

解决方案

引用fmjsjx 写道从浏览器键入URL时,浏览器会通过HTTP的GET请求连接服务器,到servlet时就会调用doGet方法,这个不是说默认调用doGet方法,而是浏览器的连接请求是GET请求。当通过某个页面的表单请求时,就要看表单的请求类型是POST还是GET了(其实还有其他的HTTP请求类型,不过现在基本都弃之不用了)。高人,能否用源代码说明你的答案!! ……我无语了,看仔细了: Servlet的实现没有默认方法这一说,HTTP请求是GET请求就调用doGet(),是POST就调用doPost()。 从浏览器键入URL来访问网站的请求都是GET请求,只有HTML一面的表单提交是POST时才会是POST请求,这和源码没有任何关系,而是HTTP协议以及HTML规范的要求! 你键入URL来访问网站当然是GET请求,自然要调用doGet()。……
解决方案二:
引用呵呵,这段代码我看过了!!!! 我怕太长发不了啊,解释在下面呢
解决方案三:
看这句String method = req.getMethod();这里的Method就是页面表单里的<form name="loginForm" method="post" action="#">当页面不指定时,默认是get
解决方案四:
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String method = req.getMethod(); if (method.equals("GET")) { long lastModified = getLastModified(req); if (lastModified == -1L) { doGet(req, resp); } else { long ifModifiedSince = req.getDateHeader("If-Modified-Since"); if (ifModifiedSince < lastModified / 1000L * 1000L) { maybeSetLastModified(resp, lastModified); doGet(req, resp); } else { resp.setStatus(304); } } } else if (method.equals("HEAD")) { long lastModified = getLastModified(req); maybeSetLastModified(resp, lastModified); doHead(req, resp); } else if (method.equals("POST")) { doPost(req, resp); } else if (method.equals("PUT")) { doPut(req, resp); } else if (method.equals("DELETE")) { doDelete(req, resp); } else if (method.equals("OPTIONS")) { doOptions(req, resp); } else if (method.equals("TRACE")) { doTrace(req, resp); } else { String errMsg = lStrings.getString("http.method_not_implemented"); Object[] errArgs = new Object[1]; errArgs[0] = method; errMsg = MessageFormat.format(errMsg, errArgs); resp.sendError(501, errMsg); } }
解决方案五:
从浏览器键入URL时,浏览器会通过HTTP的GET请求连接服务器,到servlet时就会调用doGet方法,这个不是说默认调用doGet方法,而是浏览器的连接请求是GET请求。当通过某个页面的表单请求时,就要看表单的请求类型是POST还是GET了(其实还有其他的HTTP请求类型,不过现在基本都弃之不用了)。
解决方案六:
引用我是这么想的,但是我看了一下午的tomcat的源代码,没看出这个根据(默认的调用是doGet方法)!这个默认是指页面请求,页面请求不明确指明是post的话,默认就是发送get请求。
解决方案七:
默认就是doGet()方法吧
解决方案八:
你写一个空的表单强制以post来发送请求呢
解决方案九:
没有表单,默认就是doGet吧
解决方案十:
能把你那个自动生成的servlet贴上来么

时间: 2024-07-31 13:26:32

关于doGet和doPost的相关文章

servlet中doGet和doPost中乱码问题

问题描述 servlet中doGet和doPost中乱码问题 所有的字符集都改成了UTF-8但是一直乱码,写servlet时试探性的删除了图中拖黑的代码,之后的乱码问题就解决了,这是什么原因(http://img.ask.csdn.net/upload/201512/23/1450862099_186009.png) 解决方案 dopost里面调用doget...那么你觉得dopost之后的代码还会走吗? 解决方案二: 在doGet里面添加 字符集设定 解决方案三: 在doGet里面添加 字符集

servlet-关于severlet的doget和dopost方法

问题描述 关于severlet的doget和dopost方法 一个简单的问题,请问severlet中的doget方法和dopost方法和jsp中的 有什么关系吗 或者severlet中的这2个方法到底是接受哪里的数据和参数 解决方案 从字面上理解,一般get是请求数据,比如你打开百度,默认就是发送get的报头给百度的服务器,然后它再返回百度的页面给你. 而post一般是用来做登陆.用户验证等,也可以看成是向服务器请求数据.只不过它的数据是放在报体里面的,用户是看不到你发送的内容. 而get你是能

servlet的生命周期,doGet 及doPost

一个servlet的生命周期由部署servlet的容器来控制.当一个请求映射到一个servlet时,该容器执行下列步骤.1.       如果一个servlet的实例并不存在,Web容器加载servlet类.  创建一个servlet类的实例.调用init初始化servlet实例.该初始化过程将在 初始化servlet中讲述.调用service方法,传递一个请求和响应对象.服务方法将在编写服务方法中讲述.如果该容器要移除这个servlet,可调用 servlet的destroy方法来结束该ser

Java doGet, doPost方法和文件上传实例代码_java

Java doGet, doPost方法和文件上传 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/test" method="post

Beginner: Using Servlets to display, insert and update records in database.(1)

servlet Displaying Records from the Database with Java Servlets. Overview : In this article I'll explain each step you need to know to display records from the database using Servlets. The steps for displaying records in JSP pages and Java Beans are

走上开放之路: ASP开发人员的J2EE基础(下)

相关文章:走上开放之路: ASP 开发人员的 J2EE 基础(上) ASP/COM 和 J2EE 应用程序模型 接下来研究不同的应用程序体系结构,您可以使用这些体系结构开发 J2EE 应用程序并将 其与相应的 ASP/COM 应用程序体系结构关联起来. 使用 Java Servlets 编程:基础知识 编写 Java Servlets 就可以对来自 URL 的请求进行可编程控制.典型的 servlet 调用 类似于以下步骤: 客户机向 Web 服务器发出请求,将 servlet 命名为 URL

java-Jsp+Servlet怎么在form中指定要访问的servlet中的方法名

问题描述 Jsp+Servlet怎么在form中指定要访问的servlet中的方法名 Jsp+Servlet怎么在form中指定要访问的servlet中的方法名,在Jsp中写了一个form,然后想指定访问servlet中的regist()方法,而不是doGet()或者doPost()方法,应该怎么样指定 解决方案 servlet只能指定post,get请求,你随便请求一个,在调一下regist()呗,或者重写父类service方法,在里面加入regist() 解决方案二: dopost里面判断调

java笔试题

v下面有关JVM内存,说法错误的是? A.程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的 B.Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的 C.方法区用于存储JVM加载的类信息.常量.静态变量.即使编译器编译后的代码等数据,是线程隔离的 D.原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的 解析:方法区在JVM中也是一个非常重要的区域,它与堆一样,是被 线程共享 的区域. 在方法区中,存储了每个

Servlet再度学习

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 虽然Servlet已经使用很多了,但是一直都仅局限在其使用操作上. 最近有空想对它进行一个相对全面的了解. 下面是博主整理的一篇博文. 一.Servlet简介 Servlet(Server Applet),全称Java Servlet,未有中文译文.是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web内容.狭义的Servlet是指Java语言