这是我的 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
及其几个实现。在你的情况下Init
和Submit
。
将这些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/