`
glacier3
  • 浏览: 384198 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

对petsore的ControllerServlet类的分析

阅读更多

     最近看看了PETSTORE2.0的一些代码,发现有很多东西值得学习。

      下面我来分析一下ControllerServlet这个SERVLET,它位于com.sun.javaee.blueprints.petstore.controller包之中。它的作用是根据请求的SERVLET的URi完成不同的特定功能,我只看了产生随机图片的那个调用。

代码如下:

  1.    
  2. /**  
  3.  * This servlet is responsible for interacting with a client  
  4.  * based controller and will fetch resources including content  
  5.  * and relevant script.  
  6.  *  
  7.  * This servlet also will process requests for client ob
  8. servers  
  9.  */  
  10. public class ControllerServlet extends HttpServlet {   
  11.        
  12.     private static final boolean bDebug=false;   
  13.     private HashMap<String, ControllerAction> actionMap = new HashMap<String, ControllerAction>();   
  14.        
  15.     @Override    
  16.     public void init(ServletConfig config) throws ServletException {   
  17.         super.init(config);   
  18.         ServletContext context = config.getServletContext();   
  19.         CatalogFacade cf = (CatalogFacade) context.getAttribute("CatalogFacade");   
  20.         actionMap.put("/ImageServlet"new ImageAction(context));   
  21.         actionMap.put("/controller"new DefaultControllerAction(context));   
  22.         actionMap.put("/faces/CaptchaServlet"new CaptchaAction());   
  23.         actionMap.put("/TagServlet"new TagXmlAction(cf));   
  24.         actionMap.put("/catalog"new CatalogXmlAction(cf));   
  25.     }   
  26.        
  27.     public ControllerAction findAction(String servletPath) {   
  28.         return actionMap.get(servletPath);   
  29.     }   
  30.     @Override    
  31.     public void destroy() {   
  32.         actionMap = null;   
  33.     }   
  34.        
  35.     @Override    
  36.     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   
  37.         String servletPath = request.getServletPath();   
  38.         if(bDebug) System.out.println(" ServletPath: " + servletPath + ", pathinfo: " + request.getPathInfo());   
  39.         ControllerAction action = actionMap.get(servletPath);   
  40.         if (action != null) {   
  41.             if(bDebug) System.out.println(" Found action " + action.getClass().getName());   
  42.             action.service(request, response);   
  43.         } else {   
  44.             PetstoreUtil.getLogger().log(Level.SEVERE, "Servlet '" + request.getServletPath() + "' not registered in ControllerServlet!!");   
  45.             HttpServletResponse httpResponse=(HttpServletResponse)response;   
  46.             httpResponse.sendError(HttpServletResponse.SC_NOT_FOUND);   
  47.         }   
  48.     }   
  49. }   

它的运作流程可以很容易的看出来:首先SERVLET加载入所有需要处理的servlet URI,把他们都存入一个HASHmAP当中,然后在DOGET中,读取请求的SERVLET的RUI,得到特定的URI后就进行相应的操作。

 

分享到:
评论

相关推荐

    原生Servlet与Spring Controller性能比较--Servlet项目

    本文将深入探讨原生Servlet与Spring Controller在性能方面的差异,并基于一个名为"AbTest"的Servlet项目源码进行分析。 首先,原生Servlet是Java EE规范的一部分,它提供了一个基础的接口,用于接收和响应HTTP请求...

    原生Servlet与Spring Controller性能比较--Controller项目

    本篇文章将深入探讨原生Servlet与Spring Controller在性能方面的差异,并以"Controller项目"为例进行分析。 Servlet是Java EE规范的一部分,它提供了一个标准的方式来处理HTTP请求和响应。原生Servlet直接继承自`...

    javaee_servlet类结构图

    这是对javaee 中servlet编程中涉及到的类的总体布局联系图,有了它可以帮你清楚的了解servlet的总体布局。希望能够帮到你!

    servlet帮助文档

    当Web服务器接收到对Servlet的首次请求时,它会加载Servlet类并创建一个Servlet实例。接着,调用Servlet的`init()`方法进行初始化。在服务阶段,每次请求都会导致`service()`方法被调用,该方法根据请求类型分派到`...

    java web servlet jstl 对 dept 及emp 表 进行 对 emp表 进行 增删改查

    java web servlet jstl 对 dept 及emp 表 进行 对 emp表 进行 增删改查 用 封装 继承 多态的方式 ,实现该功能 分层开发: entity 实体层 service 业务层接口及实现类 util 工具类 controller Servlet 充当

    servlet用到的类

    10. **DispatcherServlet**:Spring MVC框架中的核心组件,它是一个通用的Servlet,负责调度请求到对应的处理器(Controller),并处理结果。 在实际开发中,我们通常会结合Servlet与MVC模式、Filter、Session、...

    Servlet详细讲解(案例分析)

    Servlet详细讲解资料,包含案例分析,还有其他知识需求可以私信我!

    魔乐学习servlet

    当服务器接收到对Servlet的第一次请求时,会加载Servlet类并创建一个Servlet实例,然后调用`init()`方法进行初始化。在服务阶段,Servlet通过`service()`方法处理来自客户端的每个请求。最后,当服务器关闭或Servlet...

    servlet的小demo

    Servlet是Java Web开发中的核心组件,用于接收和处理客户端(如浏览器)的HTTP请求,并返回响应。这个"Servlet的小demo"应该是...为了深入理解,你可以查看源代码,分析其中的逻辑,这将有助于巩固Servlet的基础知识。

    S06-tomcat之servlet内存马1

    "S06-tomcat之servlet内存马1" 在 Tomcat 中,Servlet 内存马是一种特殊的 Servlet,它可以动态注册 ...本文对 Servlet 内存马的工作原理和实现机制进行了详细的分析和解释,并对其实现机制进行了详细的分析和解释。

    servlet api servlet api

    - 加载与实例化:当服务器接收到对Servlet的首次请求时,会加载Servlet类并创建其实例。 - 初始化:创建实例后,调用`init()`方法进行初始化,通常用来配置Servlet。 - 服务:每当服务器接收到对Servlet的新请求...

    servlet笔记,servlet的总结

    Servlet在MVC(Model-View-Controller)架构中扮演控制器(Controller)的角色,负责接收请求、调用模型层处理数据并选择适当的视图呈现结果。这种模式分离了业务逻辑、数据处理和用户界面,提高了代码的可维护性和...

    servlet_src-my.zip

    6. **过滤器(Filters)和监听器(Listeners)**:这些都是Servlet API中的重要组件,可以对请求和响应进行预处理或后处理,或者监听某些特定的Web事件。 7. **测试类**:源码可能还包含JUnit或其他测试框架的测试...

    Servlet框架基本源码

    虽然Servlet本身不强制使用特定的架构模式,但在实际开发中,常常与Model-View-Controller(MVC)模式结合,其中Controller由Servlet承担,负责接收请求、处理业务逻辑、调用模型并更新视图。 8. **现代Servlet...

    servlet分发控制器

    总结,`servlet分发控制器`是Java Web开发中的重要概念,它通过Controller.java类的`doProcess`方法实现了对HTTP请求的处理和分发,使得应用的结构更加清晰,提高了代码的可维护性和复用性。在实际开发中,我们可以...

    Servlet技术入门教学

    虽然Servlet可以单独使用,但现代Web开发通常使用MVC(Model-View-Controller)框架,如Spring MVC,它们在Servlet之上提供更高层次的抽象,简化开发过程。 通过学习Servlet,开发者可以构建功能丰富的动态Web应用...

    javax.servlet jar包---解决找不到javax.servlet.*等问题

    - `GenericServlet`: 一个抽象Servlet类,实现了Servlet和ServletConfig接口,提供了一种通用的方法来处理多种协议。 - `HttpServlet`: 继承自GenericServlet,专门用于处理HTTP请求,提供了处理GET、POST等HTTP...

    servlet document

    9. **MVC模式与Servlet**:虽然Servlet主要用于处理请求,但通过组合Servlet、JSP和JavaBeans,可以实现Model-View-Controller(MVC)设计模式,提高代码的可维护性和可扩展性。 10. **部署与容器**:Servlet通常在...

    java基于jsp+servlet+javaBean实现MVC.zip

    &lt;servlet-name&gt;ControllerServlet&lt;/servlet-name&gt; &lt;servlet-class&gt;com.example.ControllerServlet&lt;/servlet-class&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;ControllerServlet&lt;/servlet-name&gt; ...

    servlet内存驻留验证

    2. `src`:存放源代码的目录,可能包含了Servlet的实现类和其他相关的Java类。 3. `.project`:Eclipse项目配置文件,描述项目的属性和构建信息。 4. `WebRoot`:Web应用的根目录,包含了HTML、CSS、JavaScript、...

Global site tag (gtag.js) - Google Analytics