httpservlet的service()、doget()、dopost方法
HttpServlet里的三个方法:service(HttpServletRequest req, HttpServletResponse resp) ,doGet(HttpServletRequest req, HttpServletResponse resp), doPost(HttpServletRequest req, HttpServletResponse res)的区别和联系:
- 在servlet中默认情况下,无论你是get还是post 提交过来 都会经过service()方法来处理,然后转向到doGet
- 或是doPost方法,我们可以查看HttpServlet 类的service方法: 我在tomcat的lib目录下,解压servlet-api.jar,然后用反编译软件把lib\javax\servlet\http下的HttpServlet.class反编译,看里头的service()方法的原代码:查看源码发现,httpservlet继承genericservlet并实现了service方法,从实现来看service起到了调度的作用。因此自定义servlet继承httpservlet不需要覆盖重写service方法,只需覆盖重写doget或者dopost方法。
- 注意,sun只是定义了servlet接口,而实现servlet接口的就是类似于tomcat的服务器,所以我是在tomcat的安装目录下找到实现的类。
public abstract class HttpServlet extends GenericServlet {
protected void service(HttpServletRequest req, HttpServletResponse resp)
- 从上面可以看出 这里的service是用来转向的,但是如果你在自己的servlet类中覆盖了service方法,比如说你的service是这样的:
- Java代码
- 1.publicvoid service(ServletRequest req, ServletResponse res)
- 2. throws ServletException, IOException {
- 3. res.getOutputStream().print(
- 4. "image is <img src='images/downcoin.gif'></img><br>");
- 5. }
- 那么这时service就不是用来转向的,而是用来处理业务的,现在不论你的客户端是用pos还是get来请求此servlet
- 都会执行service方法也只能执行servlet方法,不会去执行doPost或是doGet方法。
- 比如说:你的客户端代码是:
- Java代码
- 1. <%@page contentType="text/html; charset=utf-8"%>
- 2. <html>
- 3. <head><title>选择</title></head>
- 4. <body>
- 5. 请选择你喜欢的水果:<br>
- 6. <form action ="Test" method = "post">
- 7. <input type="checkbox" name="fruit" value ="apple" >苹果<br>
- 8. <input type="checkbox" name="fruit" value ="orange">桔子<br>
- 9. <input type="checkbox" name="fruit" value ="mango">芒果<br>
- 10. <input type="submit" value="提交">
- 11. </form>
- 12. </body>
- 13. </html>
- 14.
- 15. 服务端servlet是:Test类
- 16.
- 17.import java.io.IOException;
- 18.
- 19.import javax.servlet.ServletException;
- 20.import javax.servlet.ServletOutputStream;
- 21.import javax.servlet.ServletRequest;
- 22.import javax.servlet.ServletResponse;
- 23.import javax.servlet.http.HttpServlet;
- 24.import javax.servlet.http.HttpServletRequest;
- 25.import javax.servlet.http.HttpServletResponse;
- 26.
- 27./**
- 28. * 演示service方法
- 29. */
- 30.publicclass Testextends HttpServlet {
- 31.
- 32.publicvoid service(ServletRequest req, ServletResponse res)
- 33. throws ServletException, IOException {
- 34. res.getOutputStream().print("This is the service");
- 35.
- 36. }
- 37.
- 38.protectedvoid doGet(HttpServletRequest request,
- 39. HttpServletResponse response)throws ServletException, IOException {
- 40. doPost(request,response);
- 41.
- 42. }
- 43.protectedvoid doPost(HttpServletRequest request,
- 44. HttpServletResponse response)throws ServletException, IOException {
- 45. ServletOutputStream out=response.getOutputStream();
- 46. String[] args=(String[])request.getParameterValues("fruit");
- 47. for(int i=0;i<args.length;i++){
- 48. out.print(args[i]+"<br>");
- 49. }
- 50.
- 51. }
- 52. }
- 点击提交后:页面输出结果为“This is the service“;
httpservlet的service()、doget()、dopost方法的更多相关文章
- [转]servlet中的service, doGet, doPost方法的区别和联系
原文地址:http://m.blog.csdn.net/blog/ghyg525/22928567 大家都知道在javax.servlet.Servlet接口中只有init, service, des ...
- servlet中service() doGet() doPost() 方法
HttpServlet 里的三个方法:service(HttpServletRequest req, HttpServletResponse resp) ,doGet(HttpServletReque ...
- servlet 中 service ,doGet , doPost 关系
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2 ...
- doget,doPost在底层走的是service
doget,doPost在底层走的是service 因为在源码上 先执行service方法 然后再调用doget,doPost方法
- 自定义servlet重写doGet或者doPost方法时,405 method not allowed
自定义servlet public class TestServlet extends HttpServlet { @Override protected void doGet(HttpServlet ...
- Servlet的Service方法和doget 和 dopost方法的区别,常见的错误解析
package com.sxt.in; import java.io.IOException; import javax.servlet.ServletException; import javax. ...
- service 方法和doGet、doPost方法的区别
Service方法和doGet和doPost方法的区别service: 可以处理get/post方式的请求,如果servlet 中有service方法,会优先调用service方法进行处理do ...
- 关于HttpServlet和Servlet以及doPost和doGet关系
这两天在看Servlet和Jsp,spring太难了,还是先看看基础,只怪自己太弱了. Servlet是一个接口,本身定义的是一种网络服务,HttpServlet是已经实现了Servlet接口,也就是 ...
- HttpServlet中service方法的源码解读
前言 最近在看<Head First Servlet & JSP>这本书, 对servlet有了更加深入的理解.今天就来写一篇博客,谈一谈Servlet中一个重要的方法-- ...
随机推荐
- linux自动ftp上传与下载文件的简单脚本
#!/bin/sh cd /data/backup/55mysql DATE=`date +'%Y%m%d'`file="55_mysql_"$DATE"03*.rar& ...
- java中使用js函数
JDK6已经发布很久了,很早就听过他已经支持脚本语言了,不过一直没有时间尝试,今天偷闲试了一下,感觉不错. javax.script包它是Java新增的操作脚本的工具包, 利用它我们可以对脚本语言进行 ...
- 九度OJ 1145:Candy Sharing Game(分享蜡烛游戏) (模拟)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:248 解决:194 题目描述: A number of students sit in a circle facing their teac ...
- 关于调用notifyDataSetChanged刷新PullToRefreshListView列表无反应解决办法
文章转载自:关于调用notifyDataSetChanged刷新PullToRefreshListView列表无反应解决办法 | TeachCourse
- iOS Dev (53) 修复UIImagePickerController偷换StatusBar颜色的问题
版权声明:本文为 CSDN 博主 大锐哥(ID 为 prevention)原创文章,未经博主同意不得转载. https://blog.csdn.net/prevention/article/detai ...
- Halcon下载、安装
下载地址: 官网:http://www.halcon.com/halcon/download/ Halcon学习网:http://www.ihalcon.com/read.php?tid=56 { 最 ...
- Java for LeetCode 133 Clone Graph
Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. OJ's ...
- B. Drazil and His Happy Friends
这是 Codeforces Round #292 (Div. 2)的一道题,原题在这里,题意就是: 小明有n个男同学(编号为 0 ~ n-1)和m个女同学 (编号为 0 ~ m-1),小明要安排男女之 ...
- mini2440 u-boot禁止蜂鸣器
mini2440的u-boot版本启动之后马上就会开启蜂鸣器,在办公环境下有可能会影响同事的工作,所以我考虑将其禁止掉. 我使用的mini2440使用的光盘是2013年10月的版本,我在该光盘下的u- ...
- 程序连接Oracle数据库出现未找到提供程序.该程序可能未正确安装错误提示
好不容易使用plsql可以成功连上数据库了,应用程序连接数据库却出现了问题 其实解决这个问题也简单: 1. 查看oracle安装目录下的BIN目录,E:\app\Administrator\prod ...