哪位神人能提供一点细细讲JavaWeb开发中各种可能用到的环境,以及变量的资料

如题..真的迷糊,被各种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"]
/**

  • Web-specific context information for actions. This class subclasses ActionContext which
  • provides access to things like the action name, value stack, etc. This class adds access to
  • web objects like servlet parameters, request attributes and things like the HTTP session. */ public class ServletActionContext extends ActionContext implements StrutsStatics {... [/code] 这样不就很明白了吗?如果还有疑问,就拿来xwork2的ActionContext源代码,总之要弄明白为止。

[quote]ValueStack,ActionContext,ServletActionContext 是Struts2对上述对象的封装,目的是使得用户可以脱离web环境提供的各种API,并且可以方便的进行单元测试。 [/quote]
写错了,是struts2和Xwork

买本sun关于web认证的书看看会很不错的,有本台湾人写的不错,首先搞清servlet规范和web服务器原理。