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 8b2ea998d Updates stage by Jenkins
8b2ea998d is described below
commit 8b2ea998db203d6b6e4ed68238cb340259a2c9ca
Author: jenkins <[email protected]>
AuthorDate: Tue Oct 10 13:24:12 2023 +0000
Updates stage by Jenkins
---
content/core-developers/static-content.html | 16 ++++++--
content/core-developers/web-xml.html | 61 +++++++++++++++++------------
2 files changed, 48 insertions(+), 29 deletions(-)
diff --git a/content/core-developers/static-content.html
b/content/core-developers/static-content.html
index 90f98e9d5..5d674b17a 100644
--- a/content/core-developers/static-content.html
+++ b/content/core-developers/static-content.html
@@ -132,21 +132,29 @@
<h1 class="no_toc" id="static-content">Static Content</h1>
<ul id="markdown-toc">
+ <li><a href="#disabling-static-content"
id="markdown-toc-disabling-static-content">Disabling static content</a></li>
<li><a href="#custom-static-content-loaders"
id="markdown-toc-custom-static-content-loaders">Custom Static Content
Loaders</a></li>
<li><a href="#default-content-loader"
id="markdown-toc-default-content-loader">Default Content Loader</a></li>
<li><a href="#default-path" id="markdown-toc-default-path">Default
path</a></li>
<li><a href="#preventing-struts-from-handling-a-request"
id="markdown-toc-preventing-struts-from-handling-a-request">Preventing Struts
from handling a request</a></li>
</ul>
-<p>Struts can serve static content like css and javascript files. This feature
is enabled by default, but can be disabled
-by setting:</p>
+<p>Struts can serve a static content like CSS and JavaScript files using a
predefined path. By default, these resources
+are served using <code class="language-plaintext
highlighter-rouge">/static</code> path defined using a constant <code
class="language-plaintext highlighter-rouge">struts.ui.staticContentPath</code>
- see below for more details.</p>
+
+<p>Please remember to include this path in your filter mapping if you use a
custom mapping, see <a href="web-xml.md">web.xml</a> example config.</p>
+
+<h2 id="disabling-static-content">Disabling static content</h2>
+
+<p>You can disable this feature by setting the following constant to <code
class="language-plaintext highlighter-rouge">false</code>. Once disabled you
must provided the required
+CSS & JavaScript files on your own, which can be a good thing when you
want to use a CDN.</p>
<div class="language-xml highlighter-rouge"><div class="highlight"><pre
class="highlight"><code><span class="nt"><constant</span> <span
class="na">name=</span><span class="s">"struts.serve.static"</span> <span
class="na">value=</span><span class="s">"false"</span><span
class="nt">/></span>
</code></pre></div></div>
<blockquote>
- <p>If you disable this feature, but use the <code class="language-plaintext
highlighter-rouge">xhtml</code>, or <code class="language-plaintext
highlighter-rouge">css_xhtml</code> theme, make sure that the javascript and
css files
-shipped inside the core jar are extracted to your web application
directory.</p>
+ <p>If you disable this feature, but you use the <code
class="language-plaintext highlighter-rouge">xhtml</code>, or <code
class="language-plaintext highlighter-rouge">css_xhtml</code> theme, make sure
the JavasScript and CSS files
+shipped inside the core jar are extracted to your web application directory or
served in some other way.</p>
</blockquote>
<h2 id="custom-static-content-loaders">Custom Static Content Loaders</h2>
diff --git a/content/core-developers/web-xml.html
b/content/core-developers/web-xml.html
index d4ca7fec0..bfaecdcb3 100644
--- a/content/core-developers/web-xml.html
+++ b/content/core-developers/web-xml.html
@@ -133,8 +133,7 @@
<ul id="markdown-toc">
<li><a href="#simple-example" id="markdown-toc-simple-example">Simple
Example</a></li>
- <li><a href="#changed-filter-package-in-struts--25"
id="markdown-toc-changed-filter-package-in-struts--25">Changed filter package
in Struts >= 2.5</a></li>
- <li><a href="#changed-filter-structure-in-struts--213"
id="markdown-toc-changed-filter-structure-in-struts--213">Changed Filter
Structure in Struts >= 2.1.3</a></li>
+ <li><a href="#custom-mapping" id="markdown-toc-custom-mapping">Custom
mapping</a></li>
<li><a href="#exclude-specific-urls"
id="markdown-toc-exclude-specific-urls">Exclude specific URLs</a></li>
<li><a href="#taglib-example" id="markdown-toc-taglib-example">Taglib
Example</a></li>
<li><a href="#custom-filemanager-and-filemanagerfactory-implementations"
id="markdown-toc-custom-filemanager-and-filemanagerfactory-implementations">Custom
FileManager and FileManagerFactory implementations</a></li>
@@ -174,38 +173,50 @@ should behave.</p>
<span class="nt"></web-app></span>
</code></pre></div></div>
-<h2 id="changed-filter-package-in-struts--25">Changed filter package in Struts
>= 2.5</h2>
+<p>See <a href="../plugins/sitemesh-plugin">SiteMesh Plugin</a> for an example
on when to use separate Filters for prepare and execution phase.</p>
-<p>As from Struts 2.5 all filters were moved to top package, if you are using
older version you must use the old package,
-see example:</p>
+<h2 id="custom-mapping">Custom mapping</h2>
-<div class="language-xml highlighter-rouge"><div class="highlight"><pre
class="highlight"><code><span class="nt"><web-app</span> <span
class="na">id=</span><span class="s">"WebApp_9"</span> <span
class="na">version=</span><span class="s">"2.4"</span>
- <span class="na">xmlns=</span><span
class="s">"http://java.sun.com/xml/ns/j2ee"</span>
- <span class="na">xmlns:xsi=</span><span
class="s">"http://www.w3.org/2001/XMLSchema-instance"</span>
- <span class="na">xsi:schemaLocation=</span><span
class="s">"http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"</span><span
class="nt">></span>
+<p>The above approach is a preferred way of enabling support for Struts in
your web application. Yet you can have more
+specific requirements and use more specific mapping like presented below:</p>
+
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre
class="highlight"><code><span class="nt"><web-app</span> <span
class="err">...</span><span class="nt">></span>
<span class="nt"><filter></span>
<span class="nt"><filter-name></span>struts2<span
class="nt"></filter-name></span>
- <span
class="nt"><filter-class></span>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter<span
class="nt"></filter-class></span>
+ <span
class="nt"><filter-class></span>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter<span
class="nt"></filter-class></span>
<span class="nt"></filter></span>
- ...
+
+ <span class="nt"><filter-mapping></span>
+ <span class="nt"><filter-name></span>struts2<span
class="nt"></filter-name></span>
+ <span class="nt"><url-pattern></span>*.action<span
class="nt"></url-pattern></span>
+ <span class="nt"></filter-mapping></span>
+
<span class="nt"></web-app></span>
</code></pre></div></div>
-<h2 id="changed-filter-structure-in-struts--213">Changed Filter Structure in
Struts >= 2.1.3</h2>
+<p>In such case only requests ending with <code class="language-plaintext
highlighter-rouge">.action</code> will be directed by a Servlet container to be
handled by Struts filter.
+This can impact serving static content provided by Struts and you will have to
define additional mapping to support it:</p>
-<p>To split up the the dispatcher phases, FilterDispatcher is deprecated since
Struts 2.1.3. If working with older
-versions, you need to use</p>
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre
class="highlight"><code><span class="nt"><web-app</span> <span
class="err">...</span><span class="nt">></span>
-<div class="language-xml highlighter-rouge"><div class="highlight"><pre
class="highlight"><code> ...
<span class="nt"><filter></span>
<span class="nt"><filter-name></span>struts2<span
class="nt"></filter-name></span>
- <span
class="nt"><filter-class></span>org.apache.struts2.dispatcher.FilterDispatcher<span
class="nt"></filter-class></span>
- ...
-</code></pre></div></div>
+ <span
class="nt"><filter-class></span>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter<span
class="nt"></filter-class></span>
+ <span class="nt"></filter></span>
+
+ <span class="nt"><filter-mapping></span>
+ <span class="nt"><filter-name></span>struts2<span
class="nt"></filter-name></span>
+ <span class="nt"><url-pattern></span>*.action<span
class="nt"></url-pattern></span>
+ <span class="nt"></filter-mapping></span>
-<p>See <a href="../plugins/sitemesh-plugin">SiteMesh Plugin</a> for an example
on when to use separate Filters for prepare
-and execution phase.</p>
+ <span class="nt"><filter-mapping></span>
+ <span class="nt"><filter-name></span>struts2<span
class="nt"></filter-name></span>
+ <span class="nt"><url-pattern></span>/static/*<span
class="nt"></url-pattern></span>
+ <span class="nt"></filter-mapping></span>
+
+<span class="nt"></web-app></span>
+</code></pre></div></div>
<h2 id="exclude-specific-urls">Exclude specific URLs</h2>
@@ -239,8 +250,8 @@ the container will discover it automatically.</p>
<code class="language-plaintext highlighter-rouge">META-INF</code> folder, and
add a <code class="language-plaintext highlighter-rouge">taglib</code> element
to the <code class="language-plaintext highlighter-rouge">web.xml</code>.</p>
</blockquote>
-<div class="language-xml highlighter-rouge"><div class="highlight"><pre
class="highlight"><code> <span class="c"><!-- ... --></span>
- <span class="nt"></welcome-file-list></span>
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre
class="highlight"><code><span class="nt"><web-app</span> <span
class="err">...</span><span class="nt">></span>
+ <span class="c"><!-- ... --></span>
<span class="nt"><taglib></span>
<span class="nt"><taglib-uri></span>/s<span
class="nt"></taglib-uri></span>
@@ -282,8 +293,8 @@ version of FileManager. But it must be registered at “the
beginning” to supp
<h2 id="custom-configuration-provider">Custom configuration provider</h2>
-<p>It is possible to use your custom <code class="language-plaintext
highlighter-rouge">ConfigurationProvider</code> to programmatically configure
your application. To do this use
-<code class="language-plaintext highlighter-rouge">configProviders</code> (it
can be a comma-separated list of class names) <code class="language-plaintext
highlighter-rouge"><init-param/></code> as below:</p>
+<p>It is possible to use your custom <code class="language-plaintext
highlighter-rouge">ConfigurationProvider</code> to programmatically configure
your application. To do this use
+<code class="language-plaintext highlighter-rouge">configProviders</code> (it
can be a comma-separated list of class names) <code class="language-plaintext
highlighter-rouge"><init-param/></code> as below:</p>
<div class="language-xml highlighter-rouge"><div class="highlight"><pre
class="highlight"><code><span class="nt"><filter></span>
<span class="nt"><filter-name></span>struts2<span
class="nt"></filter-name></span>
@@ -295,7 +306,7 @@ version of FileManager. But it must be registered at “the
beginning” to supp
<span class="nt"></filter></span>
</code></pre></div></div>
-<p>See <a href="configuration-provider-and-configuration">Configuration
Provider & Configuration</a> for more details.</p>
+<p>See <a href="configuration-provider-and-configuration">Configuration
Provider & Configuration</a> for more details.</p>
</section>
</article>