zoukankan      html  css  js  c++  java
  • 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.32libservlet-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("/相对路径")

  • 相关阅读:
    screen命令
    完全背包问题
    01背包问题
    数组排序使得数组负数在正数左边且按照原来的顺序
    Git 后悔药系列
    Nacos作为注册中心和配置中心
    JDK15都出了,你确定不来了解下JDK8吗?
    WPF创建一个凹凸效果的边框
    vue---splitpane分割
    列表实现拖拽
  • 原文地址:https://www.cnblogs.com/FlySheep/p/3402771.html
Copyright © 2011-2022 走看看