zoukankan      html  css  js  c++  java
  • servlet

    servlet 本质是一段java小程序。将servlet加入到servlet容器。

    servlet容器:能够运行servlet的环境(tomcat)

    web容器:能够运行web应用的环境(tomcat)

    开发servlet

    1.写一个sun公司定义的servlet接口

    2.将写好的类配置到tomcat中,并配置web.xml

    FirstServlet.java

    package com.zy;
    import java.io.*;
    import javax.servlet.*;
    public class FirstServlet extends GenericServlet
    {  
        public void service(ServletRequest req, ServletResponse res) throws
            ServletException, java.io.IOException {
            res.getWriter().write("hello Servlet!");
        }
    
    }

    将FirstServlet.java放入web应用下WEB-INF下面的classes目录下

    配置web.xml

    <?xml version="1.0" encoding="ISO-8859-1"?>
    
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
    
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    
        version="2.5">
    
           <servlet>
    
            <servlet-name>FirstServlet</servlet-name>
    
            <servlet-class>com.zy.FirstServlet</servlet-class>
    
        </servlet>
    
           <servlet-mapping>
    
            <servlet-name>FirstServlet</servlet-name>
    
            <url-pattern>/servlet/FirstServlet</url-pattern>  
    
    配置访问的虚拟路径http://localhost/servlet/FirstServlet
    
        </servlet-mapping>
    
    </web-app>

    1.    Servlet的继承结构

           Servlet接口—定义了servlet应该具有的基本方法

                  |

                  |--GenericServlet—通用基本servlet实现,对于不常用的方法在这个实现类中进行了基本的实现,对于service()设计为抽象方法,需要子类去实现

                                |

                                |--httpServlet  在通用servlet的基础上基于http协议进行了进一步的强化,实现了GenericServlet中的Service方法,判断当前的请求方式,调用对应到doXXX方法,这样一来我们开发Servlet的过程中我们只需继承 HttpServlet,覆盖具体要处理的doXXX方法就行了。 不用覆盖父类的service方法

    2.    一个<Servlet>可以对应多个<servlet-mapping>,从而一个servlet可以有多个路径来访问

    3.    url-partten的路径可以使用*匹配符号进行配置,有两种方式:1. /开头 /*结尾  2. *.后缀这两种方式

           由于*的引入,有可能一个路劲被多个url partten匹配,优先级如下:

                  哪个最像找哪个

                  *. 后缀永远优先级最低

    4.    <servlet>里面可以配置<load-on-startup>元素,可以用来指定启动顺序,那么web应用在启动时,就会装载并创建servlet的实例对象、以及调用servlet实例对象的init()方法

    5.    缺省servlet :如果有一个servlet的url-partten被配置为 / ,这个servlet就变成了缺省servlet

    其他servlet都不处理的请求,由缺省servlet来处理,对于静态资源的访问,就是缺省servlet执行的

    404,500等页面的显示也是缺省servlet处理的,通常我们不会配置缺省servlet

    1. 线程安全问题

    由于默认情况servlet在内存中只有一个对象,当多个浏览器并发访问servlet时可能产生线程安全问题

           解决方案:

                  加锁—效率降低

                  Synchonized(this) {

                         锁住的内容

         }

                  SingleThreadModel – 不能真的防止线程安全问题

                  最终解决方案: 在servlet中尽量少用类变量,配合锁使用

                 

  • 相关阅读:
    巧用css实现强制不换行、自动换行、强制换行(转)
    解决IE6最后一行文字溢出
    CSS控制透明度
    中兴ZTEU880刷机
    ADO.NET Entity Framework AtaGlance
    低版本的IE浏览器position:relative跟随滚动条滚动解决方案
    ObjectARX ads_point 和AcGePoint3d 的转化
    ObjectARX代码片段三
    创建AcDb2dPolyline实体
    数据库处理
  • 原文地址:https://www.cnblogs.com/superPerfect/p/4295963.html
Copyright © 2011-2022 走看看