方法一
jsp代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'test.jsp' starting page</title> </head> <body> <a href="add.do"> 添加</a> <br> <br> <a href="query.do"> 查询</a> <br> <br> <a href="delete.do"> 删除</a> </body> </html>
web.xml(servlet配置)
<servlet> <servlet-name>actionServlet</servlet-name> <servlet-class>web.actionServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>actionServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
要调用的方法
private void delete(HttpServletRequest request, HttpServletResponse response) { // TODO Auto-generated method stub System.out.println("删除的方法"); } private void query(HttpServletRequest request, HttpServletResponse response) { // TODO Auto-generated method stub System.out.println("查询的方法"); } private void add(HttpServletRequest request, HttpServletResponse response) { // TODO Auto-generated method stub System.out.println("添加的方法"); }
1.在servlet的WEB-INF中web.xml文件 配置<url-pattern>*.do</url-pattern>来响应多个请求
2. 在servlet中获取方法名字
String servletPath = request.getServletPath(); //等到xxx.do
或者获得资源请求路径
String url = request.getRequestURI(); //得到 /项目名称/xxx.do
3. 去除/ 和.do,获得xxx内容
// 去掉斜杠和.do
String UrlName = servletPath.substring(1, servletPath.length() - 3);// 得到xxxxxx
//或者
String UrlName = url.substring(url.lastIndexOf("/"), url.lastIndexOf(".")).substring(1); //同样得到xxx
4.使用反射调用对应的方法。
// 利用反射获取方法 try { Method method = getClass().getDeclaredMethod(UrlName, HttpServletRequest.class, HttpServletResponse.class); System.out.println(method); // 执行相应的方法 method.invoke(this, request, response); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
5使用判断调用对应的方法
// 方法2--利用判断调用方法 if ("add".equals(UrlName)) { add(request, response); }else if("query".equals(UrlName)){ query(request, response); }else if("delete".equals(UrlName)){ delete(request, response); }
方法二
在请求的时候加上参数,然后在servlet中获取请求的参数,再去调用对应的方法。达到一个servlet处理多个请求的目的
web.xml(servlet配置)
<servlet> <servlet-name>actionServlet</servlet-name> <servlet-class>web.actionServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>actionServlet</servlet-name> <url-pattern>/actionServlet</url-pattern> </servlet-mapping>
jsp代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'test.jsp' starting page</title> </head> <body>
<a href="actionServlet?method=add"> 添加</a>
<br>
<br>
<a href="actionServlet?method=query"> 查询</a>
<br>
<br>
<a href="actionServlet?method=delete"> 删除</a>
</body></html>
<a href="actionServlet?method=add">
通过 request.getParameter("method"); 获得actionServlet 参数
//获取对应的请求参数
String method = request.getParameter("method");
ps:不能使用反射调用方法
// 利用判断调用方法 if ("add".equals(UrlName)) { add(request, response); }else if("query".equals(UrlName)){ query(request, response); }else if("delete".equals(UrlName)){ delete(request, response); }