• 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中尽量少用类变量,配合锁使用

                 

  • 相关阅读:
    A1023 Have Fun with Numbers (20分)(大整数四则运算)
    A1096 Consecutive Factors (20分)(质数分解)
    A1078 Hashing (25分)(哈希表、平方探测法)
    A1015 Reversible Primes (20分)(素数判断,进制转换)
    A1081 Rational Sum (20分)
    A1088 Rational Arithmetic (20分)
    A1049 Counting Ones (30分)
    A1008 Elevator (20分)
    A1059 Prime Factors (25分)
    A1155 Heap Paths (30分)
  • 原文地址:https://www.cnblogs.com/superPerfect/p/4295963.html
Copyright © 2020-2023  润新知