Conttext上下文

Context是一个容器,存放应用程序的资源

常见的 Context 有很多, 例如: ServletContext, ActionContext, ServletActionContext, ApplicationContext, PageContext, SessionContext ...

ServletContext,是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放。

request,一个用户可有多个;

session,一个用户一个;

而servletContext,所有用户共用一个。所以,为了节省空间,提高效率,ServletContext中,要放必须的、重要的、所有用户需要共享的线程又是安全的一些信息;


ActionContext是Action的上下文

一个线程有一个唯一的ActionContext。可以使用静态方法ActionContext.getContext()来获取当前线程的ActionContext

ActionContext本身的数据结构是映射结构,即一个Map,用key来映射value。或者直接使用Action.getContextMap()方法来对Map进行操作。

只有运行在request线程中的代码才能调用ActionContext.getContext(),否则返回的是null

 


 

request

1. request对象通常用来接收客户端提交到服务端的数据,如:在servlet或者action中可以用request.getParameter()的方法获取获取参数内容;

 

2. requestScope通常是在servlet或者action的服务端中通过request.setAttribute()方法把数据放到request对象中供客户端获取,然后客户端获取的方法就是requestScope.getAttribute()。

 

1. getParameter

 

可以获取URL中传递过来的String参数,如:http://www.baidu.com?username=abc 中的abc;

 

提示:对于POST/GET提交的表单,在服务器端我们都可以通过request.getParameter获取表单中的值。

 

当我们在进行一个请求重定向(redirect)的时候,我们可以通过request.setParameter传递参数,如果用request.setAttribute在重定向页面是取不到值的。

 

(待验证,因为HttpServletRequest中没有setParameter方法。)

 

2. getAttribute:

 

获取的是一个对象(Object)。

 

当我们进行一个请求转发(forward)的时候,可以使用request.setAttribute传递参数。

 

3. requestScope作为El表达式中的使用:

 

是EL表达式中的一个隐含对象,类似request,如:${requestScope.username} 表示在request域中取得username属性所对应的值,相当于request.getAttribute(“username”)。

 

4. param,El表达式中的使用

 

${param.username} 可理解为:request.getParameter(“username”);

 

结论:

 

${param.name} 等价于 request.getParamter("name"),这两种方法一般用于服务器从页面或者客户端获取的内容,这些内容都是String的。

 

${requestScope.name} 等价于 request.getAttribute("name"),一般是从服务器传递结果到页面,在页面中取出服务器端保存的值!

 

posted @   牧遥  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示