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层。)
时间: 2024-11-05 06:49:56