步骤
1.先要在新建一个类,随便取名,让他继承HttpServlet
1. package cn.xiaol.web.servlet.after;
2.
3. import java.io.IOException;
4. import java.lang.reflect.Method;
5.
6. import javax.servlet.ServletException;
7. import javax.servlet.http.HttpServlet;
8. import javax.servlet.http.HttpServletRequest;
9. import javax.servlet.http.HttpServletResponse;
10.
11. public class BaseServlet extends HttpServlet {
12.
13. @Override
14. protected void service(HttpServletRequest request, HttpServletResponse response)
15. throws ServletException, IOException {
16. // 1、获得方法名称
17. String methodName = request.getParameter("method");
18. Method method = null;
19.
20. // 2、通过方法名和方法所需要的参数获得Method对象
21. try {
22. method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
23. } catch (Exception e) {
24. throw new RuntimeException("调用的方法:" + methodName + "不存在", e);
25. }
26.
27. // 3、通过Method对象调用方法
28. try {
29. String result = (String) method.invoke(this, request, response);
30. if (result != null && result.trim().length() > 0) {// 如果返回的result不为空
31. int index = result.indexOf(":");// 获得第一个冒号的位置
32. if (index == -1) {// 如果没有冒号,就使用转发
33. request.getRequestDispatcher(result).forward(request, response);
34. } else {// 如果有冒号
35. String start = result.substring(0, index);// 截取前缀
36. String path = result.substring(index + 1);// 截取路径
37. if (start.equalsIgnoreCase("f")) {// 前缀为f表示使用转发
38. request.getRequestDispatcher(path).forward(request, response);
39. } else if (start.equalsIgnoreCase("r")) {// 前缀为r表示使用重定向
40. response.sendRedirect(request.getContextPath() + path);
41. }
42. }
43. }
44. } catch (Exception e) {
45. throw new RuntimeException(e);
46. }
47. }
48. }
2.再创一个类,这个类就放具体的方法和操作,来对应前端的需求
1. package cn.xiaol.web.servlet.after;
2.
3. import javax.servlet.http.HttpServletRequest;
4. import javax.servlet.http.HttpServletResponse;
5.
6. /**
7. * @date 创建时间:2016年10月15日 上午11:59:25
8. */
9. public class TestServlet extends BaseServlet {
10.
11. public String login(HttpServletRequest request, HttpServletResponse response) {
12. System.out.println("login");
13. return "/login.jsp";
14. }
15.
16. public String regist(HttpServletRequest request, HttpServletResponse response) {
17. System.out.println("regist");
18. return "/regist.jsp";
19. }
20. }
3.前端的url中需要在后面添加方法。来获取对应的操作。
url: 'http://localhost:8080/Jeff/MyServlet?method=storage',