zoukankan      html  css  js  c++  java
  • 继续servlet理论篇

    唉,毕业是件很麻烦的事情,实习也是一件很郁闷的事情,现在公司很注重基础,所以 所以还要看java,不过,我年轻,我有激情。来吧,来着不惧,说这话,有些心虚。

    HttpServlet类中所提供的doGet和doPost等方法没有写任何有用信息,都只是直接返回错误信息,所以,我么需要在自己定义的servlet类中重写(override)这些方法。

    1.servlet的响应客户请求阶段:

      对于到达servlet容器的客户请求,servlet容器创建特定于这个请求的servletRequest对象和servletResponse对象,然后调用servlet的service方法,service方法从servletRequest对象中获取用户信息。处理该请求,并通过servletResponse对象向客户返回响应结果供用户查看

    2.hashtable和hashmap在servlet中应用

    getParameter使用的是hashtable

    setAttribute和getAttribute使用的是hashmap

    hashtable是线程同步的(即读写同步)线程安全

    hashmap是非同步的,即线程不安全

    3.servlet的终止阶段:

    a.web应用程序终止

    b.servlet容器重新加载servlet的新实例(例如servlet类被修改则为重新加载)

    c.servlet终止运行

    这三种终止运行时,都会先调用destory方法,释放servlet所占用的资源

    servletContext和web应用关系

       当servlet启动外部应用时,他会为每个web应用创建唯一的servletContext对象(服务器端创建),你可以把servletContext看成是一个web应用的服务器组件的共享内存,在servletContext中可以存放共享数据,他提供了读取或设置共享数据的方法

    servletContext对象具有的方法:

    --setAttribute(String name,Object o)把一个对象和一个属性名绑定,将这个对象存储在servletContext中

    --getAttribute(string name)根据指定的属性名返回绑定的对象

    在doGet方法中,要使用servletContext,首先要用req.getSession().getServletContext()方法获取,是获取http内部的session

      servlet/jsp是多线程执行,在多线程执行出现bug是很难重现的。原因:servlet是单实例的,多个访问公用一个成员变量。当多个用户同时访问的时候,在后台去处理用户请求才会给予响应,在相应处理之后,setAttribute(),将值放进去,因为名字是一样的,所以直接覆盖掉。

  • 相关阅读:
    0 RabbitMQ概念
    java 排序
    spring整合redis(基于redisTemplate)
    http之content-type
    http协议讲解
    Java8 lambda 以及 Lambda在集合中的使用
    java中decimalFormat格式化数值
    找出占用的端口进程ID,并且杀死该进程
    CSS
    标签
  • 原文地址:https://www.cnblogs.com/feiguo/p/3801777.html
Copyright © 2011-2022 走看看