这是我的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 ="注册?action = submit"在servlet可以处理请求的方式。你知道一种更优雅的方式或正确的方法吗?
答案 0 :(得分:1)
如果要在表单提交之前处理init情况并且之后提交提交案例,那么它总会有两个不同的请求。我猜在这种情况下最好的做法是使用两个不同的servlet。另外,我建议如果国家/地区列表不是动态的,最好从静态JSON / XML文件中获取它而不必发送servlet请求。这只是一个建议,你的判断有点不清楚。
答案 1 :(得分:1)
创建接口Action
及其几个实现。在您的情况下Init
和Submit
。
在servlet的init方法中注册这些操作,以便它们存储在Map<String, Action> actions
中。
现在您的processRequest()
将如下所示:
String actionName = (String)request.getParameter("action");
Action action = actions.get(actionName);
action.perform();
然而,似乎你试图重新发明轮子。使用一个可用的框架。例如,Struts的功能大致与我在这里解释的相同。春天更强大,具有相同的概念。