Servlet学习(一)

来源:互联网 发布:手机听歌软件 编辑:程序博客网 时间:2024/05/21 17:24
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文件的改变。所以必须要手动重启tomcat4.针对客户端的多次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层。)

0 0