`
lgl669
  • 浏览: 173812 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java Servlets(二)

    博客分类:
  • java
阅读更多

1.创建servlet对象(通过load-on-startup来决定在什么时候被创建);
2.当servlet对象被创建成功以后,容器马上会调用它的有参的init方法---init只被调用一次;
3.服务客户端请求,客户端发起一个请求,容器就会调用servlet的service方法,并且传入ServletRequest,
ServletResponse对象;------service方法可以被调用多次;
4.当容器关闭或则应用被卸载的时候,servlet对象会被销毁,在销毁之前容器会调用destroy方法,
----destroy只被调用一次;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Datasource中存放的是collection;可以通过new来新建一个,也可以在目录服务器中通过JNDI获取;
跳转:内部跳转和外部跳转;最大区别:请求是否是同一个;
cookie&session:记录用户相关状态;最大区别:存放的位置不同;session可以存放对象.cookie不可以;
JSESSIONID一般是通过cookie写入客户端,如果关闭cookie则不能使用session;所以还有另外的方法;
URL重写:
<a href=state/modifyRelease;jsessionid=XXXXXXXX>modifyRelease</a>
------------------------------------------------------------------------------------------
req.getSession()
从request对象中获取jsessionid,如果根据这个jsessionid找不到一个对应的session
对象,则创建一个新的session对象返回,如果能找到则返回找到的session对象;
req.getSession(boolean create)
如果create为true,等价于req.getSession();
如果create为false,根据request对象传过来的jsessionId查找对应的session对象,如果能找到则返回
找不到则返回null;
六、request、session、application
request生命周期:生于容器接收到请求,死于servlet产生响应;
session生命周期公司
创建:客户端访问一个servlet,在servlet中调用了req.getSession方法;
销毁:1.关闭浏览器进程;
     2.session过期;(在web.xml中指定<session-timeout>10</session-timeout>10钟后过期)
     3.调用session.invalidate()方法;
不建议将大量数据放在内存中,这样会比较消耗服务器内存的;
requestScope=====>HttpServletRequest对象  (Scope:作用范围)
request.setAttribute(name,value)
Object value=request.getAttribute(name);
request.removeAttribute(name)
sessionScope=====>HttpSession对象
session.setAttribute(name,value)
Object value=session.getAttribute(name)
session.removeAttribute(name)
applicationScope=====>ServletContext对象
对于一个应用来说ServletContext对象是唯一的,存放所有用户登陆的共用信息;
创建:应用装载的时候
销毁:应用卸载的时候
sc.setAttribute(name,value)
Object value=sc.getAttribute(name)
sc.removeAttribute(name)
七、Filter:过滤器
对服务器上的特定资源采取措施,进行限制
Filter的应用:延迟登录、编码转换、审计......
Filter的使用步骤:
  1)写Filter类
     implements javax.servlet.Filter接口
     重写Filter接口中的方法init(FilterConfig),
     doFilter(ServletRequest,ServletResponse,FilterChain) , destroy()
  2)在web.xml中进行配置
    <filter>
<filter-name> 自己取,但要和<filter-mapping>中的对应 <filter-name>
<filter-class> Filter类的全限定名 </filter-class>
<init-param>

<param-name>...</param-name>
<param-value>...</param-value>
<init-param>
    </filter>
    在程序中通过FilterConfig.getInitParameter("name")取
    <filter-mapping>
<filter-name> 和<filter>中的对应 </filter-name>
<url-pattern> Filter所限制访问的资源路径 </url-pattern>
    </filter-mapping>
    比如我们将<url-pattern>设为/ch5/*,那么我们在浏览器中访问/ch5下的
    资源时Filter就会自动被调用
Filter的生命周期:
  1)init(FilterConfig)
    由容器调用,并且只调用一次
  2)doFilter(ServletRequest,ServletResponse,FilterChain)
    访问限定资源时,被调用,会被调用多次,注意考虑多线程问题,
    处理方式和Servlet中的一样
  3)destroy()
    由容器调用,并且只调用一次
  FilterChain.doFilter(ServletRequest,ServletResponse):可以认为是处理请求和
  响应的分界限,在chain.doFilter(...)之前处理请求,在chain.doFilter(...)之后
  处理响应
  注意:一旦写了Filter一定要在Filter.doFilter(...)中调用FilterChain.doFilter()
  方法,将请求交由其他资源继续处理
编码转换:
  request.setCharacterEncoding("UTF-8");
  chain.doFilter(request, response);
  response.setCharacterEncoding("UTF-8");
  过滤的url: /*
  相同的资源可以被多个Filter过滤,Filter的执行顺序取决于web.xml中配置的
  <filter-mapping>的顺序
八、监听器
监听器,对特定事件所采取的控制
常见事件:应用服务器的启动/关闭,会话的创建/删除,请求的创建/删除,属性的增加、替换、删
除等
Listener分类
应用级别:
ServletContextListener:
void  contextDestroyed(ServletContextEvent sce):监听应用服务器的关闭
void  contextInitialized(ServletContextEvent sce): 监听应用服务器的启动
ServletContextAttributeListener:
void  attributeAdded(ServletContextAttributeEvent scab):
监听应用级别属性的增加,即ServletContext.setAttribute("user","briup")
void  attributeRemoved(ServletContextAttributeEvent scab):
监听应用级别属性的删除,即ServletContext.removeAttribute(...)
void  attributeReplaced(ServletContextAttributeEvent scab):
监听应用级别属性的替换,即使ServletContext.setAttribute("user","ibm")
会话级别:
HttpSessionListener
void  sessionCreated(HttpSessionEvent se):监听会话的创建
如,HttpServletRequest.getSession()
void  sessionDestroyed(HttpSessionEvent se):监听会话的删除
如,HttpSession.invalidate()
HttpSessionAttributeListener
void  attributeAdded(HttpSessionBindingEvent se)
监听会话级别属性的增加,即HttpSession.setAttribute(...,...)
void  attributeRemoved(HttpSessionBindingEvent se)
监听会话级别属性的删除,即HttpSession.removeAttribute(...)
void  attributeReplaced(HttpSessionBindingEvent se)
监听会话级别属性的替换,即HttpSession.setAttribute(...,...)
请求级别:
ServletRequestListener
void  requestDestroyed(ServletRequestEvent sre):监听请求的删除
void  requestInitialized(ServletRequestEvent sre):监听请求的创建
ServletRequestAttributeListener
void  attributeAdded(ServletRequestAttributeEvent srae)
监听请求级别属性的增加,即HttpServletRequest.setAttribute(...,...)
void  attributeRemoved(ServletRequestAttributeEvent srae)
监听请求级别属性的删除,即HttpServletRequest.removeAttribute(...)
void  attributeReplaced(ServletRequestAttributeEvent srae)
监听请求级别属性的替换,即HttpServletRequest.setAttribute(...)
注:Listener程序不需要我们去调用,它由相应的事件触发执行
配置文件中:<listener>
   <listener-class>ch07.ContextListener</listener-class>
      </listener>

分享到:
评论

相关推荐

    JavaServlets帮助文档

    JavaServlets帮助文档JavaServlets帮助文档JavaServlets帮助文档JavaServlets帮助文档JavaServlets帮助文档JavaServlets帮助文档JavaServlets帮助文档

    Murach's Java Servlets and JSP 2nd Edition 源代码

    《Murach's Java Servlets and JSP 2nd Edition》是一本深受欢迎的Java Web开发教程,涵盖了使用Servlets和JSP进行动态网页编程的核心知识。源代码是学习过程中的重要辅助材料,它能帮助读者深入理解书中的实例,...

    Java Servlets和java swing

    Java Servlets和Java Swing是Java开发中的两个重要技术领域,分别用于Web服务器端和桌面应用程序的开发。 **Java Servlets** Java Servlets是Java平台上用于扩展Web服务器功能的Java类。它们是Java EE(企业版)的...

    Java.Servlets.编程指南.zip

    Java Servlets是Java EE平台中的一个核心组件,用于构建动态Web应用程序。Servlets是一个服务器端的Java类,它扩展了Web服务器的功能,使得服务器能够处理HTTP请求并返回响应。本编程指南将深入探讨Java Servlets的...

    Murach's Java Servlets and JSP, 2nd Edition.文字版--part2

    Murach's Java Servlets and JSP, 2nd Edition.高清文字版,并加入了书签--part2

    Java Servlets编程指南

    Java Servlets编程指南

    Murach's Java Servlets and JSP, 2nd Edition.文字版--part1

    Murach's Java Servlets and JSP, 2nd Edition.高清文字版,并加入了书签--part1

    Java.Servlets编程指南

    第1章 servlet概述第2章 Java Web服务器第3章 第一个servlet 第4章 servlet链第5章 servlet-side Includes 第6章 会话管理第7章 安全性 第8章 HTML表单第9章 在servlet中使用JDBC 第10章 applet与servlet的通信第11...

    Murach-s-Java-Servlets-and-JSP, 3rd.pdf

    Murach's Java Servlets and JSP, 3rd Very good introduction on servlet and jsp.

    Java Servlets 参考大全源代码

    这个压缩包文件集合包含了一系列与Java Servlets相关的源代码示例,覆盖了多个章节,从基础到进阶,帮助开发者深入理解并实践Servlets编程。 首先,我们来看看每个章节的主题可能涉及的知识点: 1. **chapter05....

    Static Analysis for Java Servlets and JSP.pdf

    ### 静态分析在Java Servlets与JSP中的应用 #### 概述 本文档主要探讨了如何通过静态分析技术来确保基于Java Servlets和JSP开发的Web应用程序的行为符合预期。具体而言,该研究关注于两个核心问题:一是确保所有...

    Java Servlets编程指南,相当不错的sservlets入门教程.rar

    本教程的压缩包文件"JavaServlets_shishuo.chm"很可能包含了详细的章节,讲解了上述知识点。通过阅读,你将能够理解和实践Servlets编程,为Java Web开发打下坚实基础。建议结合实际项目进行学习,以便更好地理解和...

    Murach's Java Servlets And JSP 2nd Edition

    ### Murach's Java Servlets and JSP 第二版 关键知识点概述 #### 一、绪论:Java Web 开发入门 - **Java Web 开发概述**:本书首先介绍了使用 Java 进行 Web 开发的基本概念,包括 Java 在 Web 开发中的角色以及...

    Java_for_the_Web_with_Servlets

    ### Java for the Web with Servlets: A Comprehensive Overview #### Introduction "Java for the Web with Servlets, JSP, and EJB: A Developer’s Guide to J2EE Solutions" by Budi Kurniawan is a ...

    Java开发指南-Servlets和JSP篇下载

    Java开发指南-Servlets和JSP篇是一份深入讲解Java Web开发的重要资料,主要涵盖了Servlets和JSP(JavaServer Pages)这两个核心技术。在Web应用开发领域,Servlets和JSP是构建动态网站和Web服务的基石,尤其对于后端...

Global site tag (gtag.js) - Google Analytics