`

[转]Servlet学习的常见问题与解答

阅读更多

原文地址:http://developer.51cto.com/art/200907/134442.htm

Servlet学习的开始我们先要明白什么是Servlet,它是运行在服务器端的程序,它是被容器调用的(如tomcat),用于处理及响应客户端的请求.

J2EE定义的是一系列的标准,没有提供实现,没有提供jar包。Tomcat中的servlet-api.jar实现了J2EE的API标准。

类结构图:

Servlet学习之Servlet类图

GenericServlet是抽象类,其中定义了抽象方法service()。

Servlet学习中碰到HttpServlet也是抽象类,它没有抽象方法,但它实现了service()方法,service()方法中又调用了doGet()和doPost()方法。doGet()和doPost()方法在HttpServlet类中都有默认的实现。而我们写的servlet程序一般都继承HttpServlet,重写doGet和doPost方法。Service()方法被调用时会自动调用我们重写的doGet或doPost方法,因此我们的Servlet程序主要任务就是重写这两个方法。

问题:我们Servlet学习时候,当Servlet程序中重写了doGet()和doPost()方法,service()方法是怎么调用到我们写的doGet()和doPost()方法的?

解答:这里面用到了多态,重写和继承都有了,那么父类引用指向子类对象是怎么体现的呢?service方法是被容器中我们写的Servlet类的实例调用的,而父类HttpServlet中又调用了this.doGet()和this.doPost()方法,这时就有了父类引用指向子类对象了:this(HttpServlet)-﹥我们的Servlet实例。附上一个图作为说明:

Servlet学习之Servlet实例图 


问题:Servlet学习时service()方法什么时候被调用?

解答:当客户端发出请求的时候,容器调用service 方法并传递一个请求和响应对象。Servlet首先判断该请求是GET 操作还是POST 操作。然后它调用下面的一个方法:doGet 或 doPost。如果请求是GET就调用doGet方法,如果请求是POST就调用doPost方法。

Servlet学习过程中要注意看看Servlet的生命周期:

1、客户端发送一个请求(也就是一个servlet的访问URL)

2、服务器端解析请求(通过web.xml里面的servlet配置解析)

3、servlet容器创建servlet的一个实例

4、容器调用该实例的init()方法

5、如果容器对该servlet有请求,则调用此实例的service()方法

6、返回响应消息给servlet容器

7、返回响应消息给客户端

8、容器在销毁本实例前调用它的destroy()方法

9、销毁并标记该实例以供作为垃圾收集

  
protected void doGet(HttpServletRequest req, HttpServletResponse resp)

HttpServletRequest req封装了客户端到服务器端的请求,在服务器端(即我们编写的Servlet)中可以通过req获取这些请求信息。

HttpServletResponse resp从服务器端返回给客户端的对象,也就是我们往resp中写消息就可以放松给客户端了。

问题:Servlet学习中Servlet容器(如tomcat)怎样调用我们写的相应Servlet?

解答:对了,在web.xml里面配置。如:

  1. ﹤servlet﹥   
  2.     ﹤servlet-name﹥hw﹤/servlet-name﹥   
  3.     ﹤servlet-class﹥com.dvnchina.test.HelloWorldServlet﹤/servlet-class﹥   
  4.     ﹤/servlet﹥   
  5.     ﹤servlet-mapping﹥   
  6.     ﹤servlet-name﹥hw﹤/servlet-name﹥   
  7.     ﹤url-pattern﹥/helloservlet﹤/url-pattern﹥   
  8. ﹤/servlet-mapping﹥  


这时客户端通过http://127.0.0.1:8080/ServletTest/helloservlet发送请求,就可以调用hw这个servlet,当hw被调用后就容器就自动调用hw的service()方法,而hw实例从HttpServlet继承的service()方法中又调用了doGet()和doPost()方法,此时根据多态就调用了我们servlet中写的doGet()和doPost()方法。

分享到:
评论

相关推荐

    [JSP&Servlet;学习笔记(第2版)]

    **JSP(Java Server Pages)与Servlet...这个**[JSP&Servlet学习笔记(第2版)]**会涵盖这些主题,并可能包括示例代码、最佳实践和常见问题解答,帮助读者全面掌握JSP和Servlet的使用技巧,进一步提升Java Web开发能力。

    Servlet&JSP课后习题解答

    ### Servlet与JSP课后习题解答精析 #### 第1章:理解HTTP请求方法——GET与POST **知识点解析**: 1. **GET与POST的区别**:在HTTP协议中,GET与POST是最常见的两种请求方式。GET通常用于获取资源,而POST用于...

    web常见问题解答web常见问题解答,可以受到很大的启发

    《Web常见问题详解:从基础到实践》 Web开发过程中,我们经常会遇到各种问题,这些问题涵盖Java基础、Web容器、Servlet、JSP等多个方面。理解并解决这些问题对于提升我们的技术水平和开发效率具有极大的启发性。...

    Servlet参考手册.zip

    "Servlet参考手册"很可能会详细解释以上所有概念,并可能包含更多实践示例、最佳实践以及常见问题解答,是学习和精通Servlet开发的重要资源。通过深入学习和实践,开发者可以创建出高效、健壮且功能丰富的Web应用...

    servlet学习

    至于文档中的`servletѧϰ.docx`,可能是对Servlet更深入的讲解,包括可能的案例分析、常见问题解答或源码解析。这份文档将帮助你更全面地掌握Servlet技术。 总之,Servlet是Java Web开发中的基石,理解和掌握其...

    JavaServlet帮助文档

    JavaServlet帮助文档中的CHM文件是一个编译过的HTML帮助文档,它包含详细的API参考、教程、示例代码和常见问题解答,是开发者学习和查阅Servlet技术的重要资源。利用其内置的搜索功能,开发者可以快速找到所需的信息...

    java servlet package

    7. `jfaq`:这可能是Java Frequently Asked Questions的缩写,可能是一个包含Servlet常见问题解答的文档或目录,帮助开发者解决开发过程中遇到的问题。 8. `jcrm`:这可能代表Java Customer Relationship ...

    jsp问题处理集,解决大多数jsp的常见问题

    总之,这个"jsp问题处理集"很可能是对上述知识点的详细解答和实例演示,对于想要深入学习JSP的初学者来说,它会是一个很好的学习资源。通过阅读和实践其中的内容,初学者可以逐步克服JSP开发中的障碍,成为更熟练的...

    ACCP S2 使用JSP/Servlet技术开发新闻发布系统

    **简答和案例**:这部分内容可能包含了常见问题的解答,帮助学生解决学习中遇到的问题。案例分析可能提供了其他类似项目的设计思路,帮助学生扩展视野,理解不同场景下的解决方案。 总的来说,"ACCP S2 使用JSP/...

    Servlet留言板程序 Windows版 

    3. **README.html**: 通常包含项目的简介、安装指南、使用方法以及常见问题解答,为用户提供了一个快速了解和开始使用CSGuestbook的入口。 4. **CSGuestbookDemo.html**: 这是一个示例页面,展示了CSGuestbook留言...

    ASP.NET新闻、论坛、电子商城、博客源码及JSP常见问题解答

    本文将深入探讨ASP.NET和JSP在新闻系统、论坛、电子商城以及博客开发中的应用,并提供常见问题的解答。 首先,ASP.NET是微软公司推出的.NET框架的一部分,它支持C#、VB.NET等编程语言,提供了强大的服务器控件和...

    北大青鸟--jspServlet学生用书源代码 2.rar

    "指导学习"可能是配套的学习指南或者解决方案,包含了解决问题的提示、代码注解和解答常见问题的部分,旨在辅助学生理解教材中的难点,提升自我学习的能力。 【学习路径建议】 对于这份源代码,学生应先通读相关...

    JAVA编程习题与解答(全美经典学习指导系列)

    《JAVA编程习题与解答(全美经典学习指导系列)》是一本专注于Java编程实践的指导书籍,旨在帮助读者深入理解和掌握Java编程语言。这本书包含了丰富的习题和详尽的解答,是Java初学者和进阶者提升技能的理想资源。 在...

    经典面试题(servlet,js,逻辑题).docx

    例如,理解异常处理、类的静态与非静态成员、接口与抽象类的差异,以及线程同步和锁的概念,这些都是面试中常见的问题。在数据库方面,熟悉SQL语句、PL/SQL的使用,以及JDBC和XML的交互也是必备技能。 总的来说,...

    去公司面试技巧大全常见的问题

    以下是一些面试技巧和常见问题的解答,涵盖了技术与非技术层面的知识点。 1. **自我介绍**: - 简单介绍自己的背景,包括教育经历、工作经验和专业技能。 - 描述个人特点,如团队合作能力、问题解决能力或创新...

    (转)java学习总结

    【标题】:“(转)Java学习总结” ...可能包括重要概念的定义、代码示例的解释、常见问题的解答以及学习建议等内容。阅读这份文档可以帮助初学者巩固学习成果,也为有经验的开发者提供了一个复习和参考的资源。

    jsp+servlet+javaBean实现MVC.rar

    2. **readme.txt** - 这是常见的项目启动文件,通常包含项目的基本信息、安装步骤、运行指南和可能的问题解答。 3. **数据库备份** - 可能是项目所使用的数据库的备份文件,用于恢复或查看项目的数据结构和样本数据...

    新手学习Java路线图

    - 掌握面试中常见的问题及其解答技巧。 3. **就业指导** - 掌握求职过程中的注意事项。 - 学习简历制作和面试技巧。 通过以上详细的讲解,相信你已经对Java学习路线有了较为全面的了解。按照这样的路径持续学习...

Global site tag (gtag.js) - Google Analytics