中易网

HttpServletRequest 谁实现的

答案:1  悬赏:80  
解决时间 2021-01-18 12:12
  • 提问者网友:献世佛
  • 2021-01-17 23:13
HttpServletRequest 谁实现的
最佳答案
  • 二级知识专家网友:底特律间谍
  • 2021-01-18 00:13
HttpServletRequest 是接口没问题。
ServletActionContext.getRequest() 得到一个实现HttpServletRequest 接口的实例,因此
HttpServletRequest request = ServletActionContext.getRequest(); 成立
此时request 就是 一个实现了HttpServletRequest 接口的实例。

你想找实现就通过ServletActionContext.getRequest()去找,实际struts并不提供实现。

你查的文章也是对的,具体实现类都是由web服务器上实现的,如tomcat jboss 等等吧

看下下面代码你就明白了,还是加强下基础知识吧。

// TTT.java
// 接口
interface HttpServletRequest {
public String getSession();
}

// 实现类
class AAA implements HttpServletRequest {
public String getSession() {
return "session";
}
}

// 中间类
class ServletActionContext {
public static HttpServletRequest getRequest() {
return new AAA();
}
}

public class TTT {


public static void main(String[] args) {
HttpServletRequest request = ServletActionContext.getRequest();
System.out.println(request.getSession());
}
}追问ServletActionContext源代码::
public static HttpServletRequest getRequest() { return (HttpServletRequest) ActionContext.getContext().get(HTTP_REQUEST); }
ActionContext是接口。getContext().方法:来源于源码:
public static ActionContext getContext() { return (ActionContext) actionContext.get();}
都是接口啊追答其一,我不知道你找那个实现有啥用,实际找到了,你也做不了什么,都不需要关注的,除非你想实现http协议,做自己的服务器,然后参考其实现
其二, ActionContext是不是接口也无所谓,既然用了接口,肯定有实现
return (ActionContext) actionContext.get(); 这里的actionContext又是啥?
但我从代码上来看actionContext.get() 返回一个实现了ActionContext接口的实例。

那你就要去找actionContext.get() 的实现了,你想找源码就这么跟下去行了。追问我现在是学习阶段!只是想多学点!研究它就是验证一下我以前学的知识对不对!纯属锻炼!
我查了一下actionContext.get(HTTP_REQUEST)这个HTTP_REQUEST属于Interface StrutsStatics的一个属性!返回的是对象 public Object get(String key) {
return context.get(key); }我是吃饱撑的!!感到有趣而已能解释StrutsStatics指的是什么不?网上没有介绍啊?他的key难道是HttpServletRequest 的一个属性!?追答主要是大家都只是使用,关注代码的很少,即使有也不关注这块代码,也没啥可关注的。
StrutsStatics 我瞄了下官方文档,说就是用来获取或设置action上下文或其他集合之外的对象的常量。
也就相当于map的key了,其实他应该也是当key使用的。
context,如果我没猜错的话,他应该是个继承了Map的接口,也就是说相当于个map
StrutsStatics 中属性就是他的key,他的value由其他的类设置进去的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息