【发布时间】:2011-04-10 07:48:38
【问题描述】:
我有以下操作 servlet,想知道是否应该像我为程序所做的那样创建一个名为 supervisor 的模型和相应的 supervisorDAO? programDAO 将多个程序模型 bean 放入返回的数组列表中。对于主管,我使用通用输入/输出数据库实用程序来获取任何传入的 SQL 字符串的哈希图 (retALM) 的数组列表。主管列表用于在 html 表单上创建下拉选择。
我关心的是将 sql 字符串存储在操作 servlet 中。如果我有一个 User 模型和 UserDAO 类,我不确定是否有必要创建一个主管模型和 DAO。实际上,在键入此帖子后,我进一步相信这不是正确的方法。因此,要么按照我在下面的方式保留它,要么添加supervisor SQL 调用以获取 UserDAO 类中的主管列表,因为用户可以成为主管。我也欢迎对下面我的 action servlet 方法提出其他批评。
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
ProgramDAO prgDAO = new ProgramDAO();
STKUser authenticatedUser = (STKUser) request.getSession().getAttribute("STKUserSession");
List programs = null;
List supervisors = null;
try {
programs = prgDAO.getProgramList(authenticatedUser);
} catch (DAOException e) {
request.setAttribute("message", e);
}
String strSQL = "SELECT DISTINCT phonebook.badge, phonebook.lname, phonebook.fname FROM phonebook
WHERE phonebook.badge IN (SELECT DISTINCT phonebook.ata_badge FROM phonebook WHERE
phonebook.dept='" + authenticatedUser.getDepartment() + "') ORDER BY lname";
supervisors = General_IO.retALM(strSQL);
request.setAttribute("supervisors", supervisors);
request.setAttribute("programs", programs);
RequestDispatcher view = request.getRequestDispatcher("views/commitment_template.jsp");
view.forward(request, response);
}
【问题讨论】:
-
与您的问题没有直接关系,但我建议不要直接使用 servlet API。使用 servlet,您必须编写大量代码来进行简单的参数处理。 Servlet 也很难用单元测试来测试。有许多 Web 操作框架可供选择,包括 WebWork、Stripes 和 Spring MVC。
-
我很欣赏框架的建议。相信我,我很想使用其中之一。但我为一家拥有控制网络服务器的 IT 团队的大公司工作。我们在使用任何新技术方面落后了 8 年,我不允许自己在服务器上安装任何软件/框架。他们用发展束缚了我们。 :( 我确实在类路径中有一个文件夹,并且可能能够回避一些 IT 规则并将一些 jar 放在那里,前提是它可以在我们过时的服务器上运行(jsp 1.2、java 1.4、web 模块 2.3)
-
你不需要在服务器上安装一些东西来使用这些框架;您只需在类路径中包含罐子。如果他们通过 WAR 文件部署您的应用程序,那么它只是一个要打包的 jar。如果 IT 部门拒绝,我建议您讨论一下自己滚动此操作的所有安全性和性能影响。祝你好运!
-
那是另一个问题。我们没有准备好部署 WAR 文件。 atlealet IT 表示他们没有为单个开发人员进行 WAR 部署的流程。当我将类文件放到类路径中的文件夹中时,我有点受制于每晚服务器重启。有没有办法让服务器重新加载我的课程?
标签: java jsp web-applications servlets