我個人使用反射在我的控制器(servlet的),基本上讓我實現這一目標。
如果我有一個叫做UserController的
的主URL調用servlet會/用戶的servlet。 知道這一點,我總是通過我的第一個參數?action = add
然後在我的servlet中有一個名爲add或actionAdd的方法。無論你喜歡什麼。
然後我使用下面的代碼;
String str = String str = request.getParameter("action").toLowerCase();
Method method = getClass().getMethod(str, HttpServletRequest.class, HttpServletResponse.class);
method.invoke(this, request, response);
說明:
海峽將有動作參數值,加上在這種情況下。 方法方法將是對具有給定名稱(str)及其預期參數類型的方法的引用。
然後我調用方法,傳遞上下文,請求和響應。
add方法看起來像這樣;
public void add(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
//do add stuff
String url = "/user/index.jsp";
RequestDispatcher dispatcher = context.getRequestDispatcher(url);
request.setAttribute("User", user);
dispatcher.forward(request, response);
}
我不知道只傳回一個字符串。但是這應該爲你提供一個基本的想法。
請注意,反射可能會讓你付出代價,所以它不應該真的影響你很像這樣。由於方法名稱/簽名需要完美匹配,因此很容易出錯。
所以從jQuery的,你會做一個Ajax請求的網址:
localhost/projectname/user/add (if you use urlrewrite)
or
localhost/projectname/user?action=add (if you dont)
查看[Apache Struts](http://struts.apache.org/primer.html)和[MVC模式](http://java.sun.com/blueprints/guidelines/) designing_enterprise_applications_2e/Web層/ WEB-tier5.html)。 –