1.web修改项目名称和项目访问名称(项目->myeclipse->web下修改)
2.<servlet-mapping>
<servlet-name>anyName</servlet-name>
<url-pattern>可以书写的形式(1:/anyName 2:/XX.html 3:/*(任意的请求都访问该servlet) 4:*.html(无论哪个html都访问该servlet) 5:/(缺省Servlet,处理servlet请求中所有servlet都不处理的请求))</url-pattern>
</servlet-mapping>
3.为什么web.xml文件发生改动web服务器不需要重新restart,而修改了java类中的某段代码却要重新restartweb服务器呢?
这是因为我们在做开发的时候会给tomcat配置reload属性,当tomcat容器检测到web.xml文件发生改变的时候,tomcat
服务器会自动从新加载,而java中的某段代码的改动不会引起web.xml文件的改变。所以必须要手动重启tomcat
4.针对客户端的多次Servlet请求,通常情况下,Servlet只会创建一个Servlet实例对象,也就是说,sevlet对象一旦被创建,就会驻留在内存中
为后续的其他服务提供请求服务,直至web容器退出,servlet实例才会被销毁。
5.在servlet的整个生命周期里面。servlet只会调用一次init方法。而对servlet的每次请求访问,servlet都会导致servlet引起调用一次其service方法。
对于每次请求访问,Servlet引擎都会创建一个HttpServletRequest对象,携带了客户端的请求信息,还会创建一个新的HttpServletResponse相应对象
然后将这两个对象作为参数传递给它调用的service方法,service方法再根据请求的类型调用doxxx方法进行处理。
6.缺省Serlvet,我们在浏览器中输入http://localhost:8081/1.html此请求时,该请求仍然被转发到web容器serlvet下
web容器会默认的给该资源配置一个缺省servlet,而去查找是否存在该页面,存在则发送该请求的资源给浏览器(tomcat自带缺省servlet)。
7.注意:浏览器请求的任何资源都要经程序(servlet处理)返回(程序发送资源文件)得到。
8.如果某个Servlet涉及到了线程安全问题,可以实现SingleThreadModel接口来实现其单例模式(变为线程安全:每次请求都创建新的对象。所以同一对象中的共享数据不被共享)
9.java还存在一些接口:Cloneable(克隆接口:实现该接口的对象,允许被克隆)、Serializable(序列化接口:内存中的对象可以存储在文件中,和网络中传输)
10.tomcat服务器收到浏览器请求后,会创建httpServletRequest,httpServletResponse,servletConfig(封装了servlet的配置信息),servletContext(代表当前应用),session,cookie对象,然后把这些对象传递给
相应的Servlet进行处理
11.<servlet>
<servlet-name></servlet-name>
<servlet-class></servlet-class>
<init-param>
(可以给每个servlet配置初始化参数.配置完成后,服务器会自动把该参数封装到servletConfig对象中,并且在调用init方法时,该参数被初始化,被封装在ServletConfig中。String name = this.getServletConfig().getInitServletParamter("name"))
<param-name>data</param-name>
<param-data>XXX</param-data>
</init-param>
</servlet>
12.servletContext对象:代表当前整个web应用(用于管理整个web应用)。
可以通过servletContext实现servlet之间的数据传递,所有的servlet都共享一个servletContext对象
获取:this.getServletConfig().getServletContext();或this.getServletContext();
13.ServletContext域对象的应用:(这是一个容器)
通常被称为Context域对象(四大域对象:Context , request , Session , page)。
作用:
1.获取WEB应用的初始化参数
2.实现Servlet的转发
3.利用ServletContext对象读取资源文件(1.得到文件路径 2.读取资源文件 的三种方式 3.properties文件(属性文件))
4.实现Servlet之间的数据共享(聊天室)
*:单一页面之间的数据传递不适用servletContext于来进行实现,而采用request域来进行
<!-- 为所有的Context对象配置初始化参数 -->
<context-param>
<param-name>name</param-name>
<param-value>lijun</param-value>
</context-param>
servletContext管理WEB资源:(常用做配置文件:1.xml文件(数据和数据之间存在关系) 2.properties(数据和数据之间为平行关系)
1.//读取文件,原文件路径:/src/db.properties(这是apache封装的读取默认路径为本资源应用下的文件,根路径为:/ServletStu/webroot/)
InputStream in = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
2.//采用传统文件形式也是能读的。(通常下载的时候时候,能获取到资源文件的名称)
String path = this.getServletContext().getRealPath("/WEB-INF/classes/db.properties");
FileInputStream fin = new FileInputStream(new File(path));
3.如果读取该资源文件的类不是Servlet就只能通过类装载器去读了(因为管理资源的是ServletContext对象,但是ServletContext是属于Action层。)
原文:http://blog.csdn.net/u010218226/article/details/44262483