码迷,mamicode.com
首页 > 其他好文 > 详细

Servlet学习(一)

时间:2015-03-15 09:36:57      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:servlet

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层。)
			

Servlet学习(一)

标签:servlet

原文地址:http://blog.csdn.net/u010218226/article/details/44262483

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!