吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1168|回复: 4
收起左侧

[已解决] 写某马旅游网抽取BaseServlet遇到的问题

  [复制链接]
980041382 发表于 2021-10-16 18:18
本帖最后由 980041382 于 2021-10-16 18:28 编辑

java.lang.NoSuchMethodException: cn.itcast.travel.web.servlet.UserServlet.add(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletRequest)
        at java.lang.Class.getDeclaredMethod(Class.java:2158)
        at cn.itcast.travel.web.servlet.BaseServlet.service(BaseServlet.java:28)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

这是BaseServlet
[Java] 纯文本查看 复制代码
package cn.itcast.travel.web.servlet;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;


public class BaseServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //System.out.println("baseServlet的service方法被执行了...");

        //完成方法分发
        //1.获取请求路径
        String uri = req.getRequestURI();  //  返回/travel/user/add
        System.out.println("请求uri:"+uri);  // /user/add
        //2.获取方法名称
        String methodName = uri.substring(uri.lastIndexOf('/') + 1);
        System.out.println("方法名称:"+methodName);
        //3.获取方法对象Method
        //this 谁调用我?我代表谁
        System.out.println(this);//UserServlet的对象cn.itcast.travel.web.servlet.UserServlet@16dc326f
        try {
            //忽略访问权限修饰符,获取方法
            Method method = this.getClass().getDeclaredMethod(methodName, HttpServletRequest.class, HttpServletRequest.class);
            //4.执行方法
            //暴力反射
            //method.setAccessible(true);
            method.invoke(this,req,resp);
        } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
            e.printStackTrace();
        }
    }
}


这是UserServlet
[Java] 纯文本查看 复制代码
package cn.itcast.travel.web.servlet;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet("/user/*")
public class UserServlet extends BaseServlet {

    public void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("userServlet的add方法");
    }

    public void find(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("userServlet的find方法");
    }
}


无论是使用getDeclaredMethod()还是getMethod()都会报这个错误,把Protected设置成Public也还是会报错
1.png

屏幕截图 2021-10-16 181357.png
求助!


是自己太粗心了。。。

免费评分

参与人数 1热心值 +1 收起 理由
七个涨停一倍 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

hujachin 发表于 2021-10-16 21:39
Method method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
980041382 + 2 + 1 热心回复!

查看全部评分

 楼主| 980041382 发表于 2021-10-17 00:34
hujachin 发表于 2021-10-16 21:39
Method method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse. ...

对 我就是粗心了
大佬写过这个黑马旅游网吗
它那个跳转到最后一页是怎么写的你知道嘛!
hujachin 发表于 2021-10-17 08:14
980041382 发表于 2021-10-17 00:34
对 我就是粗心了
大佬写过这个黑马旅游网吗
它那个跳转到最后一页是怎么写的你知道嘛!

什么意思
 楼主| 980041382 发表于 2021-10-17 14:50

这个  计算下一页 屏幕截图 2021-10-17 144801.png
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 20:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表