Servlet总结

一、第一个Servlet的编写过程 (不用开发工具)

1、建立JavaWeb应用的目录  

    HelloServlet-----应用名称   

      WEB-INF--------   

         classes:Servlet就放在此处    

         lib    

         web.xml

2、在classes目录中建立Servlet类

   一个Servlet必须直接或间接地实现javax.servlet.Servlet接口  

  一般我们选择继承javax.servlet.GenericServlet或者javax.servlet.http.HttpServlet

3、编写Servlet类  

	package com.itheima;
	import java.io.*;
	import javax.servlet.*;
	//第一个Servlet
	public class HelloServlet extends GenericServlet{

		public void service(ServletRequest req, ServletResponse res) throws ServletException, java.io.IOException{
			//向客户端输出数据
			String data = "Hello Heima";
			OutputStream out = res.getOutputStream();
			out.write(data.getBytes());
		}
	}

4、编译Servlet类  

  编译需要用到servlet-api.jar(在Tomcat的lib目录中)  

  4.1设置classpath:set classpath=%classpath%;C:\apache-tomcat-6.0.32\lib\servlet-api.jar  

  4.2因为带包名,进入classes目录,使用以下命令进行编译  javac -d . HelloServlet.java

5、配置Servlet的访问路径映射

   对于JavaWeb应用的配置都在web.xml中,在web.xml中增加以下配置:

    <servlet>
        <servlet-name>HelloServlet</servlet-name><!--制定一个Servlet名称-->
        <servlet-class>com.itheima.HelloServlet</servlet-class><!--制定对应的Servlet类,用类的全名-->
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/Hello</url-pattern><!--用户访问的映射路径-->
    </servlet-mapping>

6、访问:  http://localhost:8080/HelloServlet/Hello

二、Servlet规范提供了两个Servlet接口的默认实现

1、GenericServlet:通用的(默认的)的跟协议无关的实现

2、HttpServlet:跟HTTP协议有关的Servlet默认实现。我们编写的Servlet一般只需要继承该类即可

三、编写Servlet时一般需要继承HttpServlet。

1、不要覆盖service方法,默认实现中提供了一些标准的内容

2、应该覆盖掉doXXX方,因为默认实现给了一个错误的提示

四、利用MyEclipse可以直接创建Servlet。

模板生成了太多东西,修改模板方法:

1、MyEclipse6.6:打开MyEclipse的安装目录,搜索Servlet.java的文件,该文件即为模板文件。

2.MyEclipse8.5:打开MyEclipse的安装目录,搜索com.genuitec.eclipse.wizards_8.5.0.me201003052220.jar。 打开其中的templates找到Servlet.java文件

3、修改Servlet.java模板文件(停掉MyEclipse,注意备份)

五、Servlet映射

可以使用通配符* 两种格式: (1)*.扩展名(注意*前面没有其他内容)(2) /abc/*(注意以*结尾,以/开头)

六、如果请求的资源在应用的web.xml中找不到对应的url-pattern映射,会交由缺省的Servlet处理。

缺省的Servlet的url-pattern的值为"/"。

在Tomcat的conf/web.xml中已经配好了一个缺省的Servlet。

当请求HTML或其他静态资源时,实际上都是有缺省的Servlet进行处理的。

七、Servlet的生命周期

1、Servlet在默认情况下,第一访问时容器才会创建它的实例,并驻留内存

2、要想在容器启动时就实例化Servlet对象,可以做以下配置 :

<servlet>
	<servlet-name>ServletDemo1</servlet-name>
	<servlet-class>com.itheima.ServletDemo1</servlet-class>
	<load-on-startup>2</load-on-startup>
</servlet>

<load-on-startup>的取值说明了启动顺序

 八、ServletConfig对象

1、作用:获取为Servlet配置的初始化信息。

  可以在web.xml的<servlet>元素中通过<init-param>为Servlet制定初始化的参数

2、ServletConfig对象在实例化Servlet对象时由容器传递给Servlet。通过ServletConfig对象的getInitParameter(String paramName)就可以获得web.xml中针对该Servlet的配置参数的值。或者使用getInitParameterNames获取所有的初始化参数

九、ServletContext对象

1、作用:JavaWeb应用的一个全局对象,一个应用只有一个ServletContext对象。在应用启动时,容器就会创建该对象

2、获得ServletContext对象的引用:  

  2.1ServletConfig.getServletContext()  

  2.2从HttpServlet类中继承的方法getServletContext()也可以获得

3、根据ServletContext特点,可以将该对象看做是整个web应用的总管家

4、应用  

  4.1实现多个Servlet之间的数据共享  

  4.2配置web应用的全局参数  

  4.3实现Servlet的转发   

      转发的特点:    

      1、请求的地址栏的地址不变    

      2、两者共享request和response对象    

      3、转发前和转发后页面上的内容都不会输出  

  4.4ServletContext读取资源配置文件   

    1、getRealPath:获取指定相对路径资源的绝对路径。相对路径必须以"/"开头   

    2、读取classes目录中的配置文件:    

      a、利用ClassLoader.getResourceAsStream():不适合加载很大的配置文件    

      b、利用ServletContext.getRealpath("/相对路径")   

    3、读取非classes目录中的配置文件    采用利用ServletContext.getRealpath("/相对路径")

posted @ 2013-11-01 21:07  yly123  阅读(294)  评论(0编辑  收藏  举报