Servlet

来源:互联网 发布:淘宝店铺为什么被屏蔽 编辑:程序博客网 时间:2024/05/17 13:44
Web容器:Web服务器和Servlet引擎。
Web容器与Servlet之间的通信不是“一手交钱一手交货”,而是像地下党交换情报,如放在树洞里。而这样就有一种被敌人提前窃取的可能性。Web容器与Servlet的通信就是通过HttpServletRequest和HttpServletResponse对象。这时我们将Filter程序想象成是截获情报的敌人,这时就很好理解Filter程序是如何截获并修改请求消息和响应消息的原理了。


哪些情况下要考虑线程安全问题?
在Servlet程序需中除了访问成员变量时要注意线程安全问题,访问其他共享资源时也要注意线程安全问题。例如,Web应用程序对象,Session对象,数据库等都可能涉及多个Servlet线程同时访问的问题。如果Servlet中没有定义成员变量和service方法中没有访问无同步访问控制的共享数据时,即使多个线程并发调用service方法,也不会存在任何线程安全问题。


Servlet容器:Servlet程序是发布到Web应用程序中运行的,此Web应用程序就称之为Servlet容器。
获取web.xml中Servlet的参数和Servlet的名字的方法可以使用ServletConfig接口中的getInitParameterNames、getInitParameter、getServletName方法。
GenericServlet类实现了ServletConfig接口。所以这可以将上面那些方法简写下了,以前是
String servletName = getServletConfig().getServletName();现在就可以直接String servletName = getServletName();


回调方法:对于永远做组件或插件的类需要编写一些供系统调用的方法,专门用于被系统调用的方法被称之为回调方法,也就是回过来被系统调用的方法。
Servlet是一个要被容器调用的组件类,它的运行过程由Servlet容器控制和调度。Servlet接口中定义的所有方法都是回调方法,这些方法定义了Servlet容器和Servlet程序之间通信的协议规定,专门被Servlet容器调用。
GenericServlet和HttpServlet类中的回调方法是供容器调用的方法,可以在子类中进行覆盖,而不能在程序代码中直接调用。