gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:45:26 27 4
gpt4 key购买 nike

这是我的 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com