最近看看了PETSTORE2.0的一些代码,发现有很多东西值得学习。
下面我来分析一下ControllerServlet这个SERVLET,它位于com.sun.javaee.blueprints.petstore.controller包之中。它的作用是根据请求的SERVLET的URi完成不同的特定功能,我只看了产生随机图片的那个调用。
代码如下:
-
-
-
-
-
-
-
-
- public class ControllerServlet extends HttpServlet {
-
- private static final boolean bDebug=false;
- private HashMap<String, ControllerAction> actionMap = new HashMap<String, ControllerAction>();
-
- @Override
- public void init(ServletConfig config) throws ServletException {
- super.init(config);
- ServletContext context = config.getServletContext();
- CatalogFacade cf = (CatalogFacade) context.getAttribute("CatalogFacade");
- actionMap.put("/ImageServlet", new ImageAction(context));
- actionMap.put("/controller", new DefaultControllerAction(context));
- actionMap.put("/faces/CaptchaServlet", new CaptchaAction());
- actionMap.put("/TagServlet", new TagXmlAction(cf));
- actionMap.put("/catalog", new CatalogXmlAction(cf));
- }
-
- public ControllerAction findAction(String servletPath) {
- return actionMap.get(servletPath);
- }
- @Override
- public void destroy() {
- actionMap = null;
- }
-
- @Override
- public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- String servletPath = request.getServletPath();
- if(bDebug) System.out.println(" ServletPath: " + servletPath + ", pathinfo: " + request.getPathInfo());
- ControllerAction action = actionMap.get(servletPath);
- if (action != null) {
- if(bDebug) System.out.println(" Found action " + action.getClass().getName());
- action.service(request, response);
- } else {
- PetstoreUtil.getLogger().log(Level.SEVERE, "Servlet '" + request.getServletPath() + "' not registered in ControllerServlet!!");
- HttpServletResponse httpResponse=(HttpServletResponse)response;
- httpResponse.sendError(HttpServletResponse.SC_NOT_FOUND);
- }
- }
- }
它的运作流程可以很容易的看出来:首先SERVLET加载入所有需要处理的servlet URI,把他们都存入一个HASHmAP当中,然后在DOGET中,读取请求的SERVLET的RUI,得到特定的URI后就进行相应的操作。
分享到:
相关推荐
本文将深入探讨原生Servlet与Spring Controller在性能方面的差异,并基于一个名为"AbTest"的Servlet项目源码进行分析。 首先,原生Servlet是Java EE规范的一部分,它提供了一个基础的接口,用于接收和响应HTTP请求...
本篇文章将深入探讨原生Servlet与Spring Controller在性能方面的差异,并以"Controller项目"为例进行分析。 Servlet是Java EE规范的一部分,它提供了一个标准的方式来处理HTTP请求和响应。原生Servlet直接继承自`...
这是对javaee 中servlet编程中涉及到的类的总体布局联系图,有了它可以帮你清楚的了解servlet的总体布局。希望能够帮到你!
当Web服务器接收到对Servlet的首次请求时,它会加载Servlet类并创建一个Servlet实例。接着,调用Servlet的`init()`方法进行初始化。在服务阶段,每次请求都会导致`service()`方法被调用,该方法根据请求类型分派到`...
java web servlet jstl 对 dept 及emp 表 进行 对 emp表 进行 增删改查 用 封装 继承 多态的方式 ,实现该功能 分层开发: entity 实体层 service 业务层接口及实现类 util 工具类 controller Servlet 充当
10. **DispatcherServlet**:Spring MVC框架中的核心组件,它是一个通用的Servlet,负责调度请求到对应的处理器(Controller),并处理结果。 在实际开发中,我们通常会结合Servlet与MVC模式、Filter、Session、...
Servlet详细讲解资料,包含案例分析,还有其他知识需求可以私信我!
当服务器接收到对Servlet的第一次请求时,会加载Servlet类并创建一个Servlet实例,然后调用`init()`方法进行初始化。在服务阶段,Servlet通过`service()`方法处理来自客户端的每个请求。最后,当服务器关闭或Servlet...
Servlet是Java Web开发中的核心组件,用于接收和处理客户端(如浏览器)的HTTP请求,并返回响应。这个"Servlet的小demo"应该是...为了深入理解,你可以查看源代码,分析其中的逻辑,这将有助于巩固Servlet的基础知识。
"S06-tomcat之servlet内存马1" 在 Tomcat 中,Servlet 内存马是一种特殊的 Servlet,它可以动态注册 ...本文对 Servlet 内存马的工作原理和实现机制进行了详细的分析和解释,并对其实现机制进行了详细的分析和解释。
- 加载与实例化:当服务器接收到对Servlet的首次请求时,会加载Servlet类并创建其实例。 - 初始化:创建实例后,调用`init()`方法进行初始化,通常用来配置Servlet。 - 服务:每当服务器接收到对Servlet的新请求...
Servlet在MVC(Model-View-Controller)架构中扮演控制器(Controller)的角色,负责接收请求、调用模型层处理数据并选择适当的视图呈现结果。这种模式分离了业务逻辑、数据处理和用户界面,提高了代码的可维护性和...
6. **过滤器(Filters)和监听器(Listeners)**:这些都是Servlet API中的重要组件,可以对请求和响应进行预处理或后处理,或者监听某些特定的Web事件。 7. **测试类**:源码可能还包含JUnit或其他测试框架的测试...
虽然Servlet本身不强制使用特定的架构模式,但在实际开发中,常常与Model-View-Controller(MVC)模式结合,其中Controller由Servlet承担,负责接收请求、处理业务逻辑、调用模型并更新视图。 8. **现代Servlet...
总结,`servlet分发控制器`是Java Web开发中的重要概念,它通过Controller.java类的`doProcess`方法实现了对HTTP请求的处理和分发,使得应用的结构更加清晰,提高了代码的可维护性和复用性。在实际开发中,我们可以...
虽然Servlet可以单独使用,但现代Web开发通常使用MVC(Model-View-Controller)框架,如Spring MVC,它们在Servlet之上提供更高层次的抽象,简化开发过程。 通过学习Servlet,开发者可以构建功能丰富的动态Web应用...
- `GenericServlet`: 一个抽象Servlet类,实现了Servlet和ServletConfig接口,提供了一种通用的方法来处理多种协议。 - `HttpServlet`: 继承自GenericServlet,专门用于处理HTTP请求,提供了处理GET、POST等HTTP...
9. **MVC模式与Servlet**:虽然Servlet主要用于处理请求,但通过组合Servlet、JSP和JavaBeans,可以实现Model-View-Controller(MVC)设计模式,提高代码的可维护性和可扩展性。 10. **部署与容器**:Servlet通常在...
<servlet-name>ControllerServlet</servlet-name> <servlet-class>com.example.ControllerServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ControllerServlet</servlet-name> ...
2. `src`:存放源代码的目录,可能包含了Servlet的实现类和其他相关的Java类。 3. `.project`:Eclipse项目配置文件,描述项目的属性和构建信息。 4. `WebRoot`:Web应用的根目录,包含了HTML、CSS、JavaScript、...