欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

servlet处理多个请求 笔记

程序员文章站 2022-06-02 19:07:07
...

方法一


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




相关标签: servlet