java - 在同一个 servlet 中处理不同请求的更优雅的方式

标签 java forms jsp servlets request

这是我的 servlet 的代码:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        String result = (String)request.getParameter("action");

        switch (result)
        {
            case "init":
                request.setAttribute("CountriesList", signUpBean.getContriesList());
                String arg = "/signup.jsp";
                RequestDispatcher dispatcher = this.getServletContext().getRequestDispatcher(arg);
                dispatcher.forward(request, response);
                break;
            case "submit":
                //Code to handle the request
                break;
        }
    }

当我点击链接signup?action=init时Servlet 被初始化,接收国家/地区列表并将其传递给 signup.jsp页面以便在选择的表单元素上显示列表。当我编译注册表单时,我按下提交按钮,该按钮具有 action="signup?action=submit",以便 servlet 可以处理请求。您知道更优雅的方式或更正确的方式来实现我的意思吗?

最佳答案

创建接口(interface)Action及其几个实现。在你的情况下InitSubmit 。 将这些action注册到servlet的init方法中,使它们存储在Map<String, Action> actions中。

现在你的processRequest()看起来像:

String actionName = (String)request.getParameter("action");
Action action = actions.get(actionName);
action.perform();

但是,您似乎试图重新发明轮子。使用可用的框架之一。例如,Struts 的作用与我在这里所解释的差不多。 Spring 更强大并且具有相同的概念。

关于java - 在同一个 servlet 中处理不同请求的更优雅的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24116637/

相关文章:

java - 如何通过使用 scala 类扩展我的 java 类使其可写?

java - org.apache.jasper.JasperException : java. lang.NullPointerException:找不到模块 'null'

python - Django : Extract data from table to initially populate a form

javascript - jQuery focus() 不会将光标带入输入字段

javascript - Ajax 调用 Spring MVC Controller 错误请求

jsp - 与 JSP 等效的 Checkstyle?

java - Android 应用内结算 - 签名 JSON 中的用户 ID

java - 迭代数组并测试每个值的正则表达式 (Java)

asp.net-mvc - 从 Ajax 表单帖子内重定向

javascript - 如何使用javascript更改选择列表jsp中的选项?