HttpServletRequest 谁实现的
在struts2中定义requestHttpServletRequestrequest=ServletActionContext.getRequest();然后生成ses...
在struts2中定义request
HttpServletRequest request = ServletActionContext.getRequest();
然后生成session
Map session = request.getSession;
但是HttpServletRequest 是一个接口啊!他只有方法名没有具体实现!怎么可能生成
Map session????
我查一些文章!他们说HttpServletRequest 具体实现实在Tomcat……web服务器上实现的!
我有点不明白。如果实现了也该有个具体名称的类把??
用到多态也该是这样定义:
Map session = (此处为实现类的引用).getSession;
怎么回事啊??? 展开
HttpServletRequest request = ServletActionContext.getRequest();
然后生成session
Map session = request.getSession;
但是HttpServletRequest 是一个接口啊!他只有方法名没有具体实现!怎么可能生成
Map session????
我查一些文章!他们说HttpServletRequest 具体实现实在Tomcat……web服务器上实现的!
我有点不明白。如果实现了也该有个具体名称的类把??
用到多态也该是这样定义:
Map session = (此处为实现类的引用).getSession;
怎么回事啊??? 展开
1个回答
展开全部
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 {
/**
* @param args
*/
public static void main(String[] args) {
HttpServletRequest request = ServletActionContext.getRequest();
System.out.println(request.getSession());
}
}
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 {
/**
* @param args
*/
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() 的实现了,你想找源码就这么跟下去行了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询