继续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(),将值放进去,因为名字是一样的,所以直接覆盖掉。
最新文章
- Android WIFI 分析(二)
- Linux 启动过程分析
- 【C语言】C语言运算符
- 关于 calloc 函数使用 与fun 函数
- mysql 判断表字段或索引是否存在,然后修改
- Editplus 正则表达式 删除含有指定字符串的行 删除注释
- 关于dom节点绑定滑动事件导致浏览器上下滑动失效解决方案--黄丕巧
- Nginx+Tomcat+Memcached 集群
- getgrent
- linux环境中通过/dev/urandom设备产生随机密码
- 图片格式PGM缩写
- Django学习手册 - 自定义分页函数
- python之类
- 转:[C# 开发技巧]如何防止程序多次运行
- Java中泛型Class<;T>;、T与Class<;?>;、 Object类和Class类、 object.getClass()和Object.class
- EntityFrameworkCore操作记录
- [POI2013]Taks&#243;wki
- java socket编程--聊天小案例
- C++/C头文件 .h和 .c
- ZOJ 3537 Cake(凸包判定+区间DP)