java - 使用 servlet 来设置 Web 应用程序

标签 java servlets

在我的 Web 应用程序中,我有两个充当 Controller 的 servlet。一个servlet 用于处理Web 请求,另一个servlet 用于处理AJAX 请求。

//This servlet manages web requests, and forwards to JSP to display data
WebController extends HttpServlet: 

// This servlet manages AJAX requests. And returns JSON to user
AJAXController extends HttpServlet: This servlet manages 

在我的 web.xml 中,我定义了以下映射:

<servlet>
  <servlet-name>WebController</servlet-name>
  <servlet-class>com.frontend.WebController</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
  <servlet-name>WebController</servlet-name>
  <url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet>

  <servlet-name>AJAXController</servlet-name>
  <servlet-class>com.AJAXController</servlet-class>
  <load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
  <servlet-name>AJAXController</servlet-name>
  <url-pattern>*.xhr</url-pattern>
</servlet-mapping>

所以你可以看到我在 AJAXController 之前加载 WebController
webControllerinit() 方法中,我完成了所有初始化任务。

loading the database driver
initializing the configuration
and other stuff that I need for my web application

启动时加载可确保在任何 AJAX 请求到达服务器之前,Web 应用程序已初始化,并且我可以确保进行数据库访问。

但是,我不喜欢在一个 servlet 中初始化 Web 应用程序的想法。我正在考虑有一个名为 InitServlet 的单独 servlet,并将代码从 WebController 的 init 方法移动到 InitServletinit( ) 方法

问题

  1. 这是个好主意吗?还有其他方法可以解决这个问题吗?
  2. 考虑到 init servlet 的唯一目的是初始化 Web 应用程序,因此它不应该映射到任何 URL,我的 servlet 映射应该是什么样子

我将在他们的 doPost()doGet() 方法中发送 HttpServletResponse.SC_FORBIDDEN 。但如果可能的话,我希望 servlet 不被映射到任何东西。

最佳答案

最好将初始化代码移至 ServletContextListener .

当您的应用启动时,它将执行 contextInitialized(ServletContextEvent sce),您将有机会初始化所有内容。

this就是你如何将它挂接到你的 web.xml

关于java - 使用 servlet 来设置 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16203148/

相关文章:

java - 如何在 Tomcat 中运行 Java EE 项目?

java - 静态缓存 - 两个 "Instances"

java - kairosdb 和 Elasticsearch 集成

java - 在框布局中设置组件的自定义位置

java - 使用 java/Java EE 的浏览器检测

java - 仅检索 POST 参数 (Java)

java - 将文件从 Cp1252 转换为 utf -8 java

java - 如何使用 json 从 mysql 检索图像?

google-app-engine - 如何根据名称动态地将 URL 映射到 Java servlet 处理程序? (谷歌应用程序引擎)

java - Spring 4 中的 DeferredResult 是否支持 Servlet 3.1 (Read|Write)Listener?