zoukankan      html  css  js  c++  java
  • Servlet细节

    修改发布到tomcat/webapps下面的应用名称:Web Project Settings。

    修改或删掉Servlet,web.xml里面相关的配置不会与之同步。

    Servlet的实现类:

    1.GenericServlet:覆写感兴趣的方法,一般情况下,只需要覆写service方法。

    2.在web开发中,由于使用http协议,程序员在编写servlet时,一般都是继承GenericServlet的子类HttpServlet。

    在HttpServlet中覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET方式,则调用doGet方法 ,如为post方式,则调用doPost方法。因此,在开发中,我们完全没有必要覆写service方法,直接根据请求方式覆写对应的doGet和doPost方法即可。

    3.HttpServlet在调用doGet和doPost方法之前(service方法中),会将ServletRequest和ServletResponse对象强转成HttpServletRequest和HttpServletResponse。

    src目录下面各种类型的文件都会发布到WEB-INF目录下面的classes文件夹下面。

    Servlet映射

    url-pattern用于指定供外界访问的路径或资源名,"/"表示web应用

    Servlet映射到的URL中也可以使用*通配符,但是只能有两种固定的格式:① "*.扩展名" ② 以"/"开头并以"/*"结尾

    such as:

    <url-pattern>/itcast/*</url-pattern>

    <url-pattern>*.do</url-pattern>

    注意:

    *.do 与 /*这两种方式不可同时使用

    针对于满足多个条件的访问路径时,只会访问一个Servlet,此时会访问路径最相仿的那个,同时,/*的优先级要高于*.do

    默认的Servlet映射

    <url-pattern>/</url-pattern>

    load-on-startup元素

    servlet 元素中配置此元素,会在web应用加载时实例化并调用其init()方法,数字越小就越先完成初始化,当值小于0或者没有指定时,表示容器在该servlet被选择时才会去加载。

    tomcat\conf\web.xml

    该服务器下所有的web应用中的web.xml都继承自此文件

    http://localhost:8080/day05/a.html

    上面的url访问的url在web.xml文件中并没有配置

    此时会去访问缺省的Servlet,在tomcat\conf\web.xml文件中配置了一个缺省的DefaultServlet,它会帮我们去web应用下读取a.html文件,并打给浏览器,如果没有发送404页面,也就是说通过IE访问服务器访问的都是Servlet。

    Servlet 线程安全问题

    方法的局部变量不会有线程安全问题!

    Servlet 创建之后驻留在内存中 所以会出现线程安全问题!

    同步的解决方案:对方法的执行过程进行加锁 synchronized(this) {};

    实现接口的解决方案:实现 SingleThreadModel 接口的 Servlet ,服务器会做判断,当有请求过来,如果 Servlet 对象忙,服务器会再创建一个 Servlet 对象为用户提供服务,如果 Servlet 闲置,就直接提供服务,这样的方式实际上是回避了线程安全问题,单线程访问Servlet,这样的方式不可取。

  • 相关阅读:
    C++调用dll
    地图匹配技术在车载导航系统中的应用
    卡尔曼滤波器原理说明
    SharePoint 2010 托管元数据批量操作小工具
    SharePoint 常用开发工具
    tagMapping 在SharePoint中的应用
    SharePoint 2010 通配符搜索
    SharePoint 2010 一步步创建发布式站点 创建母版页二
    为SharePoint 文档库图片创建缩略图
    在Visual Studio 2010 快速查找Assembly 信息
  • 原文地址:https://www.cnblogs.com/Knuth/p/2471675.html
Copyright © 2011-2022 走看看