servlet处理多个请求 笔记

方法一


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);
    }




猜你喜欢

转载自blog.csdn.net/kikock/article/details/80582960