`
wade6
  • 浏览: 270138 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Servlet学习整理(一)——认识servlet

 
阅读更多

Servlet规范

Servlet规范是J2EE 最重要的一部分,如果要开发基于J2EE的Web应用,那么Servlet规范是必须掌握的。

 

而Servlet 规范中最重要的就是 servlet 和 filter 这两项技术。

 

关于这两个技术以及servlet的具体内容可以参考——《servlet规范》或后面的学习整理,这里就不多说了。

 

Servlet源代码

servlet源代码可以在tomcat中找到,位于$tomcat_home/lib/servlet-api.jar。

 

为什么servlet 源代码会有两个包,javax.servlet 和 javax.servlet.http ?

 

因为起初设计该规范的人认为 Servlet 是一种服务模型,不一定是依赖某种网络协议之上,因此就抽象出了一个 javax.servlet ,同时提供一个基于 HTTP 协议上的接口扩展。但实际运行这么多年来,似乎没有发现其他协议实现的 Servlet 技术。

 

javax.servlet 和 javax.servlet.http 这两个包总共加起来也不过是三四十个接口和类,可以通过 J2EE 的 JavaDoc 文档熟知每个类和接口的具体功能。

下面几个接口是必须熟知每个方法的功能和用途:

     * HttpServlet
     * ServetConfig
     * ServletContext
     * Filter
     * FilterConfig
     * FilterChain
     * RequestDispatcher
     * HttpServletRequest
     * HttpServletResponse
     * HttpSession
     * 一些 Listenser 类

其中 HttpServletRequest 和 HttpServletResponse 这两个接口更应该是烂熟于心。

 

Servlet与web框架

如果要学习web框架,那么servlet 和 filter 这两项技术必须要熟练掌握;

 

因为大多数框架不是基于 servlet 就是基于 filter,如果它要在 Servlet 容器上运行,就永远也脱离不开这个模型。

 

Servlet规范与HTTP

Web应用是离不开 HTTP 协议的,Servlet 规范其实就是对 HTTP 协议做面向对象的封装。

为什么HttpServletRequest 和 HttpServletResponse 这两个接口很重要?因为HTTP协议中的请求和响应就是对应了 HttpServletRequest 和 HttpServletResponse 这两个接口。

可以通过HttpServletRequest 来获取所有请求相关的信息,包括 URI、Cookie、Header、请求参数等,别无它路;当你使用某个框架时,你想获取HTTP请求的相关信息,只要拿到 HttpServletRequest 实例即可。

而 HttpServletResponse接口是用来产生 HTTP 回应的,包含 Cookie、Header 以及回应的内容等等。


问题:

1、HttpServletRequest 和 HttpServletResponse  等不是接口吗,哪来的实例对象?

这些接口的实现类是由各个 J2EE 厂商提供的web容器实现的,比如tomca ,weblogic都有自己的实现。

接口的实现是由J2EE厂商实现,对象实例化是由web容器实例化;

我们只需要引入servlet-api.jar包,在web容器上直接调用就可以了。


2、J2EE 与 Servlet 的关系和区别?

J2EE是指Java2平台企业版(Java 2 Platform,Enterprise Edition),基于JAVA技术。

J2EE是一套技术架构,区别于传统的应用开发;包含许多组件,作用是简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。

狭义的说,J2EE是指企业级开发应用,里面用到的框架是MVC架构,就是模型、试图、控制分离的架构。这样在大型应用中使得后期的维护、升级都变的简单,上层的东西不需要知道下层是如何实现的,只需调用下层的接口就可以了。

servlet是一种技术实现规范,是对J2EE架构的部分技术的指导;目前看来,servlet主要应用在控制层(C),用来处理业务逻辑之类的,而不管页面显示和数据模型(M和V)。

当然,JSP可以代替servlet,但是建议使用JSP时主要用于显示页面而不要处理业务逻辑。模型层就是指JavaBean了。

j2ee更像一种概念,一种思想,就是框架。而servlet是一种技术的实现,实实在在的东西。这就是他们的区别。

通俗一点,比如你有一块地想盖个房子,那这房子是要盖成楼房还是平房(平房好比传统的应用开发,J2EE就是现在火热的楼房),楼房容积率高当然要选楼房了(也就是我们的选择了J2EE);楼房是由楼梯、钢筋等多个部分构成的(J2EE中也包含很多组件);那楼梯怎么做呢,这就要参考楼梯的设计规范了;在J2EE中,servlet就是J2EE中建造“楼梯”的设计规范;准确一点,servlet主要是J2EE中控制层的实现规范。

-----------------------------------------------------------------------------------------------------------

参考:http://www.oschina.net/question/12_52027  初学 Java Web 开发,请远离各种框架,从 Servlet 开发

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics