`
ren2881971
  • 浏览: 109807 次
社区版块
存档分类
最新评论

开始完整的学习Servlet&Jsp

    博客分类:
  • j2ee
阅读更多
虽然目前来说利用Servlet&JSP来完成工作已经完全没有问题,但是还是要打好基础,不然今天一个框架明天一个框架的 身体不行了实在是跟不上节奏了~
先学两个包中的内容吧
javax.servlet
javax.servlet.http
-------------------------------------------------------------------------
Interface Filter

过滤器是一个对象,执行过滤任务可以在请求一个资源(一个servlet或静态内容),或者从一个资源的响应,或者两者。

过滤器执行过滤在doFilter方法。每个过滤器能够访问一个FilterConfig对象,它可以获得它的初始化参数,并引用它可以使用d的ServletContext,例如,负载所需的资源过滤任务。
在过滤器应用的场景如下:
身份验证过滤器

日志记录和审核过滤器

图像转换过滤器

数据压缩过滤器

加密过滤器

分过滤器

过滤器,触发资源访问事件

XSL / T过滤器

mime类型链过滤器ks。

------------------------------------------------------
Filter中方法:
init(FilterConfig)
destroy()
doFilter(ServletRequest request,ServletResponse response,FilterChain chain)

FilterChain中的方法:
FilterChain是Filter链条,这个链条中Filter的执行顺序是按照在web.xml中filter的配置顺序来排序的。

doFilter(ServletRequest request,ServletResponse response)



在Filter中doFilter()中调用 FileterChain.的doFilter()方法如果有在Filter链条中有下一个filter 则将当前filter中的request和response 转发给第二个filter。如果已经到达filter的终端的话。则中止传递,进行相应的过滤功能

在Filter中的init(FilterConfig)方法中通过FilterConfig参数 可以获得:
1.FilterName
2.FilterConfig的名/值
3.还可以通过FilterConfig获得上下文ServletContext.


FilterConfig中方法:

getFilterName()
getInitParameter()
getInitParameterNames()
getServletContext()


RequestDispatcher接口:

forward()
include()
两者之间的区别 我个人理解为 两者都是将ServletRequest和ServletResponse两者传递给一个新的servlet/jsp 但是不同的是 forward()是有 request和response两者的控制权,而include()虽然转发到了新的servlet/jsp 但是request和response两者的控制权还是由原先的servlet/jsp来控制

<!--以下内容是在网上找到的,帮助我理解下-->
forward是转发的另一个页面.
include是把另一个页面加载到当前页面.

include和forward的区别:

include 是去而复返,forward 是前不见古人,后不见来者。

include 是把别人包含进来,forward 是丢掉了自己。


Interface Servlet:
最最基本的Servlet接口,javax.servlet.GenericServlet和javax.servlet.http.HttpServlet都是继承Servlet接口。
包括 serlvet 的 init() destroy() service()
方法:
init()
destroy()
service()
getServletConfig()
getServletInfo()

ServletConfig方法:
getInitParameter()
getInitParameterNames()
getServletContext()
getServletName()
ps: ServletConifg与FilterConfig 相类似。

在看到这部分api的时候发现了一个问题。 为什么通过ServletConfig能获得ServletContext,但是通过ServletContext却不能获得ServletConifg对象。按照道理来说ServletContext是整个应用全局的上下文,而ServletConfig是针对具体Servlet的。ServletContext的作用范围比ServletConfig大。不能够获得不到啊。
自己想了下又通过谷姐查找资料 还真验证了自己想法。
就是ServletContext是先创建的 而ServletConfig是后创建的。很有可能在ServletContext的时候ServletConfig还没有被实例化。
因为在web.xml配置文件的Servlet中支持一个参数
loadOnStartup 如果参数大于零的话就会启动就加载Servlet。不过默认是0


Interface ServletContainerInitializer
这个接口以前从来没有接触过,自己不敢妄加猜测,只能在网上找了段相关的信息,
等到用到的时候再仔细研究下。
ServletContainerInitializer也是Servlet3.0新增的一个接口,容器在启动时使用JAR服务API(JARServiceAPI)来发现ServletContainerInitializer的实现类,并且容器将WEB-INF/lib目录下JAR包中的类都交给该类的onStartup()方法处理,我们通常需要在该实现类上使用@HandlesTypes注解来指定希望被处理的类,过滤掉不希望给onStartup()处理的类。
而且该接口是Servlet3.0新规范里面提供的接口,需要在tomcat7.0以上版本才能够得到支持

Interface ServletContext:
method:
setInitParameter()
getInitParameter()
getInitParameterNames()
setAttribute()
getAttribute()
removeAttribute()
getServletInfo()
getAttributeNames()

以前没有了解过的方法:
createListener
createFilter
addListener
addFilter

Interface ServletContextAttributeListener:
主要用于监听ServletContext属性改变的情况。监听的是整个应用的全局有 增加,取代和删除 这三种情况。
方法:
attributeAdded()
attributeRemoved()
attributeReplaced()
这三个方法 分别在属性进行相应操作的时候会执行方法内部的代码。
共有的参数是ServletContextAttributeEvent。可以用过这个event参数来获得发生改变属性的 属性名称,和属性名对应的值。
class ServletContextAttributeEvent:
getName()
getValue()


Interface ServletContextListener

用于监听ServletContext整个生命周期发生的改变
方法:
void contextInitialized(ServletContextEvent sce)
void contextDestroyed(ServletContextEvent sce)
一个是context的初始化一个是context的销毁(关闭应用时候context会销毁)
class ServletContextEvent
通过ServletContextEvent. getServletContext()  就可以获得ServletContext对象。
这样就可以对上下文就行操作了。! 赞。

经过我自己写的小例子测试发现,即使在ServletContextListener的init方法中给ServletContext增加属性的话也会触发ServletContextAttributeListener。去执行其中的
attributeAdded等三个方法。
可见ServletContextAttributeListener和ServletContextListener是同时被容器初始化的。并行的。即使在初始化servletcontext的时候 增加属性也可以被监听。

Interface ServletRequest:
下面的内容是我自己尝试将j2ee的api来翻译成的:
公共接口ServletRequest 定义了一对象能将客户端的请求信息提供给servlet。servlet容器创建了一个ServletRequest对象并且把它作为servlet的service的传递参数。
一个ServletRequest对象提供的数据包括: 参数的名值,属性和input stream。继承ServletRequest接口的类 能够提供一些附加的特殊数据(比如http的 数据就是由HttpServletRequest提供的)
下面一些方法是经常能用到的:
setAttribute(String name,Object obj)
getAttribute(String name)
removeAttribute(String name)
getParameter(String  name)
getParameterValues(String name)
getInputStream()
isSecure()判断是否是https
getServletContext()
getRequestDispatcher()
getDispatcherType() 能够获得dispatcher的类型。ASYNC ERROR FORWARD INCLUDE REQUEST

Interface ServletRequestListener:
void requestInitialized(ServletRequestEvent sre)
void requestDestroyed(ServletRequestEvent sre)

Class ServletRequestEvent:
getServletContext()
getServletRequest()

Interface ServletRequestAttributeListener:
void attributeAdded(ServletRequestAttributeEvent srae)
void attributeRemoved(ServletRequestAttributeEvent srae)
void attributeReplaced(ServletRequestAttributeEvent srae)

Class ServletRequestAttributeEvent:
getName()
getValue()


Interface ServletResponse:
response跟request这对难兄难弟。经常被人传来传去。。。。。苦逼命
ServletResponse主要返回的是OutputStream和getWriter() 回应客户端的请求。
api中的其他方法也主要是围绕这功能来提供的。
method:
getOutputStream()
getWriter()
setContentType()
getContentLength()
getContentType()
这些常用的。  自己还写了一个下servlet下载的代码例子地址: http://ren2881971.iteye.com/admin/blogs/1705163

Interface SessionCookieConfig
这是Servlet3.0新增加的接口
Interface SingelThreadModel
这是Servlet2.4以后就不再建议使用的。


还剩下两个异常类:
1.ServletException;
2.UnavailableException


到此为止javax.servlet 包中的内容都已经看完了。自己没事的时候也可以拿出来复习下。
明天开始着手学习javax.servlet.http中的内容 这个包里的内容平时工作中运用的比较多。

到此为止

分享到:
评论

相关推荐

    Head First Servlet & JSP

    本书以其独特的学习风格,深入浅出地介绍了Servlet和JSP(JavaServer Pages)这两项核心的Java Web开发技术。 Servlet是Java平台上的一个标准API,用于构建动态Web应用程序。它允许开发者通过Java代码来处理HTTP...

    servlet&Jsp核心编程第二版英文版

    《Servlet&JSP核心编程第二版》是一本深入探讨Java Web开发的重要书籍,主要关注Servlet和JSP(JavaServer Pages)这两个核心技术。...这两部分结合,将为读者提供一套完整的Servlet和JSP学习资源。

    Servlet &JSP学习笔记NetBeans源代码

    在学习Servlet时,你将接触到以下几个关键概念: 1. **Servlet生命周期**:Servlet经历初始化、服务和销毁三个阶段,每个阶段都有对应的回调方法。 2. **Servlet配置**:通过web.xml文件或注解来配置Servlet,如设置...

    Servlet&JSP学习笔记源代码

    在"Servlet&JSP学习笔记源代码"中,林信良教授通过实例讲解了这两项技术的基础和进阶知识。这些源代码是在Eclipse集成开发环境中创建的,Eclipse是Java开发的主流工具,支持丰富的插件,使得开发、调试和部署Servlet...

    Servlet&JSP课后习题解答

    Servlet&JSP课后习题解答,有需要的朋友可以下载来参考下。

    JSP&Servlet学习笔记.pdf

    本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。  本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都...

    Servlet&jsp;

    ### Servlet与JSP详解 #### 一、Servlet与JSP概览 Servlet和JSP是构建Web应用的重要技术,尤其在Java开发环境中占有举足轻重的地位。它们由Sun Microsystems(现为Oracle公司的一部分)创建,并在全球范围内广泛...

    Servlet&JSP源代码

    - **会话管理**:学习如何在Servlet和JSP之间共享状态信息,如使用session对象。 - **MVC模式**:尽管不是直接的编程概念,但理解Model-View-Controller模式有助于你更好地组织Servlet和JSP代码。 通过深入学习和...

    head_first_servlet&jsp学习笔记

    【Servlet&JSP基础知识】 ...以上是`head_first_servlet&jsp`学习笔记的主要知识点,涵盖了Servlet和JSP的基础、Web应用架构、MVC模式、会话管理和JSP编程等多个方面,为深入理解和实践Servlet与JSP开发奠定了基础。

    head first servlet&JSP讲解课件java-web

    综上所述,"head first servlet&JSP讲解课件java-web"涵盖了Java Web开发的核心部分,学习者可以通过此课件深入学习Servlet和JSP的各个方面,包括它们的工作原理、编程模式、最佳实践以及如何用它们来构建实际的Web...

    Servlet&JSP;学习笔记源代码

    这份"Servlet&JSP学习笔记源代码"是由林信良编著,提供了丰富的实例代码,旨在帮助学习者深入理解这两种技术。 Servlet是Java编程语言的一个接口,允许Java代码与HTTP服务器进行交互。它扩展了服务器的功能,使得...

    Web应用开发(Servlet&JSP)PDF版

    学习Servlet和JSP时,你需要了解以下几个核心概念: 1. **HTTP协议**:理解HTTP请求和响应的工作方式,这是Servlet处理的基础。 2. **Servlet配置**:学习如何在web.xml文件中配置Servlet,包括URL映射和初始化参数...

    Servlet&JSP-PPT.rar

    综上所述,这个压缩包提供的资料可以帮助我们深入学习和理解Servlet和JSP的基本概念、配置方式以及权限管理。通过实际操作这些文件,开发者可以更好地掌握Java Web开发,并为构建高效、安全的Web应用打下坚实基础。

    Servlet&Jsp技术

    Servlet和JSP(JavaServer Pages)是Java Web开发中的核心技术,用于构建动态网站和Web应用程序。Servlet是Java编程语言中的一个接口,它扩展了服务器的功能,允许开发人员处理HTTP请求和响应。JSP则是一种视图技术...

    Servlet&JSP学习笔记

    ### Servlet&JSP 学习笔记精要 #### 一、Servlet 基础 ##### 1.1 Web 容器 - **概念**: Web 容器是支持 Servlet 和 JSP 运行的基础环境,主要功能是加载和管理 Servlet 实例,处理客户端请求并返回响应。常见的 ...

    J2EE servlet&jsp 练习二答案

    J2EE servlet&jsp 练习二答案 学习使用Session和Cookie 开发一个简单的购物车; 开发一个简单的用户登录提示系统 设定Session生命周期; 开发一个下载文件的Java EE Web应用; 开发一个Session监听器

    JSP&Servlet&JavaScript&Ajax&jQuery源代码

    这些文件名称列表揭示了一个关于Web开发的教程结构,主要涵盖了JSP(JavaServer Pages)、Servlet、JavaScript、Ajax和jQuery这五个关键的技术。接下来,我们将详细探讨这些技术及其在实际应用中的重要性。 **JSP...

    Servlet&Jsp 技术

    Servlet和JSP(JavaServer Pages)是Java Web开发中的核心技术,用于构建动态、交互式的Web应用程序。本资料包涵盖了这两个技术的基本概念、工作原理以及实际应用的源代码,旨在帮助初学者快速理解和掌握Servlet和...

Global site tag (gtag.js) - Google Analytics