This is an automated email from the ASF dual-hosted git repository.

git-site-role pushed a commit to branch asf-staging
in repository https://gitbox.apache.org/repos/asf/struts-site.git


The following commit(s) were added to refs/heads/asf-staging by this push:
     new 82b595e98 Updates stage by Jenkins
82b595e98 is described below

commit 82b595e9844f8df27f8ca7b8eda67c1c7b637f04
Author: jenkins <bui...@apache.org>
AuthorDate: Wed Aug 16 11:27:17 2023 +0000

    Updates stage by Jenkins
---
 ...essing-application-session-request-objects.html | 53 ++++++++++++----------
 1 file changed, 29 insertions(+), 24 deletions(-)

diff --git 
a/content/core-developers/accessing-application-session-request-objects.html 
b/content/core-developers/accessing-application-session-request-objects.html
index b2a408adc..19aab608e 100644
--- a/content/core-developers/accessing-application-session-request-objects.html
+++ b/content/core-developers/accessing-application-session-request-objects.html
@@ -133,44 +133,49 @@
     
     <h1 id="accessing-application-session-request-objects">Accessing 
application, session, request objects</h1>
 
-<p><strong>DEPRECATED???</strong></p>
-
 <p>The framework provides several access helpers to access Session, 
Application, Request scopes.</p>
 
 <h2 id="accessing-from-java">Accessing from Java</h2>
 
-<p>All the JEE scope attribute maps can be accessed via <code 
class="language-plaintext highlighter-rouge">ActionContext</code>.</p>
-
-<p><strong>Accessing servlet scopes</strong></p>
-
-<div class="language-java highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nc">Map</span> <span class="n">attr</span> 
<span class="o">=</span> <span class="o">(</span><span 
class="nc">Map</span><span class="o">)</span> <span 
class="nc">ActionContext</span><span class="o">.</span><span 
class="na">getContext</span><span class="o">().</span><span 
class="na">get</span><span class="o">(</span><span class="s">"attr"</span><span 
class="o">);</span>
-<span class="n">attr</span><span class="o">.</span><span 
class="na">put</span><span class="o">(</span><span class="s">"myId"</span><span 
class="o">,</span> <span class="n">myProp</span><span class="o">);</span>  
<span class="c1">// Page scope.</span>
+<p>The best way to access Request, Session or Application scope is to use one 
of the following interfaces:</p>
+<ul>
+  <li><code class="language-plaintext 
highlighter-rouge">ServletRequestAware</code> - to access Request scope</li>
+  <li><code class="language-plaintext 
highlighter-rouge">ServletResponseAware</code> - to access Response scope</li>
+  <li><code class="language-plaintext highlighter-rouge">SessionAware</code> - 
to access Session scope</li>
+  <li><code class="language-plaintext 
highlighter-rouge">ApplicationAware</code> - to access Application scope</li>
+</ul>
 
-<span class="nc">Map</span> <span class="n">application</span> <span 
class="o">=</span> <span class="o">(</span><span class="nc">Map</span><span 
class="o">)</span> <span class="nc">ActionContext</span><span 
class="o">.</span><span class="na">getContext</span><span 
class="o">().</span><span class="na">get</span><span class="o">(</span><span 
class="s">"application"</span><span class="o">);</span>
-<span class="n">application</span><span class="o">.</span><span 
class="na">put</span><span class="o">(</span><span class="s">"myId"</span><span 
class="o">,</span> <span class="n">myProp</span><span class="o">);</span>
+<p>Example usage of the interfaces:</p>
 
