Servlet 学习

来源:互联网 发布:福州原子网络传销 编辑:程序博客网 时间:2024/06/08 12:38

平时所用的servlet 都是继承httpservlet,,其实所有的servlet 都是实现的javax.servlet.Servlet 接口。大多servlet 继承genericServlet 

   在printWriter 我们只是调用reponse.getWriter().println  但是没有关闭。因为web容器创建了该资源,也负责关闭了该资源。

web 容器会从scoket 进行处理,读取请求头和参数,然后再发送时,将格式化响应头和主题,写回到套接字。

init方法已经在 GenericServlet 中写好  只调用一次,destory在web程序关闭或卸载项目时立即加载。

getparmeter 获取一个  getparmeters获取所有的第一个值 ,getparmetervalue 获取的是数组形式的。所有参数得到Map<String ,String > 的键值对。用于遍历所有的参数。

在调用getparmeter 时候,、web容器会判断请求是否包含post 变量。他讲读取inputstream j进行读取这些变量,如果这时候我们在调用inputstream getreader 会报错。

线程问题  servlet  ,尽量用局部变量而非实例变量,多个浏览器同时请求一个servlet 时候吗,容易发生线程问题,servlet 的线程问题主要在与自己 的编码,对于servlet 来说,他是无状态的所以是线程安全的。

下每个线程对局部变量都会有自己的一份copy,这样对局部变量的修改只会影响到自己的copy而不会对别的线程产生影响,所以这是线程安全的。

但是对于实例变量来说,由于servlet在Tomcat中是以单例模式存在的,所有的线程共享实例变量。多个线程对共享资源的访问就造成了线程不安全问题

尽量不适用局部变量即可尽可能避免了线程安全 的问题。





0 0
原创粉丝点击