-
关于多个servlet的配置文件10
大家好,我有一个关于servlet文件的问题,一般servlet的配置信息都是放在 %/WEB-INF/web.xml下,如果是个简单的系统还好说,如果是大一点的项目,那么按照模块划分,摸个模块对应多个servlet,那么这些servlet的配置全放在web.xml里就太臃肿了,大家有什么好的方法,比如一个模块的servlet配置信息放在一个model_web.xml里,然后把这个model_web.xml信息放在 web.xml里,我是这么考虑的,自定义一个servlet类,tomcat启动时运行这个servlet,这个servlet把 model_web.xml加载。请问如何实现?
问题补充:
对于小型应用来说,自己配置的servlet比struts要好使用,这是我问这个问题的初衷。
问题补充:
不管是struts还是其他的开源框架底层用的还是servlet,如果连servlet都搞不清楚,开口闭口都是这些框架,那么技术得不到提高。只能用人家封装好的框架。
我问这个问题,就是想搞清楚底层的实现,既然struts可以实现,那么技术上来讲也可以实现。2008年7月09日 13:49
7个答案 按时间排序 按投票排序
-
采纳的答案
那我只好贴代码了. 简单测试通过.
web.xml 配置内容<servlet> <servlet-name>ttServlet</servlet-name> <servlet-class>cn.iwoo.demo.web.TtServlet</servlet-class> <init-param> <param-name>xmlLocations</param-name> <param-value>one.xml,two.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>ttServlet</servlet-name> <url-pattern>/tt/*</url-pattern> </servlet-mapping>
2008年7月11日 01:07
-
上面的代码, 还需要去符合J2ee定义的Servlet生命周期.
比如: 去模拟 init(), destroy(). Servlet的单件.2008年7月11日 08:13
-
目标Servlet
public class AServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { this.service(arg0, arg1); } @Override protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { arg1.getWriter().write("LSDLKSDKFJDSf"); } }
2008年7月11日 01:08
-
总的Servlet
public class TtServlet extends HttpServlet { private String[] locationArray; private List<ServletModel> servletModels; @Override public void init(ServletConfig arg0) throws ServletException { String locations = arg0.getInitParameter("xmlLocations"); locationArray = locations.split(","); // .. 这里就直接设定从locationArray加载model_web.xml 得到的内容 servletModels = new ArrayList<ServletModel>(); servletModels.add(new ServletModel("/tt/a", "cn.iwoo.demo.web.AServlet")); // .. super.init(arg0); } @Override protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { this.service(arg0, arg1); } @Override protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { // 请求地址 String requestURI = this.getRequestURI(arg0); // 请求的目标Servlet ServletModel targetServeltModel = this.getRequestTargetServletModel(requestURI); // 目标Servlet响应请求 try { HttpServlet targetServlet = this.getRequestTargetServlet(targetServeltModel); targetServlet.service(arg0, arg1); } catch (Exception e) { e.printStackTrace(); } } private String getRequestURI(HttpServletRequest arg0) { return arg0.getRequestURI(); } private ServletModel getRequestTargetServletModel(String requestURI) { ServletModel targetServeltModel = null; for (ServletModel servletModel : servletModels) { if (requestURI.endsWith(servletModel.urlParttern)) { targetServeltModel = servletModel; break; } } return targetServeltModel; } private HttpServlet getRequestTargetServlet(ServletModel targetServeltModel) { HttpServlet targetSevlet = null; try { targetSevlet = (HttpServlet) Class.forName(targetServeltModel.servletname).newInstance(); } catch (Exception e) { e.printStackTrace(); } return targetSevlet; } class ServletModel { private String urlParttern; private String servletname; public ServletModel(String urlParttern, String servletname) { this.urlParttern = urlParttern; this.servletname = servletname; } // .. } }
2008年7月11日 01:08
-
这应该是个很好的J2ee实践模式. 将所有的Servlet放在一个统一的地方进行管理.
只不过现在的struts做的也就是你现在做的这件事情而已.
不过,还是不建议重造轮子.2008年7月09日 15:37
相关推荐
- `<Host>`:定义虚拟主机,可以用来支持多个不同的网站或应用。 - `<Engine>`:定义服务器引擎。 2. **`conf/web.xml`**: - **作用**:此文件是所有Web应用程序的全局配置文件,用于配置Web应用级别的参数,...
在某些场景下,我们可能需要对多个Servlet进行过滤,以实现统一的处理逻辑,如登录验证、权限控制等。"过滤多个Servlet"这个主题就涉及到如何在Web应用程序中设置过滤器(Filter)来拦截和处理多个目标Servlet的请求...
在`web.xml`文件中,可以通过`ActionServlet`的初始化参数`config`来指定一个或多个配置文件的位置。例如: ```xml <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action....
`<filter-mapping>` 元素用于将过滤器与一个或多个 servlet 或 JSP 页面相关联。 <listener> 元素 `<listener>` 元素用于定义事件监听程序类,该类将在建立、修改和删除会话或 servlet 环境时得到通知。 ...
- **初始化**: Servlet在首次请求时被实例化,可以通过`init()`方法进行初始化设置,例如配置文件存储路径。 - **服务**: `service()`方法处理每个HTTP请求,根据请求类型(POST或GET)调用对应的`doPost()`或`...
在`Tomcat服务器配置-Servlet.xml.doc`文件中,你可能会找到关于`server.xml`的详细内容,这是Tomcat的主要配置文件,包含了各种服务组件的定义。例如,你可以修改`Connector`元素来改变HTTP服务的端口号,或者添加...
创建一个Servlet类,继承自`HttpServlet`,重写`doPost`方法,因为文件上传通常发生在POST请求中。在`doPost`中,我们可以遍历`HttpServletRequest`的`Part`对象集合,获取每个上传文件的信息。以下是一个基本示例:...
本示例基于Servlet和Apache Commons FileUpload库实现了一个简单的文件上传系统。下面将详细介绍这个过程及其涉及到的关键知识点。 首先,`servlet`是Java EE(企业版)的一部分,它是一种用于扩展Web服务器功能的...
在IT行业中,多文件上传是一项常见的需求,尤其是在网站开发中,比如用户可能需要一次上传多个图片或者文档。Uploadify是一款非常流行的JavaScript插件,它能够实现异步的、基于Ajax的多文件上传功能,极大地提升了...
3. **Servlet配置**: - 在web.xml中,我们需要定义Servlet并映射其URL pattern,以便服务器知道何时调用我们的Servlet来处理上传请求。 4. **解析请求**: - 使用`HttpServletRequest`对象,我们可以获取到请求...
- "CKEditor上传文件Servlet版本1.0"这个压缩包可能包含了CKEditor的示例配置、Servlet的Java源代码、HTML页面和可能的web.xml配置文件。解压并根据这些文件进行部署和测试。 通过以上步骤,你可以成功地在...
文件上传是通过HTTP协议的POST请求实现的,通常包含一个或多个名为`multipart/form-data`的表单字段。在Java Servlet中,我们使用`javax.servlet.http.Part`接口来处理这些多部分数据。 3. **Servlet配置**: ...
总之,Servlet导出文件涉及到多个步骤,包括文件的生成、HTTP响应头的设置、内容的流化输出以及使用适当的工具或框架来简化工作。通过熟练掌握这些技术,我们可以为用户提供方便、安全的文件下载服务。
在Servlet中,我们首先需要配置FileUpload解析器,然后通过`parseRequest()`方法获取上传的文件项。每个文件项可以被写入到服务器的文件系统或者存储服务中。 5. **文件上传流程**: - 用户通过JSP页面选择文件,...
此外,代码中没有明确处理多个文件上传的情况,但`MultipartRequest`应该能够处理多个文件,前提是它们的总大小不超过设定值。 6. **安全性考虑**: 虽然示例代码简化了文件上传流程,但在实际应用中,还需要考虑...
4. **配置文件**:web.xml或Spring配置,定义Servlet的映射和初始化参数。 为了确保程序的健壮性,还可能涉及到错误处理、文件命名规则、文件存储路径管理、权限控制以及多线程处理等细节。 总的来说,这个项目...
4. **Servlet的转发与重定向**:Servlet可以通过`RequestDispatcher`进行请求转发,使得请求可以在多个Servlet间传递。而`sendRedirect()`方法则实现重定向,客户端会发起新的HTTP请求。 5. **Filter链**:Servlet...
5. **多线程处理**:对于大量文件上传,可考虑使用多线程来提升性能。 六、项目实践 本Demo项目`upload-download-servlet`包含了完整的示例代码,涵盖了前端AjaxSubmit的配置和后端Servlet的实现。开发者可以通过...
5. **分布式应用(Distributed Applications)**:Servlet 2.3规范支持J2EE的分布式应用,使得多个Servlet容器可以协同工作,处理同一个应用的请求,提高了可用性和可伸缩性。 6. **异步处理**:虽然Servlet 2.3并...
当客户端第一次请求某个 Servlet 时,Servlet 容器将会根据 web.xml 配置文件实例化这个 Servlet 类。当有新的客户端请求该 Servlet 时,一般不会再实例化该 Servlet 类,也就是有多个线程在使用这个实例。这样,当...