如题..真的迷糊,被各种HttpServletRequest,ServletContext,PageContext,HttpSession这些环境,变量整迷糊了
尤其是现在用Struts2 又多出来什么ValueStack,ActionContext,ServletActionContext
等各种范围,环境,变量的,真的很迷糊,
ONGL,他的变量是从什么范围内找的?
Freemarker,他的变量是从哪里找的?
哪位神人能解决我的疑惑啊?我想多关注这些底层的东西,光用别人的框架,自己是得不到提升的。
HttpServletRequest-顾名思意,就是HTTP请求,它封装了部分HTTP协议,每次请求都会生成一个HttpServletRequest对象,无状态。
PageContext-JSP页面上下文,离开页面,就不存在了。
ServletContext—相当于ASP的Application,是整个web应用的上下文,唯一的。
HttpSession—就是Session,每个客户端一个放在服务器端,经常存放登录信息什么的,有状态。
前面几个都是JSP、Servlet规范中的对象。
ValueStack,ActionContext,ServletActionContext 是Struts2对上述对象的封装,目的是使得用户可以脱离web环境提供的各种API,并且可以方便的进行单元测试。
ONGL从值栈、request、session、servletcontext中都能获得信息,其实它只是一个表达式语言,准确的说,是struts2的tag可以使用OGNL从上述环境变量中获得信息。
Freemarker,你传给它什么对象,它就可以从这个对象中获得信息。比如一个Map、Bean、List等等。Fremarker有其独特的表达式语言。
兄弟是不是搞java web直接就上ssh呀。。
这样不行呀,怎么也得弄懂些servlet的东西把。。掌握这个,万变不离其宗呀
[code="java"]我想多关注这些底层的东西[/code]
最好的办法是阅读源代码,别人再怎么解释也没有自己体会出来的知识来得深刻。
比如,在struts2的Servlet源代码中这样写的:
[code="java"]
/**
[quote]ValueStack,ActionContext,ServletActionContext 是Struts2对上述对象的封装,目的是使得用户可以脱离web环境提供的各种API,并且可以方便的进行单元测试。 [/quote]
写错了,是struts2和Xwork
买本sun关于web认证的书看看会很不错的,有本台湾人写的不错,首先搞清servlet规范和web服务器原理。