吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1115|回复: 8
收起左侧

[求助] 【求助】关于ServletRequest下的getParameter方法的实现

[复制链接]
cjxmg 发表于 2020-11-16 16:29
HttpServletRequest是ServletRequest的子接口,但是仅接口是没有方法的实现的,是如何实现获取具体参数的呢.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String username = request.getParameter("username");
        String password = request.getParameter("password");
    }

在读ServletRequest的实现类ServletRequestWrapper源码时,它也仅仅调用了接口的方法.
public String getParameter(String name) {
        return this.request.getParameter(name);
    }

是request还被做了别的手脚吗?在下刚学java,希望有大佬可以指导下.

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

_Dream 发表于 2020-11-16 16:55
request是一个对象,getParameter是request对象中的一个方法,你是想知道request对象中的参数是怎么来的吗?
ahao丶 发表于 2020-11-16 17:34
我看了一下源码。ServletRequestWrapper是一个ServletRequest的包装类。使用是ServletRequestWrapper需要传入一个另外的ServletRequest的实现类来创建对象。所以该实现方法调用的不是接口的方法,而是接口的实现类。这里面用到了java的多态性
 楼主| cjxmg 发表于 2020-11-16 18:22
ahao丶 发表于 2020-11-16 17:34
我看了一下源码。ServletRequestWrapper是一个ServletRequest的包装类。使用是ServletRequestWrapper需要传 ...

对 是实现类 ,我想知道request是如何得到具体的参数的,找不到源码,难道是在更底层吗?
 楼主| cjxmg 发表于 2020-11-16 18:29
_Dream 发表于 2020-11-16 16:55
request是一个对象,getParameter是request对象中的一个方法,你是想知道request对象中的参数是怎么来的吗 ...

不是,是想知道ServletRequest是如何得到类似html中的表单中的数据(比如input中的text password之类的),就是getParameter这个方法是如何实现的
上官元恒 发表于 2020-11-16 19:08
本帖最后由 上官元恒 于 2020-11-16 19:20 编辑

以tomcat为例。
org.apache.catalina.core.ApplicationHttpRequest下面有
@Override
public String getParameter(String name) {

    parseParameters();

    String[] value = parameters.get(name);
    if (value == null) {
        return null;
    }
    return value[0];

}
上官元恒 发表于 2020-11-16 19:11
本帖最后由 上官元恒 于 2020-11-16 19:16 编辑

ServletRequestWrapper只是个包装器,不是最后的实现。
不知道你用什么编辑器?用idea,左边有个向下的箭头。可以看到各种框架对getParameter这个方法的实现
QQ截图20201116191053.jpg
 楼主| cjxmg 发表于 2020-11-16 19:23
上官元恒 发表于 2020-11-16 19:11
ServletRequestWrapper只是个包装器,不是最后的实现。
不知道你用什么编辑器?用idea,左边有个向下的箭 ...

原来是这样,感谢!!
_Dream 发表于 2020-11-17 13:45
cjxmg 发表于 2020-11-16 18:29
不是,是想知道ServletRequest是如何得到类似html中的表单中的数据(比如input中的text password之类的),就 ...

那就是我表达的意思嘛,要看servlet实现类的源码,值都是封装到request对象中的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-26 11:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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