`
sdutdazzling
  • 浏览: 31395 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

servlet中doPost()和doGet()

 
阅读更多
一般来说我们是用不到doGet方法的,doGet方法提交表单的时候会在url后边显示提交的内容,所以不安全。而且doGet方法只能提交256个字符(1024字节),而doPost没有限制,因为get方式数据的传输载体是URL(提交方式能form,也能任意的URL链接),而POST是HTTP头键值对(只能以form方式提交)。通常我们使用的都是doPost方法,你只要在servlet中让这两个方法互相调用就行了,例如在doGet方法中这样写
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doPost(request,response);
}

再把业务逻辑直接写在doPost方法中。servlet碰到doGet方法调用直接就会去调用doPost因为他们的参数都一样。而且doGet方法处理中文问题很困难,要写过滤器之类的。   

以上from 百度知道 @權寶兒

在网上搜集了一些资料,把两方法的区别整理如下:
get和post是http协议的两种方法,另外还有head, delete等
这两种方法有本质的区别,get只有一个流,参数附加在url后,大小个数有严格限制且只能是字符串。post的参数是通过另外的流传递的,不通过url,所以可以很大,也可以传递二进制数据,如文件的上传。
在servlet开发中,以doGet()和doPost()分别处理get和post方法。
首先判断请求时是get还是post,如果是get就调用doGet(), 如果是post就调用doPost()。都会执行这个方法。
1.doGet
GET调用用于获取服务器信息,并将其做为响应返回给客户端。当经由Web浏览器或通过HTML、JSP直接访问Servlet的URL时,一般用GET调用。GET调用在URL里显示正传送给SERVLET的数据,这在系统的安全方面可能带来一些问题,比如用户登录,表单里的用户名和密码需要发送到服务器端,若使用Get调用,就会在浏览器的URL中显示用户名和密码。
例:
jsp页代码:
<form action="/doGet_servlet" method="get">
………
<input type="text" >
………
</form>
servlet代码:
public class doGet_servlet extends HttpServlet {
  public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
      request.setCaracterEncoding(“gb2312”);//汉字转码
      PrintWriter out = response.getWriter();
      out.println("The Parameter are :"+request.getParameter("name1"));
  }
}
这样提交表单后,参数会自动添加到浏览器地址栏中,带来安全性问题。

2.doPost
它用于客户端把数据传送到服务器端,也会有副作用。但好处是可以隐藏传送给服务器的任何数据。Post适合发送大量的数据。
例:
jsp页代码:
<form action="/doPostt_servlet" method="post">
………
<textarea cols="50" rows="10"></textarea>
………
</form>
servlet代码:
public class doPostt_servlet extends HttpServlet {
  public void doPost(HttpServletRequest request,HttpServletResponse esponse) throws IOException,ServletException {
      request.setCaracterEncoding(“gb2312”);//汉字转码
      PrintWriter out = response.getWriter();
      out.println("The Parameter are :"+request.getParameter("name2"));
  }
}

3.可以把方法写在doGet()方法中,在doPost()方法中调用执行,这样,无论你提交的是post还是get方法都可以执行
例如:
jsp页代码:
<form action="/servlet" method="post">
………
<input type="text" >
………
</form>
servlet代码:
public class servlet extends HttpServlet {
  public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
      request.setCaracterEncoding(“gb2312”);//汉字转码
      PrintWriter out = response.getWriter();
      out.println("The Parameter are :"+request.getParameter("name1"));
  }

  public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
      this.goGet(request,response);//调用doGet()方法
  }
}
另外,HttpServlet处理客户端请求方式还有doPut、doDelete、doTrace、doHead、doOptions,但使用的比较少。
分享到:
评论
1 楼 hzxlb910 2013-01-08  
写的很详细,并有例子,看着很清晰

相关推荐

    Servlet中doGet与doPost的区别

    Servlet中doGet与doPost的区别

    13-Servlet访问流程以及doGet和doPost.pdf

    Servlet访问流程以及doGet和doPost 能力目标 能叙述Servlet访问流程以及Servlet的生命周期 能描述init()、service()、destory()什么时候被调用的 能描述doGet()和doPost()内部访问流程

    自己写的用于Servlet中doGet方法转码

    自己写的用于Servlet转码 charset包下charset类里的charset方法传入参数,返回经过utf-8转码的信息 注:主要用于Servlet中的doGet方法

    【servlet】彻底解决doGet、doPost以及控制台中文乱码问题

    我们在javaWeb项目时,使用doget和dopost总是会出现各种原因的中文乱码问题,楼主在查阅大量资料后,将为什么有这样的问题,和如何解决这种问题做个总结。 思维导图: 1. 应答乱码处理(response输出页面时乱码) 1.1 ...

    doGet()和doPost()的区别

    这个是servlet中的doGet()和doPost()的区别,介绍的是相当的详细。值得期待。

    servlet中文乱码.xmind

    可以完全解决servlet的dopost和doget中文乱码的思维导图,如果觉得太少了看的不太明白,可以去看我的博客https://blog.csdn.net/qq_42495847/article/details/105237768 这个思维导图是我精华整理过的,试试上传功能

    servlet中文乱码(升级版).xmind

    可以完全解决servlet的dopost和doget中文乱码还有控制台乱码的思维导图,如果觉得太少了看的不太明白,可以去看我的博客https://blog.csdn.net/qq_42495847/article/details/105293206 这个是升级版,更加给力

    testhelpers:doPost doGet doPut doDelete的测试助手

    测试助手(还有很多事情要添加,但是现在应该涵盖了测试doPost的基本知识) 这里的想法是直接测试Java Servlet的doPost,doGet,doPut,doDelete。为什么? 尽管您仍然必须模拟某些服务和DAO类(我曾使用PowerMock)...

    JSP实验15(12月15日)的实验内容和源代码

    了解servlet中的doPost和doGet方法 实验内容: 编写一个servlet,以两种不同的方法响应客户请求。当客户一post方式提交一个整数时,Servlet列出该数字的所有因数;而以get方法提交一个整数时,Servlet则列出该数...

    用servlet写的九九乘法表

    这是一个在刚学习servlet时写的九九乘法表

    JSP/Servlet Java面试逻辑题

    4、什么情况下调用doGet()和doPost()? 答:Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。 5、如何现实servlet的单线程模式★★ 答:&lt;%@page isThreadSafe=false%&gt; 面试中会...

    servlet知识点小结

    1、serialVersionUID作用, 一个是默认的1L,比如:private static final long serialVersionUID = 1L; 2、Servlet中service()方法 3、servlet中的doGet和doPost的不同 4、……

    使用Servlet技术响应用户请求

    每个Servlet必须实现doGet()或doPost()方法(或者两者都实现),这些方法分别处理GET和POST请求。 要在Web应用程序中使用Servlet,您需要将其部署到Web服务器上。 Web服务器通常支持Java Servlet规范,并提供一个...

    servlet temple

    service() 方法可以调用其它方法来处理请求,例如 doGet()、doPost() 或其它的方法。  (3) 终止  当服务器不再需要 Servlet, 或重新装入 Servlet 的新实例时,服务器会调用 Servlet 的 destroy() 方法。  3. ...

    JavaWeb核心之Servlet-源代码

    2)覆盖doGet和doPost 3)在web.xml中进行servlet的配置。 (1)Servlet接口中的方法 1)init(ServletConfig config) 何时执行:servlet对象创建的时候执行 ServletConfig : 代表的是该servlet对象的配置信息 2)...

    JSP和Servlet面试题

    方法初始化servlet,再根据不同请求调用doGet或doPost方法,最后再通过destroy()方法进行销毁。 2.Get和Post的区别 在页面提交数据时,get的数据大小有限制4k,post没有限制,get请求提交的数据会在地址栏显示,...

    servlet2.4doc

    doGet(HttpServletRequest, HttpServletResponse) - Method in class javax.servlet.http.HttpServlet Called by the server (via the service method) to allow a servlet to handle a GET request. doHead...

    Servlet JSP登陆注册

    Servlet JSP登陆注册,一个注册和一个登陆功能,不涉及数据库操作,就一个doPost()方法和doGet()方法,初学者可以看看,仅作参考。不谋金币,免费献上

    Tomcat服务器配置、启动分析、Servlet文件配置

    内容包括了Tomcat服务器配置、启动分析、Servlet文件配置等tomcat的基础应用配置。

Global site tag (gtag.js) - Google Analytics