-<span class="nc">Map</span> <span class="n">session</span> <span 
class="o">=</span> <span class="o">(</span><span class="nc">Map</span><span 
class="o">)</span> <span class="nc">ActionContext</span><span 
class="o">.</span><span class="na">getContext</span><span 
class="o">().</span><span class="na">get</span><span class="o">(</span><span 
class="s">"session"</span><span class="o">);</span>
-<span class="n">session</span><span class="o">.</span><span 
class="na">put</span><span class="o">(</span><span class="s">"myId"</span><span 
class="o">,</span> <span class="n">myProp</span><span class="o">);</span>
+<div class="language-java highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="kd">public</span> <span 
class="kd">class</span> <span class="nc">MyAction</span> <span 
class="kd">implements</span> <span class="nc">ApplicationAware</span> <span 
class="o">{</span>
+ 
+    <span class="kd">private</span> <span class="nc">Map</span><span 
class="o">&lt;</span><span class="nc">String</span><span class="o">,</span> 
<span class="nc">Object</span><span class="o">&gt;</span> <span 
class="n">application</span><span class="o">;</span>
 
-<span class="nc">Map</span> <span class="n">request</span> <span 
class="o">=</span> <span class="o">(</span><span class="nc">Map</span><span 
class="o">)</span> <span class="nc">ActionContext</span><span 
class="o">.</span><span class="na">getContext</span><span 
class="o">().</span><span class="na">get</span><span class="o">(</span><span 
class="s">"request"</span><span class="o">);</span>
-<span class="n">request</span><span class="o">.</span><span 
class="na">put</span><span class="o">(</span><span class="s">"myId"</span><span 
class="o">,</span> <span class="n">myProp</span><span class="o">);</span>
+    <span class="kd">public</span> <span class="kt">void</span> <span 
class="nf">withApplication</span><span class="o">(</span><span 
class="nc">Map</span><span class="o">&lt;</span><span 
class="nc">String</span><span class="o">,</span> <span 
class="nc">Object</span><span class="o">&gt;</span> <span 
class="n">application</span><span class="o">)</span> <span class="o">{</span>
+        <span class="k">this</span><span class="o">.</span><span 
class="na">application</span> <span class="o">=</span> <span 
class="n">application</span><span class="o">;</span>
+    <span class="o">}</span>
+    
+    <span class="kd">public</span> <span class="nc">String</span> <span 
class="nf">execute</span><span class="o">()</span> <span class="o">{</span>
+        <span class="n">application</span><span class="o">.</span><span 
class="na">set</span><span class="o">(</span><span 
class="s">"myKey"</span><span class="o">,</span> <span 
class="s">"myValue"</span><span class="o">);</span>
+        <span class="o">...</span>
+        <span class="k">return</span> <span class="s">"success"</span><span 
class="o">;</span>
+    <span class="o">}</span>
+    
+<span class="o">}</span>
 </code></pre></div></div>
 
-<blockquote>
-  <p>Do not use <code class="language-plaintext 
highlighter-rouge">ActionContext.getContext()</code> in the constructor of your 
Action class. The values may not be set up, and 
-the call may return null for getSession().</p>
-</blockquote>
+<p>Implementing <code class="language-plaintext 
highlighter-rouge">ServletRequestAware</code> or <code 
class="language-plaintext highlighter-rouge">ServletResponseAware</code> will 
tie your actions to Servlet objects. Yet using these 
+interfaces and <code class="language-plaintext 
highlighter-rouge">SessionAware</code> or <code class="language-plaintext 
highlighter-rouge">ApplicationAware</code> combined with the <code 
class="language-plaintext highlighter-rouge">servletConfig</code> interceptor, 
is the best way 
+to access these scopes.</p>
 
-<p>We can also access the <code class="language-plaintext 
highlighter-rouge">HttpServletRequest</code> and <code 
class="language-plaintext highlighter-rouge">HttpServletResponse</code> objects 
themselves through <code class="language-plaintext 
highlighter-rouge">ServletActionContext</code>. 
-In general this isn’t recommended as it will tie our action to the servlet 
specification.</p>
+<h3 id="avoid-using-actioncontext">Avoid using ActionContext</h3>
 
-<p><strong>Setting session attribute through session object</strong></p>
+<p>Using <code class="language-plaintext 
highlighter-rouge">ActionContext</code> directly is a bad practice and should 
be avoided, instead of using</p>
 
-<div class="language-java highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nc">ServletActionContext</span><span 
class="o">.</span><span class="na">getRequest</span><span 
class="o">().</span><span class="na">getSession</span><span 
class="o">().</span><span class="na">put</span><span class="o">(</span><span 
class="s">"myId"</span><span class="o">,</span> <span 
class="n">myProp</span><span class="o">);</span>
+<div class="language-java highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nc">ActionContext</span><span 
class="o">.</span><span class="na">getContext</span><span 
class="o">().</span><span class="na">getSession</span><span 
class="o">().</span><span class="na">put</span><span class="o">(</span><span 
class="s">"myAttribute"</span><span class="o">,</span> <span 
class="s">"myValue"</span><span class="o">);</span>
 </code></pre></div></div>
 
-<p>Implementing <code class="language-plaintext 
highlighter-rouge">ServletRequestAware</code> or <code 
class="language-plaintext highlighter-rouge">ServletResponseAware</code>, 
combined with the <code class="language-plaintext 
highlighter-rouge">servletConfig</code> interceptor, 
-is an alternative way to access the request and response objects, with the 
same caveat.</p>
+<p>use one of the <code class="language-plaintext 
highlighter-rouge">*Aware</code> interfaces above.</p>
 
 <h2 id="accessing-from-the-view-jsp-freemarker-etc">Accessing from the view 
(JSP, FreeMarker, etc.)</h2>
 

Reply via email to