JavaWeb中的Struts2概述

<main>
        <div class="blog-content-box">
    <div class="article-header-box">
        <div class="article-header">
            <div class="article-title-box">
                <span class="article-type type-1 float-left">原</span>                <h1 class="title-article">JavaWeb中的Struts2概述</h1>
            </div>
            <div class="article-info-box">
                <div class="article-bar-top" style="height: 26px;">
                                                                                <span class="time">2017年07月26日 15:00:58</span>
                    <a class="follow-nickName" href="https://me.csdn.net/u012605477" target="_blank">豆芽胡</a>
                        <span class="read-count">阅读数:207</span>
                        
                                                        <span class="tags-box artic-tag-box">
                                <span class="label">标签:</span>
                                                                <a data-track-click="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;JavaWeb&quot;}" class="tag-link" href="http://so.csdn.net/so/search/s.do?q=JavaWeb&amp;t=blog" target="_blank">JavaWeb                                                                </a><a data-track-click="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;web.xml&quot;}" class="tag-link" href="http://so.csdn.net/so/search/s.do?q=web.xml&amp;t=blog" target="_blank">web.xml                                                                </a><a data-track-click="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;struts&quot;}" class="tag-link" href="http://so.csdn.net/so/search/s.do?q=struts&amp;t=blog" target="_blank">struts                                                                </a><a data-track-click="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;struts2.0&quot;}" class="tag-link" href="http://so.csdn.net/so/search/s.do?q=struts2.0&amp;t=blog" target="_blank">struts2.0                                                                </a>
                            <span class="article_info_click">更多</span></span>
                                                                                    <div class="tags-box space">
                                <span class="label">个人分类:</span>
                                                                <a class="tag-link" href="https://blog.csdn.net/u012605477/article/category/6810654" target="_blank">JavaWeb                                                                </a>
                            </div>
                                                                                                </div>
                <div class="operating">
                                                        </div>
            </div>
        </div>
    </div>
    <article class="baidu_pl">
        <div id="article_content" class="article_content clearfix csdn-tracking-statistics" data-pid="blog" data-mod="popu_307" data-dsm="post" style="height: 2919px; overflow: hidden;">
                                <div class="article-copyright">
                                      <svg class="icon" title="CSDN认证原创" aria-hidden="true" style="width:53px; height: 18px; vertical-align: -4px;">
                            <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#CSDN_Cert"></use>
                    </svg>
                                      
                    版权声明:本文为博主原创文章,未经博主允许不得转载。                    https://blog.csdn.net/u012605477/article/details/76129675                </div>
                                            <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-5edb848729.css">
                        <div class="htmledit_views" id="content_views">
                
<p>Struts2是一种基于MVC模式的javaWeb框架,本质上相当于Servlet。</p>
<p>所谓MVC,就是模型-视图-控制器。</p>
<p><span style="font-size:12px;">Model(模型)表示应用程序核心(比如数据库记录列表)。</span></p>
<p><span style="font-size:12px;">View(视图)显示数据(数据库记录)。</span></p>
<p><span style="font-size:12px;">Controller(控制器)处理输入(写入数据库记录)</span></p>
<p><span style="font-size:13.3333px;"><span style="font-size:13.3333px;">而Struts的作用</span>实际上是作为控制器,建立模型层和视图层的数据交互(就是通常所说控制model和jsp之间的数据交互)</span><br></p>
<p><span style="color:rgb(255,0,0);">上面都是废话,你只要知道struts2能控制model和jsp之间的数据交互即可。</span></p>
<p>web程序想要使用struts2框架,除了要引用相关jar包外,还要在web.xml中对struts2进行配置,只有配置后,struts2才能对浏览器的请求进行一系列处理。</p>
<p>怎么在web应用中配置struts2?</p>
<p>首先在web.xml中添加<span style="font-size:13.3333px;">struts2的使用,代码如下:</span></p>
<p><span style="font-size:13.3333px;"></span></p>
<pre οnclick="hljs.copyCode(event)"><code class="language-html hljs xml"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-comment">&lt;!-- 配置Struts2 核心 Filter --&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-tag">&lt;<span class="hljs-name">filter</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-tag">&lt;<span class="hljs-name">filter-name</span>&gt;</span>action2<span class="hljs-tag">&lt;/<span class="hljs-name">filter-name</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-tag">&lt;<span class="hljs-name">filter-class</span>&gt;</span>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter<span class="hljs-tag">&lt;/<span class="hljs-name">filter-class</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-tag">&lt;/<span class="hljs-name">filter</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-tag">&lt;<span class="hljs-name">filter-mapping</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-tag">&lt;<span class="hljs-name">filter-name</span>&gt;</span>action2<span class="hljs-tag">&lt;/<span class="hljs-name">filter-name</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-tag">&lt;<span class="hljs-name">url-pattern</span>&gt;</span>/*<span class="hljs-tag">&lt;/<span class="hljs-name">url-pattern</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-tag">&lt;/<span class="hljs-name">filter-mapping</span>&gt;</span></div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre>
<p></p>
<p><span style="font-size:13.3333px;">上述代码使用了Filter,那我们就回顾一下Filter的作用。</span></p>
<p><span style="color:#ff0000;"><span style="font-size:13.3333px;">回顾:</span><span style="font-size:13.3333px;">Filter,中文名为过滤器,</span><span style="font-size:13.3333px;">通过Filter可以对web服务器的资源进行管理,例如Jsp,Servlet, 静态图片文件等进行拦截,从而实现一些特殊的功能。</span></span></p>
<p><span style="font-size:13.3333px;"><span style="color:#ff0000;">实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能</span></span></p>
<p><span style="color:#ff0000;"><span style="font-size:13.3333px;">从代码层面来讲,只要创建一个实现了Filter接口的实现类,然后将这个类在web.xml进行配置,那么</span><span style="font-size:13.3333px;">这个类就可以让用户在访问某个目标资源之前,对访问的请求和响应进行拦截。</span></span></p>
<p>更多介绍可以看我的另外一篇文章:<a href="http://blog.csdn.net/u012605477/article/details/75258358" rel="nofollow" target="_blank">http://blog.csdn.net/u012605477/article/details/75258358</a></p>
<p>注意:Struts2在web.xml中看来就是一个Filter,只不过其实现类StrutsPrepareAndExecuteFilter不是我们写的,是Struts2的。</p>
<p>为了验证<span style="font-size:13.3333px;">StrutsPrepareAndExecuteFilter也实现了<span style="font-size:13.3333px;">Filter接口,我们将其和我们自写的过滤器进行对比:</span></span></p>
<p>下面是自写的过滤器FilterA配置:</p>
<p></p>
<pre οnclick="hljs.copyCode(event)"><code class="language-html hljs xml"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-tag">&lt;<span class="hljs-name">filter</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-tag">&lt;<span class="hljs-name">filter-name</span>&gt;</span>FilterA<span class="hljs-tag">&lt;/<span class="hljs-name">filter-name</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-tag">&lt;<span class="hljs-name">filter-class</span>&gt;</span>com.strategy.jpa.FilterA<span class="hljs-tag">&lt;/<span class="hljs-name">filter-class</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-tag">&lt;/<span class="hljs-name">filter</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-tag">&lt;<span class="hljs-name">filter-mapping</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-tag">&lt;<span class="hljs-name">filter-name</span>&gt;</span>FilterA<span class="hljs-tag">&lt;/<span class="hljs-name">filter-name</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-tag">&lt;<span class="hljs-name">url-pattern</span>&gt;</span>/*<span class="hljs-tag">&lt;/<span class="hljs-name">url-pattern</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-tag">&lt;/<span class="hljs-name">filter-mapping</span>&gt;</span></div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre>自写FilterA的代码:
<p></p>
<p></p>
<pre οnclick="hljs.copyCode(event)"><code class="language-java hljs"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">package</span> com.strategy.jpa;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> java.io.IOException;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> javax.servlet.Filter;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> javax.servlet.FilterChain;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> javax.servlet.FilterConfig;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> javax.servlet.ServletException;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> javax.servlet.ServletRequest;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> javax.servlet.ServletResponse;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">FilterA</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Filter</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">init</span><span class="hljs-params">(FilterConfig filterConfig)</span> <span class="hljs-keyword">throws</span> ServletException </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="15"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="16"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="17"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="18"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">doFilter</span><span class="hljs-params">(ServletRequest request, ServletResponse response, FilterChain chain)</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="19"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-keyword">throws</span> IOException, ServletException {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="20"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="21"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="22"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        chain.doFilter(request, response);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="23"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        response.reset();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="24"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="25"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="26"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="27"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">destroy</span><span class="hljs-params">()</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="28"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="29"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="30"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="31"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">}</div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre>web中配置Struts2的代码:
<p></p>
<p></p>
<pre οnclick="hljs.copyCode(event)"><code class="language-java hljs"><ol class="hljs-ln hundred"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> * $Id: DefaultActionSupport.java <span class="hljs-number">651946</span> <span class="hljs-number">2008</span>-<span class="hljs-number">04</span>-<span class="hljs-number">27</span> <span class="hljs-number">13</span>:<span class="hljs-number">41</span>:<span class="hljs-number">38</span>Z apetrelli $</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">package</span> org.apache.struts2.dispatcher.filter;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> org.apache.logging.log4j.LogManager;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> org.apache.logging.log4j.Logger;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> org.apache.struts2.RequestUtils;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> org.apache.struts2.StrutsStatics;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> org.apache.struts2.dispatcher.Dispatcher;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> org.apache.struts2.dispatcher.mapper.ActionMapping;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> org.apache.struts2.dispatcher.ExecuteOperations;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> org.apache.struts2.dispatcher.InitOperations;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> org.apache.struts2.dispatcher.PrepareOperations;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> javax.servlet.Filter;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="15"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> javax.servlet.FilterChain;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="16"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> javax.servlet.FilterConfig;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="17"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> javax.servlet.ServletException;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="18"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> javax.servlet.ServletRequest;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="19"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> javax.servlet.ServletResponse;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="20"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> javax.servlet.http.HttpServletRequest;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="21"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> javax.servlet.http.HttpServletResponse;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="22"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> java.io.IOException;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="23"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> java.util.List;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="24"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> java.util.regex.Pattern;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="25"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="26"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment"><span class="hljs-comment">/**</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="27"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment"> * Handles both the preparation and execution phases of the Struts dispatching process.  This filter is better to use</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="28"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment"> * when you don't have another filter that needs access to action context information, such as Sitemesh.</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="29"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment"> */</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="30"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">StrutsPrepareAndExecuteFilter</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">StrutsStatics</span>, <span class="hljs-title">Filter</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="31"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="32"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> Logger LOG = LogManager.getLogger(StrutsPrepareAndExecuteFilter.class);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="33"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="34"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-keyword">protected</span> PrepareOperations prepare;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="35"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-keyword">protected</span> ExecuteOperations execute;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="36"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-keyword">protected</span> List&lt;Pattern&gt; excludedPatterns = <span class="hljs-keyword"></span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="37"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="38"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">init</span><span class="hljs-params">(FilterConfig filterConfig)</span> <span class="hljs-keyword">throws</span> ServletException </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="39"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        InitOperations init = <span class="hljs-keyword">new</span> InitOperations();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="40"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        Dispatcher dispatcher = <span class="hljs-keyword"></span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="41"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">try</span> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="42"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            FilterHostConfig config = <span class="hljs-keyword">new</span> FilterHostConfig(filterConfig);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="43"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            init.initLogging(config);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="44"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            dispatcher = init.initDispatcher(config);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="45"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            init.initStaticContentLoader(config, dispatcher);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="46"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="47"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            prepare = <span class="hljs-keyword">new</span> PrepareOperations(dispatcher);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="48"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            execute = <span class="hljs-keyword">new</span> ExecuteOperations(dispatcher);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="49"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-keyword">this</span>.excludedPatterns = init.buildExcludedPatternsList(dispatcher);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="50"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="51"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            postInit(dispatcher, filterConfig);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="52"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        } <span class="hljs-keyword">finally</span> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="53"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-keyword">if</span> (dispatcher != <span class="hljs-keyword"></span>) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="54"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                dispatcher.cleanUpAfterInit();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="55"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="56"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            init.cleanup();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="57"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="58"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="59"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="60"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-comment"><span class="hljs-comment">/**</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="61"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment">     * Callback for post initialization</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="62"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment">     *</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="63"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment">     * <span class="hljs-doctag">@param</span> dispatcher the dispatcher</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="64"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment">     * <span class="hljs-doctag">@param</span> filterConfig the filter config</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="65"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment">     */</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="66"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">protected</span> <span class="hljs-keyword">void</span> <span class="hljs-title">postInit</span><span class="hljs-params">(Dispatcher dispatcher, FilterConfig filterConfig)</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="67"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="68"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="69"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">doFilter</span><span class="hljs-params">(ServletRequest req, ServletResponse res, FilterChain chain)</span> <span class="hljs-keyword">throws</span> IOException, ServletException </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="70"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="71"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        HttpServletRequest request = (HttpServletRequest) req;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="72"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        HttpServletResponse response = (HttpServletResponse) res;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="73"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="74"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">try</span> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="75"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            String uri = RequestUtils.getUri(request);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="76"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-keyword">if</span> (excludedPatterns != <span class="hljs-keyword"></span> &amp;&amp; prepare.isUrlExcluded(request, excludedPatterns)) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="77"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                LOG.trace(<span class="hljs-string">"Request {} is excluded from handling by Struts, passing request to other filters"</span>, uri);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="78"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                chain.doFilter(request, response);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="79"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            } <span class="hljs-keyword">else</span> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="80"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                LOG.trace(<span class="hljs-string">"Checking if {} is a static resource"</span>, uri);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="81"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                <span class="hljs-keyword">boolean</span> handled = execute.executeStaticResourceRequest(request, response);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="82"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                <span class="hljs-keyword">if</span> (!handled) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="83"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                    LOG.trace(<span class="hljs-string">"Assuming uri {} as a normal action"</span>, uri);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="84"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                    prepare.setEncodingAndLocale(request, response);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="85"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                    prepare.createActionContext(request, response);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="86"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                    prepare.assignDispatcherToThread();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="87"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                    request = prepare.wrapRequest(request);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="88"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                    ActionMapping mapping = prepare.findActionMapping(request, response, <span class="hljs-keyword">true</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="89"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                    <span class="hljs-keyword">if</span> (mapping == <span class="hljs-keyword"></span>) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="90"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                        LOG.trace(<span class="hljs-string">"Cannot find mapping for {}, passing to other filters"</span>, uri);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="91"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                        chain.doFilter(request, response);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="92"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                    } <span class="hljs-keyword">else</span> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="93"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                        LOG.trace(<span class="hljs-string">"Found mapping {} for {}"</span>, mapping, uri);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="94"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                        execute.executeAction(request, response, mapping);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="95"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                    }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="96"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="97"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="98"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        } <span class="hljs-keyword">finally</span> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="99"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            prepare.cleanupRequest(request);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="100"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="101"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="102"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="103"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">destroy</span><span class="hljs-params">()</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="104"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        prepare.cleanupDispatcher();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="105"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="106"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="107"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">}</div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre><span style="color:#ff0000;">对比可知,struts2也实现了Filter接口,只是他比我们自己写的FilterA多实现了一个接口StrutsStatics,其它的没有变化。</span>
<p></p>
<p>我们对上面的代码进行了解:</p>
<p>在Init方法里面,我们看到有一个config对象,该类对象的作用是对FilterConfig进行封装。</p>
<pre οnclick="hljs.copyCode(event)"><code class="language-java hljs"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">package</span> org.apache.struts2.dispatcher.filter;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> org.apache.struts2.util.MakeIterator;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> javax.servlet.FilterConfig;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> javax.servlet.ServletContext;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> java.util.Iterator;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">import</span> org.apache.struts2.dispatcher.HostConfig;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment"><span class="hljs-comment">/**</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment"> * Host configuration that wraps FilterConfig</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment"> */</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">FilterHostConfig</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">HostConfig</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="15"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="16"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-keyword">private</span> FilterConfig config;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="17"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="18"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">FilterHostConfig</span><span class="hljs-params">(FilterConfig config)</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="19"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">this</span>.config = config;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="20"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="21"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> String <span class="hljs-title">getInitParameter</span><span class="hljs-params">(String key)</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="22"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">return</span> config.getInitParameter(key);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="23"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="24"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="25"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> Iterator&lt;String&gt; <span class="hljs-title">getInitParameterNames</span><span class="hljs-params">()</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="26"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">return</span> MakeIterator.convert(config.getInitParameterNames());</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="27"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="28"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="29"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> ServletContext <span class="hljs-title">getServletContext</span><span class="hljs-params">()</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="30"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">return</span> config.getServletContext();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="31"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="32"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">}</div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre>
<p>然后又在Init方法里面通过<span style="font-size:13.3333px;">创建的config对象,并调用</span>initDispatcher方法创建了<a href="https://www.baidu.com/s?wd=%E8%BD%AC%E5%8F%91%E5%99%A8&amp;tn=24004469_oem_dg&amp;rsv_dl=gh_pl_sl_csd" target="_blank">转发器</a>对象dispatcher对象。以及通过initLogging方法初始化日志记录器。</p>
<pre οnclick="hljs.copyCode(event)"><code class="language-java hljs"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">private</span> Dispatcher <span class="hljs-title">createDispatcher</span><span class="hljs-params">( HostConfig filterConfig )</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        Map&lt;String, String&gt; params = <span class="hljs-keyword">new</span> HashMap&lt;&gt;();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">for</span> ( Iterator e = filterConfig.getInitParameterNames(); e.hasNext(); ) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            String name = (String) e.next();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            String value = filterConfig.getInitParameter(name);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            params.put(name, value);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> Dispatcher(filterConfig.getServletContext(), params);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">cleanup</span><span class="hljs-params">()</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        ActionContext.setContext(<span class="hljs-keyword"></span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre><pre οnclick="hljs.copyCode(event)"><code class="language-java hljs"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">initLogging</span><span class="hljs-params">( HostConfig filterConfig )</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        String factoryName = filterConfig.getInitParameter(<span class="hljs-string">"loggerFactory"</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">if</span> (factoryName != <span class="hljs-keyword"></span>) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-keyword">try</span> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                Class cls = ClassLoaderUtil.loadClass(factoryName, <span class="hljs-keyword">this</span>.getClass());</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                LoggerFactory fac = (LoggerFactory) cls.newInstance();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                LoggerFactory.setLoggerFactory(fac);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            } <span class="hljs-keyword">catch</span> ( InstantiationException e ) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                System.err.println(<span class="hljs-string">"Unable to instantiate logger factory: "</span> + factoryName + <span class="hljs-string">", using default"</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                e.printStackTrace();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            } <span class="hljs-keyword">catch</span> ( IllegalAccessException e ) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                System.err.println(<span class="hljs-string">"Unable to access logger factory: "</span> + factoryName + <span class="hljs-string">", using default"</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                e.printStackTrace();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            } <span class="hljs-keyword">catch</span> ( ClassNotFoundException e ) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="15"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                System.err.println(<span class="hljs-string">"Unable to locate logger factory class: "</span> + factoryName + <span class="hljs-string">", using default"</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="16"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                e.printStackTrace();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="17"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="18"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="19"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre>
<p>接下来调用了init对象initStaticContentLoader(config, dispatcher);方法加载一些静态资源。</p>
<pre οnclick="hljs.copyCode(event)"><code class="language-java hljs"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> StaticContentLoader <span class="hljs-title">initStaticContentLoader</span><span class="hljs-params">( HostConfig filterConfig, Dispatcher dispatcher )</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        StaticContentLoader loader = dispatcher.getContainer().getInstance(StaticContentLoader.class);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        loader.setHostConfig(filterConfig);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">return</span> loader;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre>
<p></p>
<p><span style="color:#ff0000;">最重要的就是dispatcher,它主要将filter拦截到的请求转入struts2的请求处理模块,我们必须知道这一点。</span></p>
<p>其次是FilterConfig,它将我们在web.xml中的Filter的配置信息也保存到了dispatcher中。下面是该对象的构造方法。</p>
<p></p>
<pre οnclick="hljs.copyCode(event)"><code class="language-java hljs"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">Dispatcher</span><span class="hljs-params">(ServletContext servletContext, Map&lt;String, String&gt; initParams)</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">this</span>.servletContext = servletContext;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">this</span>.initParams = initParams;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre>
<p>接下来就是prepare和execute对象,和InitOperations类似,也是进行了封装一些操作,都是截取一部分重要的代码。</p>
<pre οnclick="hljs.copyCode(event)"><code class="language-java hljs"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">PrepareOperations</span><span class="hljs-params">(Dispatcher dispatcher)</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">this</span>.dispatcher = dispatcher;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> ActionContext <span class="hljs-title">createActionContext</span><span class="hljs-params">(HttpServletRequest request, HttpServletResponse response)</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        ActionContext ctx;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        Integer counter = <span class="hljs-number">1</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        Integer oldCounter = (Integer) request.getAttribute(CLEANUP_RECURSION_COUNTER);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">if</span> (oldCounter != <span class="hljs-keyword"></span>) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            counter = oldCounter + <span class="hljs-number">1</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        ActionContext oldContext = ActionContext.getContext();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">if</span> (oldContext != <span class="hljs-keyword"></span>) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-comment">// detected existing context, so we are probably in a forward</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="15"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            ctx = <span class="hljs-keyword">new</span> ActionContext(<span class="hljs-keyword">new</span> HashMap&lt;&gt;(oldContext.getContextMap()));</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="16"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        } <span class="hljs-keyword">else</span> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="17"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            ValueStack stack = dispatcher.getContainer().getInstance(ValueStackFactory.class).createValueStack();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="18"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            stack.getContext().putAll(dispatcher.createContextMap(request, response, <span class="hljs-keyword"></span>));</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="19"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            ctx = <span class="hljs-keyword">new</span> ActionContext(stack.getContext());</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="20"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="21"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        request.setAttribute(CLEANUP_RECURSION_COUNTER, counter);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="22"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        ActionContext.setContext(ctx);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="23"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">return</span> ctx;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="24"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre><span style="font-size:13.3333px;">execute对象</span><br><pre οnclick="hljs.copyCode(event)"><code class="language-java hljs"><ol class="hljs-ln" style="width:1085px"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">ExecuteOperations</span><span class="hljs-params">(Dispatcher dispatcher)</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">this</span>.dispatcher = dispatcher;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">boolean</span> <span class="hljs-title">executeStaticResourceRequest</span><span class="hljs-params">(HttpServletRequest request, HttpServletResponse response)</span> <span class="hljs-keyword">throws</span> IOException, ServletException </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-comment">// there is no action in this request, should we look for a static resource?</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        String resourcePath = RequestUtils.getServletPath(request);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">if</span> (<span class="hljs-string">""</span>.equals(resourcePath) &amp;&amp; <span class="hljs-keyword"></span> != request.getPathInfo()) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            resourcePath = request.getPathInfo();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        StaticContentLoader staticResourceLoader = dispatcher.getContainer().getInstance(StaticContentLoader.class);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">if</span> (staticResourceLoader.canHandle(resourcePath)) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="15"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            staticResourceLoader.findStaticResource(resourcePath, request, response);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="16"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-comment">// The framework did its job here</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="17"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-keyword">return</span> <span class="hljs-keyword">true</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="18"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="19"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        } <span class="hljs-keyword">else</span> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="20"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-comment">// this is a normal request, let it pass through</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="21"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-keyword">return</span> <span class="hljs-keyword">false</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="22"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="23"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre>
<p>从上面的代码可以看出,这两个对象封装了请求预处理和请求处理的操作,当处理请求时方法被调用<br></p>
<p>在上述的代码中有个很重要的方法未罗列出来,那就是Disptcher中得init方法,该方法初始读取一些配置文件,包含我们想要知道的读取struts2.xml的方法。</p>
<pre οnclick="hljs.copyCode(event)"><code class="language-java hljs"><ol class="hljs-ln" style="width:952px"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">init</span><span class="hljs-params">()</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">if</span> (configurationManager == <span class="hljs-keyword"></span>) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            configurationManager = createConfigurationManager(DefaultBeanSelectionProvider.DEFAULT_BEAN_NAME);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">try</span> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            init_FileManager();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            init_DefaultProperties(); <span class="hljs-comment">// [1]</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            init_TraditionalXmlConfigurations(); <span class="hljs-comment">// [2]</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            init_LegacyStrutsProperties(); <span class="hljs-comment">// [3]</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            init_CustomConfigurationProviders(); <span class="hljs-comment">// [5]</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            init_FilterInitParameters() ; <span class="hljs-comment">// [6]</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            init_AliasStandardObjects() ; <span class="hljs-comment">// [7]</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="15"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="16"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            Container container = init_PreloadConfiguration();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="17"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            container.inject(<span class="hljs-keyword">this</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="18"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            init_CheckWebLogicWorkaround(container);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="19"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="20"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-keyword">if</span> (!dispatcherListeners.isEmpty()) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="21"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                <span class="hljs-keyword">for</span> (DispatcherListener l : dispatcherListeners) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="22"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                    l.dispatcherInitialized(<span class="hljs-keyword">this</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="23"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="24"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="25"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            errorHandler.init(servletContext);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="26"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="27"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        } <span class="hljs-keyword">catch</span> (Exception ex) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="28"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            LOG.error(<span class="hljs-string">"Dispatcher initialization failed"</span>, ex);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="29"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> StrutsException(ex);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="30"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="31"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre>上面是init方法,里面调用了诸多读取配置文件的方法,包含我们想要知道的读取struts.xml的方法:<pre οnclick="hljs.copyCode(event)"><code class="language-java hljs"><ol class="hljs-ln" style="width:1059px"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">private</span> <span class="hljs-keyword">void</span> <span class="hljs-title">init_TraditionalXmlConfigurations</span><span class="hljs-params">()</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        String configPaths = initParams.get(<span class="hljs-string">"config"</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">if</span> (configPaths == <span class="hljs-keyword"></span>) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            configPaths = DEFAULT_CONFIGURATION_PATHS;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        String[] files = configPaths.split(<span class="hljs-string">"\\s*[,]\\s*"</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">for</span> (String file : files) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-keyword">if</span> (file.endsWith(<span class="hljs-string">".xml"</span>)) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                <span class="hljs-keyword">if</span> (<span class="hljs-string">"xwork.xml"</span>.equals(file)) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                    configurationManager.addContainerProvider(createXmlConfigurationProvider(file, <span class="hljs-keyword">false</span>));</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                } <span class="hljs-keyword">else</span> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                    configurationManager.addContainerProvider(createStrutsXmlConfigurationProvider(file, <span class="hljs-keyword">false</span>, servletContext));</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            } <span class="hljs-keyword">else</span> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="15"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> IllegalArgumentException(<span class="hljs-string">"Invalid configuration file name"</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="16"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="17"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="18"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre>在上面的代码中,设定了读取struts.xml的默认路径,其内容如下:<pre οnclick="hljs.copyCode(event)"><code class="language-java hljs"><span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> String DEFAULT_CONFIGURATION_PATHS = <span class="hljs-string">"struts-default.xml,struts-plugin.xml,struts.xml"</span>;</code><div class="hljs-button" data-title="复制"></div></pre>至此,web应用配置struts2框架,以及struts2如何将Filter封装成struts2的,甚至如何读取struts.xml以及其他配置,并进行相关struts2参数初始化都有了大概了解,接下来说一下Action。
<p></p>
<p>回到StrutsPrepareAndExecuteFilter类的doFilter中,</p>
<pre οnclick="hljs.copyCode(event)"><code class="language-java hljs"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-comment">//每次发送一个Request,StrutsPrepareAndExecuteFilter都会调用doFilter方法  </span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">doFilter</span><span class="hljs-params">(ServletRequest req, ServletResponse res, FilterChain chain)</span> <span class="hljs-keyword">throws</span> IOException, ServletException </span>{  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        HttpServletRequest request = (HttpServletRequest) req;  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        HttpServletResponse response = (HttpServletResponse) res;  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">try</span> {  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-comment">//设置编码和国际化    </span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            prepare.setEncodingAndLocale(request, response);  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-comment">//ActionContext创建  </span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            prepare.createActionContext(request, response);  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            prepare.assignDispatcherToThread();  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-keyword">if</span> ( excludedPatterns != <span class="hljs-keyword"></span> &amp;&amp; prepare.isUrlExcluded(request, excludedPatterns)) {  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                chain.doFilter(request, response);  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="15"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            } <span class="hljs-keyword">else</span> {  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="16"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                request = prepare.wrapRequest(request);  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="17"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                ActionMapping mapping = prepare.findActionMapping(request, response, <span class="hljs-keyword">true</span>);  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="18"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                <span class="hljs-comment">//如果找不到对应的action配置  </span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="19"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                <span class="hljs-keyword">if</span> (mapping == <span class="hljs-keyword"></span>) {  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="20"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                    <span class="hljs-comment"><span class="hljs-comment">/* </span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="21"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment">                     * 就是如果path是以“/struts”开头,则到初始参数packages配置的包路径去查找对应的静态资源并输出到页面流中, </span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="22"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment">                     * 当然.class文件除外。如果再没有则跳转到404 </span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="23"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment">                     */</span>  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="24"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                    <span class="hljs-keyword">boolean</span> handled = execute.executeStaticResourceRequest(request, response);  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="25"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                    <span class="hljs-keyword">if</span> (!handled) {  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="26"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                        chain.doFilter(request, response);  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="27"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                    }  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="28"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                } <span class="hljs-keyword">else</span> {  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="29"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                    <span class="hljs-comment"><span class="hljs-comment">/* </span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="30"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment">                     * 找到对应action配置文件后,调用ExecuteOperations类中executeAction, </span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="31"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment">                     * 开始谳用Action的方法。 </span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="32"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment">                     */</span>  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="33"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                    execute.executeAction(request, response, mapping);  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="34"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                }  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="35"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            }  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="36"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        } <span class="hljs-keyword">finally</span> {  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="37"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            prepare.cleanupRequest(request);  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="38"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        }  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="39"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }  </div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre>相关准备(prepare)方法,设置编码的方法不再叙述(setEncodingAndLocale),我们主要说一下ActionContext。
<p><span style="font-size:12px;">prepare.createActionContext(request, response);</span></p>
<p style="font-size:13.3333px;"><span style="font-size:13.3333px;">ActionContext</span>是一个struts2容器,主要存储request、session、application、parameters等相关信息。</p>
<p style="font-size:13.3333px;">ActionContext是一个线程的本地变量,这意味着不同的action之间不会共享ActionContext,所以也不用考虑线程安全问题</p>
<pre οnclick="hljs.copyCode(event)"><code class="language-java hljs"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> ActionContext <span class="hljs-title">createActionContext</span><span class="hljs-params">(HttpServletRequest request, HttpServletResponse response)</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        ActionContext ctx;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        Integer counter = <span class="hljs-number">1</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        Integer oldCounter = (Integer) request.getAttribute(CLEANUP_RECURSION_COUNTER);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">if</span> (oldCounter != <span class="hljs-keyword"></span>) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            counter = oldCounter + <span class="hljs-number">1</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        ActionContext oldContext = ActionContext.getContext();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">if</span> (oldContext != <span class="hljs-keyword"></span>) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-comment">// detected existing context, so we are probably in a forward</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            ctx = <span class="hljs-keyword">new</span> ActionContext(<span class="hljs-keyword">new</span> HashMap&lt;&gt;(oldContext.getContextMap()));</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        } <span class="hljs-keyword">else</span> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            ValueStack stack = dispatcher.getContainer().getInstance(ValueStackFactory.class).createValueStack();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="15"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            stack.getContext().putAll(dispatcher.createContextMap(request, response, <span class="hljs-keyword"></span>));</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="16"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            ctx = <span class="hljs-keyword">new</span> ActionContext(stack.getContext());</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="17"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="18"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        request.setAttribute(CLEANUP_RECURSION_COUNTER, counter);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="19"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        ActionContext.setContext(ctx);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="20"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">return</span> ctx;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="21"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre><br>
我们再看一下ActionContext是什么,取部分代码,由此可知ActionContext是一个键值对集合,跟Spring中的bean类似:
<p></p>
<pre οnclick="hljs.copyCode(event)"><code class="language-java hljs"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">ActionContext</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Serializable</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-keyword">static</span> ThreadLocal&lt;ActionContext&gt; actionContext = <span class="hljs-keyword">new</span> ThreadLocal&lt;&gt;();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-keyword">private</span> Map&lt;String, Object&gt; context;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">ActionContext</span><span class="hljs-params">(Map&lt;String, Object&gt; context)</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">this</span>.context = context;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre>有了创建Action的方法,肯定有使用Action的方法,我们现在去找使用的方法:<pre οnclick="hljs.copyCode(event)"><code class="language-java hljs"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">serviceAction</span><span class="hljs-params">(HttpServletRequest request, HttpServletResponse response, ActionMapping mapping)</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-keyword">throws</span> ServletException {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        Map&lt;String, Object&gt; extraContext = createContextMap(request, response, mapping);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-comment">// If there was a previous value stack, then create a new copy and pass it in to be used by the new Action</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        ValueStack stack = (ValueStack) request.getAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">boolean</span> nullStack = stack == <span class="hljs-keyword"></span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">if</span> (nullStack) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            ActionContext ctx = ActionContext.getContext();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-keyword">if</span> (ctx != <span class="hljs-keyword"></span>) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                stack = ctx.getValueStack();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="15"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">if</span> (stack != <span class="hljs-keyword"></span>) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="16"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            extraContext.put(ActionContext.VALUE_STACK, valueStackFactory.createValueStack(stack));</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="17"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="18"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="19"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        String timerKey = <span class="hljs-string">"Handling request from Dispatcher"</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="20"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-keyword">try</span> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="21"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            UtilTimerStack.push(timerKey);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="22"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            String namespace = mapping.getNamespace();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="23"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            String name = mapping.getName();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="24"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            String method = mapping.getMethod();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="25"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="26"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            ActionProxy proxy = getContainer().getInstance(ActionProxyFactory.class).createActionProxy(</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="27"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                    namespace, name, method, extraContext, <span class="hljs-keyword">true</span>, <span class="hljs-keyword">false</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="28"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="29"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            request.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY, proxy.getInvocation().getStack());</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="30"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="31"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-comment">// if the ActionMapping says to go straight to a result, do it!</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="32"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-keyword">if</span> (mapping.getResult() != <span class="hljs-keyword"></span>) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="33"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                Result result = mapping.getResult();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="34"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                result.execute(proxy.getInvocation());</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="35"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            } <span class="hljs-keyword">else</span> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="36"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                proxy.execute();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="37"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="38"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="39"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-comment">// If there was a previous value stack then set it back onto the request</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="40"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-keyword">if</span> (!nullStack) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="41"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                request.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY, stack);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="42"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="43"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        } <span class="hljs-keyword">catch</span> (ConfigurationException e) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="44"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            logConfigurationException(request, e);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="45"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            sendError(request, response, HttpServletResponse.SC_NOT_FOUND, e);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="46"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        } <span class="hljs-keyword">catch</span> (Exception e) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="47"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-keyword">if</span> (handleException || devMode) {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="48"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                sendError(request, response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="49"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            } <span class="hljs-keyword">else</span> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="50"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> ServletException(e);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="51"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="52"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        } <span class="hljs-keyword">finally</span> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="53"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            UtilTimerStack.pop(timerKey);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="54"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="55"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    }</div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre>
<p>在上面的try语句里面我们可以得知,struts是怎么通过命名空间,读取action的配置,以及action的method方法,</p>
<p>尤其是如何从容器中获得ActionProxyFactory代理工厂 ,是怎么创建ActionProxy来执行一个特定的命名空间和动作的。</p>
<p>以及怎么通过我们在struts2中设定的跳转方法,跳转到指定页面的。</p>
<pre οnclick="hljs.copyCode(event)"><code class="language-java hljs"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-comment">//执行execute方法,并转向结果   </span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            <span class="hljs-keyword">if</span> (mapping.getResult() != <span class="hljs-keyword"></span>) {  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                Result result = mapping.getResult();  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                result.execute(proxy.getInvocation());  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            } <span class="hljs-keyword">else</span> {  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">                proxy.execute();  </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            }</div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre>
<p>至此,对于Struts2是如何工作的,怎么读取xml的,如何搭建在web应用中基本叙述完了,更详细的实在说不完,各位大佬可以看下下面这位大神的博客,很给力,就是看起来太繁琐。</p>
另外,本文部分来源于该大神,未通知,深表歉意。<br><p><a href="http://blog.csdn.net/yuan_xw/article/details/7838123" rel="nofollow" target="_blank">http://blog.csdn.net/yuan_xw/article/details/7838123</a><br><br></p>
<p><br><br></p>
            </div>
                </div>
    </article>
</div>
  <div class="hide-article-box hide-article-pos text-center">
    <div class="border"></div>
        <a class="btn article-footer-btn" id="btn-readmore" data-track-view="{&quot;mod&quot;:&quot;popu_376&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u012605477/article/details/76129675,&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_376&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u012605477/article/details/76129675,&quot;}">阅读更多</a>
        <a class="btn article-footer-btn article-footer-bookmark-btn">
      <svg class="icon no-active hover-hide" aria-hidden="true">
        <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-bookmark"></use>
      </svg>
      <span>收藏</span>
    </a>
    <div class="btn article-footer-btn  bds_weixin article-footer-share-btn" data-cmd="weixin" title="分享">
      <svg class="icon no-active hover-hide" aria-hidden="true">
        <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-share"></use>
      </svg>
      <span>分享</span>
      <div class="bdsharebuttonbox bdshare-button-style0-16" data-bd-bind="1547107104105">
        <a href="#" class="bds_weixin clear-share-style-article-footer" data-cmd="weixin" title="分享"></a>
      </div>
    </div>
    
  </div>
  <script>
  (function(){
    function collection(){
      if (currentUserName) {
        if (!$(this).hasClass("liked")) {
          $.ajax({
            url: 'https://my.csdn.net/my/favorite/do_add/2',
            dataType: 'json',
            type: 'get',
            xhrFields: {
              withCredentials: true
            },
            crossDomain: true,
            data: {
              title: articleTit,
              url: curentUrl,
              share: 1,
              map_name: ''
            },
            success: function(data) {
              if (data.succ == 1) {
                $('.btn-bookmark').addClass("liked");
                $('.article-footer-bookmark-btn').addClass("liked").children('span').text('已收藏');
                
                alert('收藏成功,可以在个人中心查看我的收藏');
              } else {
                if (data.msg === "您已经收藏过") {
                  $('.btn-bookmark').addClass("liked");
                  $('.article-footer-bookmark-btn').addClass("liked").children('span').text('已收藏');
                }
                alert(data.msg);
              }
            }
          });
        } else {
          alert('您已经收藏过');
        }
      } else {
        window.csdn.loginBox.show();
      }
    }
    window.csdn = window.csdn ? window.csdn : {};
    window.csdn.articleCollection = collection;
    function setArticleH(btnReadmore,posi){
      var winH = $(window).height();
      var articleBox = $("div.article_content");
      var artH = articleBox.height();
      if(artH > winH*posi){
        articleBox.css({
          'height':winH*posi+'px',
          'overflow':'hidden'
        })
        btnReadmore.click(function(){
          articleBox.removeAttr("style");
          $(this).hide().parent().addClass('hide-article-style');
        })
      }else{
        btnReadmore.hide().parent().addClass('hide-article-style');
      }
    }
    var btnReadmore = $("#btn-readmore");
    $('.article-footer-bookmark-btn').click(window.csdn.articleCollection)
    if(btnReadmore.length>0){
      if(currentUserName){
        setArticleH(btnReadmore,3);
      }else{
        setArticleH(btnReadmore,1.2);
      }
    }else{
      $('.hide-article-box').addClass('hide-article-style');
    }
  })()
</script>
<script>
        $(".MathJax").remove();
        if($('div.markdown_views pre.prettyprint code.hljs').length > 0 ){
                $('div.markdown_views')[0].className = 'markdown_views';
        }
</script>
        <div id="dmp_ad_58"><div id="kp_box_58" data-pid="58" data-track-view="{&quot;mod&quot;:&quot;kp_popu_58-402&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_58-402&quot;,&quot;con&quot;:&quot;,,&quot;}"><div style="width:100%;background:#fff;border:3px solid #fff;">
<script type="text/javascript" src="//static.mediav.com/js/mvf_news_feed.js"></script>
<div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1547107100833_960" id="QIHOO__WEB__SO__1547107100833_960" style="display:block;margin:0;padding:0;border:none;width:900px;height:100px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1547107100833_960-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1547107100833_960 singleImage clk" data-href="https://s1.milkjpg.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABK/rJGQgAAhnJ+isA&amp;mvid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;bid=13153827c7e14c53&amp;price=AAAAAFw2+x8AAAAAAAyYPkj4wXEgb6WynU2oXQ==&amp;finfo=DAABCAABAAABJAgAAgAAAC8EAAM/eWn06TJsswAIAAIAAAADCgADdjvM7VA2p6MIAAQAAAAvBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAIQoADwAAAAAALI5AAA&amp;ugi=FcTgigEVyNtrTBUCFboCFQAVAAAV+9DCswsWgAgVyAEA&amp;uai=FZy4mwIlAhUCFrLd/umz9eG77AEV8gglwaaMsgglABUaAA&amp;ubi=FbS4SRWmvsMCFdjqmRcV0OmaWBUEFRwW8t72/RYWst2T0b275rvsATQCFqjAkIAIJQYV19vD0wcVoAQVADaXkMvh8eGzyZoBAA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;ldtype=2&amp;csign2=-cS9iGDl2yo=&amp;url=http%3A%2F%2Fzjbg.ruiyangsilicone-rubber.cn%2F%3Fgzid%3Dx2" data-pv="https://s1.milkjpg.com/s?type=1&amp;r=20&amp;tid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;finfo=DAABCAABAAABJAgAAgAAAC8EAAM/eWn06TJsswAIAAIAAAADCgADdjvM7VA2p6MIAAQAAAAvBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAIQoADwAAAAAALI5AAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABK/rJGQgAAhnJ+isA&amp;mvid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;bid=13153827c7e14c53&amp;ugi=FcTgigEVyNtrTBUCFboCFQAVAAAV+9DCswsWgAgVyAEA&amp;uai=FZy4mwIlAhUCFrLd/umz9eG77AEV8gglwaaMsgglABUaAA&amp;ubi=FbS4SRWmvsMCFdjqmRcV0OmaWBUEFRwW8t72/RYWst2T0b275rvsATQCFqjAkIAIJQYV19vD0wcVoAQVADaXkMvh8eGzyZoBAA&amp;ds=1&amp;price=AAAAAFw2+x8AAAAAAAyYPkj4wXEgb6WynU2oXQ==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=13153827c7e14c53&amp;p=2321934&amp;l=1136674&amp;s=1&amp;z=1&amp;w=AAAAAFw2+x8AAAAAAAyYdBILVdyJ9nF8LA6xag==&amp;k=kADGUwAAAAA=&amp;i=IDASetLdRAhH&amp;v=65058514552351504120018" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=13153827c7e14c53&amp;p=2321934&amp;l=1136674&amp;s=1&amp;k=kADGUwAAAAA=&amp;i=IDASetLdRAhH&amp;v=65058514552351504120018&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
    <info-div class="wrap">
        <info-div class="singleImage-img singleImage-img-left">
            <info-div class="img" style="background-image:url(https://s3m.milkjpg.com/galileo/601626-bee211a5e9c6a14c835b187eba39d14d.jpg)"><info-div class="ads-tag"></info-div></info-div>
        </info-div>
        <info-div class="singleImage-body singleImage-body-left">
            <info-div class="singleImage-title">新年折上折!德国钻石无油烟不粘锅!2折只限今日!不抢就亏了!</info-div>
            <info-div class="singleImage-desc">建颂企业 · 燨燚</info-div>
        </info-div>
   </info-div>
   <info-div style="clear:both;"></info-div>
</info-div>
</info-div></newsfeed></div>
<script>
                                               NEWS_FEED({
                w: 900,
                h : 100,
                showid : 'ztvJV8',
                placeholderId: "three_ad1",
                inject : 'define',
                define : {
                    imagePosition : 'left',
                    imageBorderRadius : 0,
                    imageWidth: 90,
                    imageHeight: 68,
                    imageFill : 'clip',
                    displayImage : true,
                    displayTitle : true,
                    titleFontSize: 18,
                    titleFontColor: '#000',
                    titleFontFamily : 'Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif',
                    titleFontWeight: 'bold',
                    titlePaddingTop : 0,
                    titlePaddingRight : 0,
                    titlePaddingBottom : 5,
                    titlePaddingLeft : 16,
                    displayDesc : true,
                    descFontSize: 14,
                    descFontColor: '#8e959a',
                    descFontFamily : 'Microsoft YaHei',
                    paddingTop : 20,
                    paddingRight : 0,
                    paddingBottom : 0,
                    paddingLeft : 20,
                    backgroundColor: '#fff',
                    hoverColor: '#000'
                      }
                  })
                                        </script>
</div></div></div>        <a id="commentBox"></a>
<div class="comment-box">
    
    <div class="comment-edit-box d-flex">
        <a id="commentsedit"></a>
        <div class="user-img">
            <a href="//me.csdn.net/qq_41441003" target="_blank">
                <img class="" src="https://avatar.csdn.net/4/F/8/3_qq_41441003.jpg">
            </a>
        </div>
        <form id="commentform">
            <input type="hidden" id="comment_replyId">
            <textarea class="comment-content" name="comment_content" id="comment_content" placeholder="想对作者说点什么"></textarea>
            <div class="opt-box"> <!-- d-flex -->
                <div id="ubbtools" class="add_code">
                    <a href="#insertcode" code="code" target="_self"><i class="icon iconfont icon-daima"></i></a>
                </div>
                <input type="hidden" id="comment_replyId" name="comment_replyId">
                <input type="hidden" id="comment_userId" name="comment_userId" value="">
                <input type="hidden" id="commentId" name="commentId" value="">
                <div style="display: none;" class="csdn-tracking-statistics tracking-click" data-mod="popu_384"><a href="#" target="_blank" class="comment_area_btn">发表评论</a></div>
                <div class="dropdown" id="myDrap">
                    <a class="dropdown-face d-flex align-items-center" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
                    <div class="txt-selected text-truncate">添加代码片</div>
                    <svg class="icon d-block" aria-hidden="true">
                        <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-triangledown"></use>
                    </svg>
                    </a>
                    <ul class="dropdown-menu" id="commentCode" aria-labelledby="drop4">
                        <li><a data-code="html">HTML/XML</a></li>
                        <li><a data-code="objc">objective-c</a></li>
                        <li><a data-code="ruby">Ruby</a></li>
                        <li><a data-code="php">PHP</a></li>
                        <li><a data-code="csharp">C</a></li>
                        <li><a data-code="cpp">C++</a></li>
                        <li><a data-code="javascript">JavaScript</a></li>
                        <li><a data-code="python">Python</a></li>
                        <li><a data-code="java">Java</a></li>
                        <li><a data-code="css">CSS</a></li>
                        <li><a data-code="sql">SQL</a></li>
                        <li><a data-code="plain">其它</a></li>
                    </ul>
                </div>  
                <div class="right-box">
                    <span id="tip_comment" class="tip">还能输入<em>1000</em>个字符</span>
                    <input type="submit" class="btn btn-sm btn-red btn-comment" value="发表评论">
                </div>
            </div>
        </form>
    </div>

        <div class="comment-list-container">
        <a id="comments"></a>
        <div class="comment-list-box">
        </div>
        <div id="commentPage" class="pagination-box d-none"></div>
        
    </div>
</div>
        <div class="recommend-box">
                    <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/liuyinghui523/article/details/48290625,BlogCommendFromGuangxin_0,index_0&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/liuyinghui523/article/details/48290625" target="_blank" title="Struts 2详细工作流程及原理">
                <h4 class="text-truncate oneline" style="width: 748px;">
                        Struts 2详细工作流程及原理                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/6/A/6/3_liuyinghui523.jpg" alt="liuyinghui523" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">liuyinghui523</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">09-08</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            1.3万</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/liuyinghui523/article/details/48290625" target="_blank" title="Struts 2详细工作流程及原理">
                            <span class="desc oneline">Struts 2详细工作流程

&nbsp; &nbsp;&nbsp;

Struts2工作原理及流程

&nbsp;&nbsp;&nbsp;&nbsp; Struts2框架的基本思想是采用MVC设计模式,即将应用设计成模型(Model)、视图(View)和控制器(Co...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/liuyinghui523">来自:    <span class="blog_title"> liuyinghui523的专栏</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u013497151/article/details/46371847,BlogCommendFromGuangxin_1,index_1&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/u013497151/article/details/46371847" target="_blank" title="走进Struts2(一) —  Struts2的运行流程及其工作原理">
                <h4 class="text-truncate oneline" style="width: 748px;">
                        走进<em>Struts2</em>(一) —  <em>Struts2</em>的运行流程及其工作原理                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/A/B/B/3_u013497151.jpg" alt="u013497151" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">u013497151</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">06-05</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            1.6万</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/u013497151/article/details/46371847" target="_blank" title="走进Struts2(一) —  Struts2的运行流程及其工作原理">
                            <span class="desc oneline">Struts2是一套非常优秀的Web应用框架,实现优雅、功能强大、使用简洁。可以说是Struts2是一款非常成熟的MVC架构。
在我们学习Struts2时,最好是先学习它的运行流程、核心概念,从中得到...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/u013497151">来自:    <span class="blog_title"> NotPerfect-EOF</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/llziseweiqiu/article/details/78765952,BlogCommendFromGuangxin_2,index_2&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/llziseweiqiu/article/details/78765952" target="_blank" title="struts ---核心过滤器理解---">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        struts ---核心过滤器理解---                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/3/1/8/3_llziseweiqiu.jpg" alt="llziseweiqiu" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">llziseweiqiu</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">12-10</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            1795</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/llziseweiqiu/article/details/78765952" target="_blank" title="struts ---核心过滤器理解---">
                            <span class="desc oneline">struts2---核心控制器
1介绍

struts核心过滤器FilterDispatcher介绍 

FilterDispatcher功能介绍 
FilterDispatcher是st...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/llziseweiqiu">来自:    <span class="blog_title"> llziseweiqiu的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    <div class="recommend-item-box recommend-ad-box"><div id="kp_box_59" data-pid="59" data-track-view="{&quot;mod&quot;:&quot;kp_popu_59-517&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_59-517&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1547107100991_490" id="QIHOO__WEB__SO__1547107100991_490" style="display:block;margin:0;padding:0;border:none;width:852px;height:52px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1547107100991_490-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1547107100991_490 singleImage clk" data-href="https://s1.milkjpg.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABK/rJGQgAAhnJ+isA&amp;mvid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;bid=13153827d4e0488e&amp;price=AAAAAFw2+x8AAAAAAA8nxmMmo1gWa6VyzJv7Ig==&amp;finfo=DAABCAABAAAAEwgAAgAAAB0EAAM/QKdZzmlhqQAIAAIAAAADCgADgJhBrLEWVxAIAAQAAAAmBgAGLbcKAAkAAAAAAAIQFAYACgAABgAMP1wIAA4AAAAbCgAPAAAAAAAC5jAA&amp;ugi=FcTgigEVyNtrTBUCFboCFQAVAAAV+9DCswsWgAgVyAEA&amp;uai=FaixkwIlAhUEFs2ijcH62uPn/gEV8ggltrykzwslABUaAA&amp;ubi=FcDFTRXC4cACFcyYjBcV7Pb5VxUEFRwWiu34jhcWzaL42fCU3+f+ATQCFqjAkIAIJQYVvuj13gMV/AEVADaI7Y21vYWC3jYA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign2=wA956CjHiu2=&amp;url=http%3A%2F%2F360.waid.com.cn%2F" data-pv="https://s1.milkjpg.com/s?type=1&amp;r=20&amp;tid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;finfo=DAABCAABAAAAEwgAAgAAAB0EAAM/QKdZzmlhqQAIAAIAAAADCgADgJhBrLEWVxAIAAQAAAAmBgAGLbcKAAkAAAAAAAIQFAYACgAABgAMP1wIAA4AAAAbCgAPAAAAAAAC5jAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABK/rJGQgAAhnJ+isA&amp;mvid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;bid=13153827d4e0488e&amp;ugi=FcTgigEVyNtrTBUCFboCFQAVAAAV+9DCswsWgAgVyAEA&amp;uai=FaixkwIlAhUEFs2ijcH62uPn/gEV8ggltrykzwslABUaAA&amp;ubi=FcDFTRXC4cACFcyYjBcV7Pb5VxUEFRwWiu34jhcWzaL42fCU3+f+ATQCFqjAkIAIJQYVvuj13gMV/AEVADaI7Y21vYWC3jYA&amp;ds=1&amp;price=AAAAAFw2+x8AAAAAAA8nxmMmo1gWa6VyzJv7Ig==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=13153827d4e0488e&amp;p=2255956&amp;l=1136674&amp;s=1&amp;z=1&amp;w=AAAAAFw2+x8AAAAAAA8n7py7RbtHpQNMg0Cl7A==&amp;k=rH+nxgAAAAA=&amp;i=Bkp0ltLdRAZ4&amp;v=65058514552351504120018" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=13153827d4e0488e&amp;p=2255956&amp;l=1136674&amp;s=1&amp;k=rH+nxgAAAAA=&amp;i=Bkp0ltLdRAZ4&amp;v=65058514552351504120018&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
    <info-div class="wrap">
        <info-div class="singleImage-img singleImage-img-left">
            <info-div class="img" style="background-image:url(https://s3m.milkjpg.com/galileo/635232-5e52383f7618d0b7334bd77b5854ed48.jpg)"><info-div class="ads-tag"></info-div></info-div>
        </info-div>
        <info-div class="singleImage-body singleImage-body-left">
            <info-div class="singleImage-title">揭秘:头上长白发竟是身体缺了它?饭后吃点它,白发轻松变黑发!</info-div>
            <info-div class="singleImage-desc">新至尊 · 燨燚</info-div>
        </info-div>
   </info-div>
   <info-div style="clear:both;"></info-div>
</info-div>
</info-div></newsfeed></div>
<script type="text/javascript" src="//static.mediav.com/js/mvf_news_feed.js"></script>
<script>
                                               NEWS_FEED({
                w: 852,
                h : 52,
                showid : 'GNKXx7',
                placeholderId: "three_ad1",
                inject : 'define',
                define : {
                    imagePosition : 'left',
                    imageBorderRadius : 3,
                    imageWidth: 90,
                    imageHeight: 52,
                    imageFill : 'clip',
                    displayImage : true,
                    displayTitle : true,
                    titleFontSize: 18,
                    titleFontColor: '#000',
                    titleFontFamily : 'Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif',
                    titleFontWeight: 'bold',
                    titlePaddingTop : 0,
                    titlePaddingRight : 0,
                    titlePaddingBottom : 5,
                    titlePaddingLeft : 16,
                    displayDesc : true,
                    descFontSize: 14,
                    descFontColor: '#8e959a',
                    descFontFamily : 'Microsoft Yahei',
                    paddingTop : 0,
                    paddingRight : 0,
                    paddingBottom : 0,
                    paddingLeft : 0,
                    backgroundColor: '#fff',
                    hoverColor: '#000'
                      }
                  })
                                        </script></div></div>
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/chainiao_zhang/article/details/76825171,BlogCommendFromGuangxin_3,index_3&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/chainiao_zhang/article/details/76825171" target="_blank" title="structs2框架介绍">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        structs2框架介绍                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/B/B/A/3_chainiao_zhang.jpg" alt="chainiao_zhang" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">chainiao_zhang</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">08-07</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            4525</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/chainiao_zhang/article/details/76825171" target="_blank" title="structs2框架介绍">
                            <span class="desc oneline">Struts2面试题

1、struts2工作流程

&nbsp;

&nbsp;

Struts&nbsp;2框架本身大致可以分为3个部分:

核心控制器FilterDispatcher、业务控制器Actio...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/chainiao_zhang">来自:    <span class="blog_title"> chainiao_zhang的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/worthliu/article/details/51596974,BlogCommendFromGuangxin_4,index_4&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/worthliu/article/details/51596974" target="_blank" title="struts1.x、struts2.x、Spring MVC原理总结">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        struts1.x、<em>struts2</em>.x、Spring MVC原理总结                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/2/3/7/3_worthliu.jpg" alt="worthliu" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">worthliu</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">06-06</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            825</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/worthliu/article/details/51596974" target="_blank" title="struts1.x、struts2.x、Spring MVC原理总结">
                            <span class="desc oneline">Struts1原理
  
  初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(st...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/worthliu">来自:    <span class="blog_title"> worthliu的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/Jorocco/article/details/79981306,BlogCommendFromQuerySearch_5,index_5&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/Jorocco/article/details/79981306" target="_blank" title="JavaWeb框架————Struts2(一)">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        <em>JavaWeb</em>框架————<em>Struts2</em>(一)                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/5/4/3/3_jorocco.jpg" alt="Jorocco" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">Jorocco</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">04-17</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            165</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/Jorocco/article/details/79981306" target="_blank" title="JavaWeb框架————Struts2(一)">
                            <span class="desc oneline">1、什么是Struts2 
    Strut是一种基于MVC模式的轻量级的web框架,本质上相当于一个Servlet,Struts2作为控制器来建立模型与视图的数据交互。具有以下优势: 
提供Exc...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/Jorocco">来自:    <span class="blog_title"> Jorocco的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u012605477/article/details/76152846,BlogCommendFromQuerySearch_6,index_6&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/u012605477/article/details/76152846" target="_blank" title="JavaWeb使用Struts2的简单案例">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        <em>JavaWeb</em>使用<em>Struts2</em>的简单案例                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/7/5/2/3_u012605477.jpg" alt="u012605477" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">u012605477</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">07-26</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            4093</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/u012605477/article/details/76152846" target="_blank" title="JavaWeb使用Struts2的简单案例">
                            <span class="desc oneline">1.添加struts2的jar包,建议使用maven,方便又能看源码,美滋滋
        
            org.apache.struts
            struts2-core
            2.5.1
            
                
            ...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/u012605477">来自:    <span class="blog_title"> 豆芽胡的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
                <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://download.csdn.net/download/huihui_luo_lan/1645426,BlogCommendFromQuerySearch_7,index_7&quot;}" data-flg="true">
            <a href="https://download.csdn.net/download/huihui_luo_lan/1645426" target="_blank">
                <div class="content">
                    <div class="">
                        <span class="type">下载</span>
                        <h4 class="text-truncate oneline clearfix">
                            <em>struts2</em> <em>概述</em>                        </h4>
                        <span class="data float-right">09-09</span>
                    </div>
                    <div class="desc oneline">
                            struts2 概述,struts2 概述,struts2 概述,struts2 概述,struts2 概述,struts2 概述,struts2 概述                    </div>
                </div>
            </a>
        </div>
    
    <div class="recommend-item-box recommend-ad-box"><div id="kp_box_60" data-pid="60" data-track-view="{&quot;mod&quot;:&quot;kp_popu_60-43&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_60-43&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1547107101034_596" id="QIHOO__WEB__SO__1547107101034_596" style="display:block;margin:0;padding:0;border:none;width:900px;height:84px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1547107101034_596-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1547107101034_596 singleImage clk" data-href="https://s1.milkjpg.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABK/rJGQgAAhnJ+isA&amp;mvid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;bid=13153827cc79cc91&amp;price=AAAAAFw2+x8AAAAAAA74l1yTRlLcaN5FxDdu1w==&amp;finfo=DAABCAABAAAAHwgAAgAAACUEAAM/S4F0upstBAAIAAIAAAADCgADhKkznzugvm8IAAQAAAAmBgAGLbcKAAkAAAAAAAIQFAYACgAABgAMP1wIAA4AAAAdCgAPAAAAAAAE1XAA&amp;ugi=FcTgigEVyNtrTBUCFboCFQAVAAAV+9DCswsWgAgVyAEA&amp;uai=FeTGlAIlAhUEFs2iic6n3urW9gEV8ggl/+zd7QclABUaAA&amp;ubi=FcDFTRXC4cACFcyYjBcV7Pb5VxUEFRwWiu34jhcWzaL05p2Y5tb2ATQCFqjAkIAIJQYVvfjo7gwV/AEVADaI7Y21vYWC3jYA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign2=wA956CjHiu2=&amp;url=http%3A%2F%2F360.waid.com.cn%2F" data-pv="https://s1.milkjpg.com/s?type=1&amp;r=20&amp;tid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;finfo=DAABCAABAAAAHwgAAgAAACUEAAM/S4F0upstBAAIAAIAAAADCgADhKkznzugvm8IAAQAAAAmBgAGLbcKAAkAAAAAAAIQFAYACgAABgAMP1wIAA4AAAAdCgAPAAAAAAAE1XAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABK/rJGQgAAhnJ+isA&amp;mvid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;bid=13153827cc79cc91&amp;ugi=FcTgigEVyNtrTBUCFboCFQAVAAAV+9DCswsWgAgVyAEA&amp;uai=FeTGlAIlAhUEFs2iic6n3urW9gEV8ggl/+zd7QclABUaAA&amp;ubi=FcDFTRXC4cACFcyYjBcV7Pb5VxUEFRwWiu34jhcWzaL05p2Y5tb2ATQCFqjAkIAIJQYVvfjo7gwV/AEVADaI7Y21vYWC3jYA&amp;ds=1&amp;price=AAAAAFw2+x8AAAAAAA74l1yTRlLcaN5FxDdu1w==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=13153827cc79cc91&amp;p=2265522&amp;l=1136674&amp;s=1&amp;z=1&amp;w=AAAAAFw2+x8AAAAAAA74wj1g77bTXbt50Z2VfA==&amp;k=oN3PUQAAAAA=&amp;i=1_BZXpLdRA3L&amp;v=65058514552351504120018" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=13153827cc79cc91&amp;p=2265522&amp;l=1136674&amp;s=1&amp;k=oN3PUQAAAAA=&amp;i=1_BZXpLdRA3L&amp;v=65058514552351504120018&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
    <info-div class="wrap">
        <info-div class="singleImage-img singleImage-img-left">
            <info-div class="img" style="background-image:url(https://s3m.milkjpg.com/galileo/635232-5e52383f7618d0b7334bd77b5854ed48.jpg)"><info-div class="ads-tag"></info-div></info-div>
        </info-div>
        <info-div class="singleImage-body singleImage-body-left">
            <info-div class="singleImage-title">揭秘:头上长白发竟是身体缺了它?饭后吃点它,白发轻松变黑发!</info-div>
            <info-div class="singleImage-desc">新至尊 · 燨燚</info-div>
        </info-div>
   </info-div>
   <info-div style="clear:both;"></info-div>
</info-div>
</info-div></newsfeed></div>
<script type="text/javascript" src="//static.mediav.com/js/mvf_news_feed.js"></script>
<script>
                                               NEWS_FEED({
                w: 900,
                h : 84,
                showid : 'Afihld',
                placeholderId: "three_ad8",
                inject : 'define',
                define : {
                    imagePosition : 'left',
                    imageBorderRadius : 3,
                    imageWidth: 90,
                    imageHeight: 60,
                    imageFill : 'clip',
                    displayImage : true,
                    displayTitle : true,
                    titleFontSize: 18,
                    titleFontColor: '#000',
                    titleFontFamily : 'Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif',
                    titleFontWeight: 'bold',
                    titlePaddingTop : 0,
                    titlePaddingRight : 0,
                    titlePaddingBottom : 5,
                    titlePaddingLeft : 16,
                    displayDesc : true,
                    descFontSize: 14,
                    descFontColor: '#8e959a',
                    descFontFamily : 'Microsoft Yahei',
                    paddingTop : 10,
                    paddingRight : 0,
                    paddingBottom : 0,
                    paddingLeft : 0,
                    backgroundColor: '#fff',
                    hoverColor: '#000'
                      }
                  })
                                        </script></div></div>
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/axi295309066/article/details/52971576,BlogCommendFromQuerySearch_8,index_8&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/axi295309066/article/details/52971576" target="_blank" title="JavaWeb开发概述">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        <em>JavaWeb</em>开发<em>概述</em>                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/9/F/C/3_axi295309066.jpg" alt="axi295309066" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">axi295309066</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">10-30</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            5903</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/axi295309066/article/details/52971576" target="_blank" title="JavaWeb开发概述">
                            <span class="desc oneline">JavaWeb开发入门,目录:JavaScript,XML解析器,JavaWeb开发入门,Http协议,Servlet技术,请求和响应,Cookie和Session,MySQL数据库,用JDBC操作数...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/axi295309066">来自:    <span class="blog_title"> JackChan</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
            <div class="recommend-item-box type_hot_word">
                        <div class="content clearfix oneline" style="width: 842px;">
                <h5 class="float-left">文章热词</h5>
                <div class="word float-left">
                                                    <span>
                        <a href="https://edu.csdn.net/course/play/7493/155113 " target="_blank">
                        聚类算法概述                     </a></span>
                                                                    <span>
                        <a href="https://edu.csdn.net/course/play/6449/128295 " target="_blank">
                        可变长度数组概述                    </a></span>
                                                                    <span>
                        <a href="https://edu.csdn.net/course/play/3904/121403 " target="_blank">
                        em算法中的隐变量问题                    </a></span>
                                                                    <span>
                        <a href="https://edu.csdn.net/courses/o5329_s5330_k " target="_blank">
                        机器学习                    </a></span>
                                                                    <span>
                        <a href="https://edu.csdn.net/courses/o5329_s5330_k " target="_blank">
                        机器学习课程                    </a></span>
                                                </div>
            </div>
                                </div>
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u013087513/article/details/64158848,BlogCommendFromQuerySearch_9,index_9&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/u013087513/article/details/64158848" target="_blank" title="JAVAWEB开发之Struts2示例——Struts2练习之员工管理系统">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        <em>JAVAWEB</em>开发之<em>Struts2</em>示例——<em>Struts2</em>练习之员工管理系统                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/0/C/7/3_u013087513.jpg" alt="u013087513" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">u013087513</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">03-21</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            1899</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/u013087513/article/details/64158848" target="_blank" title="JAVAWEB开发之Struts2示例——Struts2练习之员工管理系统">
                            <span class="desc oneline">MySQL语句(DCL)
&nbsp;1、创建用户
语法:
CREATE &nbsp;USER 用户名@地址 &nbsp;IDENTIFIED BY &nbsp;'密码';
CREATE &nbsp;USER user1@localhost ...</span>
                        </a>
                                            </p>
            </div>
                    </div>
    
    
              <div class="recommend-item-box blog-expert-recommend-box" style="display: block;">
                <div class="d-flex">
                    <div class="blog-expert-recommend">
                        <div class="blog-expert">
                            <div class="blog-expert-flexbox" data-track-view="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/u012605477/article/details/76129675&quot;}"><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/u012605477/article/details/76129675&quot;}"><a href="https://blog.csdn.net/u013087513" target="_blank"><img src="https://avatar.csdn.net/0/C/7/3_u013087513.jpg" alt="LIUXUN1993728" title="LIUXUN1993728"><svg class="icon" aria-hidden="true"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-blogexpert"></use></svg></a><span data-track-click="{&quot;mod&quot;:&quot;popu_710&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/u012605477/article/details/76129675&quot;}"><span class="blog-expert-button-follow btn-red-follow" data-name="u013087513" data-nick="LIUXUN1993728">关注</span></span></div><div class="info"><span data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/u012605477/article/details/76129675&quot;}"><a href="https://blog.csdn.net/u013087513" target="_blank"><h5 class="oneline" title="LIUXUN1993728">LIUXUN1993728</h5></a></span>  <p></p><p class="article-num" title="345篇文章"> 345篇文章</p><p class="article-num" title="排名:2000+"> 排名:2000+</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/u012605477/article/details/76129675&quot;}"><a href="https://blog.csdn.net/Jorocco" target="_blank"><img src="https://avatar.csdn.net/5/4/3/3_jorocco.jpg" alt="Jorocco" title="Jorocco"></a><span data-track-click="{&quot;mod&quot;:&quot;popu_710&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/u012605477/article/details/76129675&quot;}"><span class="blog-expert-button-follow btn-red-follow" data-name="Jorocco" data-nick="Jorocco">关注</span></span></div><div class="info"><span data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/u012605477/article/details/76129675&quot;}"><a href="https://blog.csdn.net/Jorocco" target="_blank"><h5 class="oneline" title="Jorocco">Jorocco</h5></a></span>  <p></p><p class="article-num" title="113篇文章"> 113篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/u012605477/article/details/76129675&quot;}"><a href="https://blog.csdn.net/u012605477" target="_blank"><img src="https://avatar.csdn.net/7/5/2/3_u012605477.jpg" alt="豆芽胡" title="豆芽胡"></a><span data-track-click="{&quot;mod&quot;:&quot;popu_710&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/u012605477/article/details/76129675&quot;}"><span class="blog-expert-button-follow btn-gray-follow attented" data-name="u012605477" data-nick="豆芽胡"><span class="hover-hide">已关注</span><span class="hover-show">取消</span></span></span></div><div class="info"><span data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/u012605477/article/details/76129675&quot;}"><a href="https://blog.csdn.net/u012605477" target="_blank"><h5 class="oneline" title="豆芽胡">豆芽胡</h5></a></span>  <p></p><p class="article-num" title="60篇文章"> 60篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/u012605477/article/details/76129675&quot;}"><a href="https://blog.csdn.net/axi295309066" target="_blank"><img src="https://avatar.csdn.net/9/F/C/3_axi295309066.jpg" alt="Jack-Chan" title="Jack-Chan"></a><span data-track-click="{&quot;mod&quot;:&quot;popu_710&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/u012605477/article/details/76129675&quot;}"><span class="blog-expert-button-follow btn-red-follow" data-name="axi295309066" data-nick="Jack-Chan">关注</span></span></div><div class="info"><span data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/u012605477/article/details/76129675&quot;}"><a href="https://blog.csdn.net/axi295309066" target="_blank"><h5 class="oneline" title="Jack-Chan">Jack-Chan</h5></a></span>  <p></p><p class="article-num" title="468篇文章"> 468篇文章</p><p class="article-num" title="排名:1000+"> 排名:1000+</p><p></p></div></div></div></div>
                        </div>
                    </div>
                </div>
      </div>
    
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/inter_peng/article/details/43307025,BlogCommendFromQuerySearch_10,index_10&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/inter_peng/article/details/43307025" target="_blank" title="Java Web中选择Struts2,Spring等框架的分析">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        Java Web中选择<em>Struts2</em>,Spring等框架的分析                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/D/6/7/3_inter_peng.jpg" alt="inter_peng" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">inter_peng</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">01-30</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            7554</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/inter_peng/article/details/43307025" target="_blank" title="Java Web中选择Struts2,Spring等框架的分析">
                            <span class="desc oneline">前言:  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在公司从C++转向Java Web方向大概有3个月(11月初-1月底)了。三个月前对Java和Web还几乎是零基础。然后从安装Eclipse,MySQL,tomcat开始,到学习...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/inter_peng">来自:    <span class="blog_title"> inter_peng的专栏</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/Keepsmileq/article/details/70161936,BlogCommendFromQuerySearch_11,index_11&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/Keepsmileq/article/details/70161936" target="_blank" title="Struts中解耦与耦合">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        Struts中解耦与耦合                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/4/F/0/3_keepsmileq.jpg" alt="Keepsmileq" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">Keepsmileq</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">04-13</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            656</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/Keepsmileq/article/details/70161936" target="_blank" title="Struts中解耦与耦合">
                            <span class="desc oneline">1.解耦方式获得request,session.appliction
    /*Map reqeust=(Map)ActionContext.getContext().get("request");
    ...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/Keepsmileq">来自:    <span class="blog_title"> Keepsmileq的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/github_34606293/article/details/79751322,BlogCommendFromQuerySearch_12,index_12&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/github_34606293/article/details/79751322" target="_blank" title="Struts2:输入校验-基于XML配置方式实现">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        <em>Struts2</em>:输入校验-基于XML配置方式实现                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/C/4/E/3_github_34606293.jpg" alt="github_34606293" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">github_34606293</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">03-30</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            125</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/github_34606293/article/details/79751322" target="_blank" title="Struts2:输入校验-基于XML配置方式实现">
                            <span class="desc oneline">使用基于XML配置方式实现输入校验时,Action也需要继承ActionSupport,并且提供校验文件,校验文件和action类放在同一个包下,文件的取名格式为:ActionClassName-va...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/github_34606293">来自:    <span class="blog_title"> minGW_Lee on the way</span></a></span>
                                            </p>
            </div>
                    </div>
    
    <div class="recommend-item-box recommend-ad-box"><div id="_yzr5w63xrkk"><iframe width="852" frameborder="0" height="60" scrolling="no" src="https://rabc2.iteye.com/jllcliqo?ros=XR&amp;gsn=ZWT&amp;ns=LUV_SXXZ&amp;vde=8KKGJ0U-0Td0Td2CF70y3J4E0yE5K0TdLRSTXRWVYY0Td1IK93C50Td45K19CJ0TdYXST_XYW&amp;zcs=UTZR252XU_6266RS2STRZRUUW1YTW2UT&amp;zkb=S_TROSRVR&amp;zmc=SZXTO_YU&amp;zbyd=T&amp;nks=S&amp;nm=U&amp;kxd=S&amp;mom=srdzZ&amp;nbs=R&amp;ndw=frkjynmqr&amp;kbs=T&amp;zsc=zSOzS&amp;dzb=SWVYSRYSRSTSS&amp;zc=VXWXOXRV&amp;nsc=R&amp;zcc=SZXTOXRXU&amp;ohzc=SSSRRS,SSRRRR&amp;5g2=nlta&amp;5l9=l9nliq&amp;a01=zav5j&amp;hc4=p2p4k&amp;swt=1"></iframe><ins style="display:none;padding-top:0px;"></ins></div><script type="text/javascript" src="//rabc1.iteye.com/production/res/rxjg.js?pkcgstj=jm"></script></div>
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/l1052102729/article/details/52964201,BlogCommendFromQuerySearch_13,index_13&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/l1052102729/article/details/52964201" target="_blank" title="javaweb项目中引入struts2后web.xml的详细配置和注释">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        <em>javaweb</em>项目中引入<em>struts2</em>后web.xml的详细配置和注释                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/A/0/C/3_l1052102729.jpg" alt="l1052102729" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">l1052102729</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">10-29</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            467</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/l1052102729/article/details/52964201" target="_blank" title="javaweb项目中引入struts2后web.xml的详细配置和注释">
                            <span class="desc oneline">web.xml是web应用中加载有关servlet信息的重要配置文件,起着初始化servlet,filter等web程序的作用。&nbsp;
通常,所有的MVC框架都需要Web应用加载一个核心控制器,那采取什...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/l1052102729">来自:    <span class="blog_title"> 如阿年的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/zyp1987106/article/details/78420312,BlogCommendFromQuerySearch_14,index_14&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/zyp1987106/article/details/78420312" target="_blank" title="JavaWeb三大框架之---struts2详解">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        <em>JavaWeb</em>三大框架之---<em>struts2</em>详解                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/8/7/6/3_zyp1987106.jpg" alt="zyp1987106" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">zyp1987106</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">11-02</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            256</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/zyp1987106/article/details/78420312" target="_blank" title="JavaWeb三大框架之---struts2详解">
                            <span class="desc oneline">从今天开始更新javaweb的SSH框架,然后再把三大框架融合。
1.准备工作
&nbsp; 从网上下载struts2的源码包,
2.建立一个web项目。
&nbsp; 导入刚刚下载的structs2文件的lib...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/zyp1987106">来自:    <span class="blog_title"> zyp1987106的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/csdn_kenneth/article/details/78650636,BlogCommendFromQuerySearch_15,index_15&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/csdn_kenneth/article/details/78650636" target="_blank" title="拦截器的概述和struts2的执行流程(十)">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        拦截器的<em>概述</em>和<em>struts2</em>的执行流程(十)                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/2/D/8/3_csdn_kenneth.jpg" alt="csdn_kenneth" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">csdn_kenneth</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">11-27</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            132</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/csdn_kenneth/article/details/78650636" target="_blank" title="拦截器的概述和struts2的执行流程(十)">
                            <span class="desc oneline">拦截器的作用就是在请求到达我们编写的Action类的过程中拦截一下,然后做一些处理。比如,请求中的参数,如果没有拦截器,那么就直接交给了Action类。有了拦截器,参数就先交给拦截器,拦截器帮我们封装...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/csdn_kenneth">来自:    <span class="blog_title"> csdn_kenneth的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
                <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://download.csdn.net/download/ssh_Kobe/3624617,BlogCommendFromQuerySearch_16,index_16&quot;}" data-flg="true">
            <a href="https://download.csdn.net/download/ssh_Kobe/3624617" target="_blank">
                <div class="content">
                    <div class="">
                        <span class="type">下载</span>
                        <h4 class="text-truncate oneline clearfix">
                            <em>JavaWeb</em>-Hibernate-<em>Struts2</em>-Spring2                        </h4>
                        <span class="data float-right">09-21</span>
                    </div>
                    <div class="desc oneline">
                            JavaWeb Hibernate Struts2 Spring2                    </div>
                </div>
            </a>
        </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/Dason_yu/article/details/63729995,BlogCommendFromQuerySearch_17,index_17&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/Dason_yu/article/details/63729995" target="_blank" title="Struts2(一)概述">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        <em>Struts2</em>(一)<em>概述</em>                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/8/5/C/3_dason_yu.jpg" alt="Dason_yu" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">Dason_yu</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">03-19</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            297</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/Dason_yu/article/details/63729995" target="_blank" title="Struts2(一)概述">
                            <span class="desc oneline">struts2概述</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/Dason_yu">来自:    <span class="blog_title"> Dason_yu的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    <div class="recommend-item-box recommend-ad-box"><div id="kp_box_62" data-pid="62" data-track-view="{&quot;mod&quot;:&quot;kp_popu_62-556&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_62-556&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1547107101111_885" id="QIHOO__WEB__SO__1547107101111_885" style="display:block;margin:0;padding:0;border:none;width:852px;height:60px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1547107101111_885-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1547107101111_885 singleImage clk" data-href="https://ssxd.mediav.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABK/rJGQgAAhnJ+isA&amp;mvid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;bid=13153827cc79cc91&amp;price=AAAAAFw2+x8AAAAAAA75FtR3vzlJVMQ41wTr6w==&amp;finfo=DAABCAABAAAAGwgAAgAAACAEAAM/S6vA5z4FpAAIAAIAAAADCgADhKk8tzLST2UIAAQAAAAgBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAHQoADwAAAAAABB6wAA&amp;ugi=FcTgigEVyNtrTBUCFboCFQAVAAAV+9DCswsWgAgVyAEA&amp;uai=FeTGlAIlAhUEFs2iic6n3urW9gEV8ggl/+zd7QclABUaAA&amp;ubi=FariTRXKrMICFfSElBcVgM6NWBUEFSIW1KK5kBcWzaLf/5PS4db2ATQEFqjAECUGFcXc9vIJFaIEFQA2h5iar7vGhICmAQA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;ldtype=2&amp;csign2=44y-guX24ZU=&amp;url=http%3A%2F%2Fkj.tiancaidou.cn%2Fmall%2Fkjnfj.htm%3Fgzid%3Da1" data-pv="https://ssxd.mediav.com/s?type=1&amp;r=20&amp;tid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;finfo=DAABCAABAAAAGwgAAgAAACAEAAM/S6vA5z4FpAAIAAIAAAADCgADhKk8tzLST2UIAAQAAAAgBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAHQoADwAAAAAABB6wAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABK/rJGQgAAhnJ+isA&amp;mvid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;bid=13153827cc79cc91&amp;ugi=FcTgigEVyNtrTBUCFboCFQAVAAAV+9DCswsWgAgVyAEA&amp;uai=FeTGlAIlAhUEFs2iic6n3urW9gEV8ggl/+zd7QclABUaAA&amp;ubi=FariTRXKrMICFfSElBcVgM6NWBUEFSIW1KK5kBcWzaLf/5PS4db2ATQEFqjAECUGFcXc9vIJFaIEFQA2h5iar7vGhICmAQA&amp;ds=2&amp;price=AAAAAFw2+x8AAAAAAA75FtR3vzlJVMQ41wTr6w==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=13153827cc79cc91&amp;p=2265522&amp;l=1136674&amp;s=2&amp;z=1&amp;w=AAAAAFw2+x8AAAAAAA75NxxogpAjx2l+mZJBpw==&amp;k=oN3PUQAAAAA=&amp;i=1_mZXpLdRAZD&amp;v=65058514552351504120018" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=13153827cc79cc91&amp;p=2265522&amp;l=1136674&amp;s=2&amp;k=oN3PUQAAAAA=&amp;i=1_mZXpLdRAZD&amp;v=65058514552351504120018&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
    <info-div class="wrap">
        <info-div class="singleImage-img singleImage-img-left">
            <info-div class="img" style="background-image:url(https://s3m.mediav.com/galileo/637077-b06717457066d49f876b60b183b16844.jpg)"><info-div class="ads-tag"></info-div></info-div>
        </info-div>
        <info-div class="singleImage-body singleImage-body-left">
            <info-div class="singleImage-title">一插上电,50平米内都暖和了!3天一度电,今日特惠!</info-div>
            <info-div class="singleImage-desc">优诺 · 顶新</info-div>
        </info-div>
   </info-div>
   <info-div style="clear:both;"></info-div>
</info-div>
</info-div></newsfeed></div>
<script type="text/javascript" src="//static.mediav.com/js/mvf_news_feed.js"></script>
<script>
                                               NEWS_FEED({
                w: 852,
                h : 60,
                showid : 'Afihld',
                placeholderId: "three_ad18",
                inject : 'define',
                define : {
                    imagePosition : 'left',
                    imageBorderRadius : 3,
                    imageWidth: 90,
                    imageHeight: 60,
                    imageFill : 'clip',
                    displayImage : true,
                    displayTitle : true,
                    titleFontSize: 18,
                    titleFontColor: '#000',
                    titleFontFamily : 'Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif',
                    titleFontWeight: 'bold',
                    titlePaddingTop : 0,
                    titlePaddingRight : 0,
                    titlePaddingBottom : 5,
                    titlePaddingLeft : 16,
                    displayDesc : true,
                    descFontSize: 14,
                    descFontColor: '#8e959a',
                    descFontFamily : 'Microsoft Yahei',
                    paddingTop : 0,
                    paddingRight : 0,
                    paddingBottom : 0,
                    paddingLeft : 0,
                    backgroundColor: '#fff',
                    hoverColor: '#000'
                      }
                  })
                                        </script></div></div>
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/saafdgvsdg/article/details/80299049,BlogCommendFromQuerySearch_18,index_18&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/saafdgvsdg/article/details/80299049" target="_blank" title="Struts2的历史">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        <em>Struts2</em>的历史                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/9/7/6/3_saafdgvsdg.jpg" alt="saafdgvsdg" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">saafdgvsdg</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">05-13</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            131</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/saafdgvsdg/article/details/80299049" target="_blank" title="Struts2的历史">
                            <span class="desc oneline">struts2与struts1区别就是技术上没有什么关系.struts2的前身是webwork框架.在介绍Struts2之前,先来认识一下Strutsl。Strutsl是最早的基于MVC模式的轻量级W...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/saafdgvsdg">来自:    <span class="blog_title"> 博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/zx_balabala/article/details/82817441,BlogCommendFromQuerySearch_19,index_19&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/zx_balabala/article/details/82817441" target="_blank" title="Struts2中action生命周期和Servlet生命周期">
                <h4 class="text-truncate oneline" style="width: 765px;">
                        <em>Struts2</em>中action生命周期和Servlet生命周期                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/2/2/A/3_zx_balabala.jpg" alt="zx_balabala" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">zx_balabala</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">09-22</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            96</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/zx_balabala/article/details/82817441" target="_blank" title="Struts2中action生命周期和Servlet生命周期">
                            <span class="desc oneline">action生命周期
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;每次请求到来时,都会创建一个新的Action实例
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;action是线程安全,可以使用成员变量接收参数。

&nbsp;

Servlet生命周期分为三个阶段:...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/zx_balabala">来自:    <span class="blog_title"> zx_balabala的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq_32198277/article/details/53046990,BlogCommendFromQuerySearch_20,index_20&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/qq_32198277/article/details/53046990" target="_blank" title="JavaWeb日记——struts2利用不同方式执行删除功能">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        <em>JavaWeb</em>日记——<em>struts2</em>利用不同方式执行删除功能                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/B/A/0/3_qq_32198277.jpg" alt="qq_32198277" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">qq_32198277</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">11-05</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            1071</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/qq_32198277/article/details/53046990" target="_blank" title="JavaWeb日记——struts2利用不同方式执行删除功能">
                            <span class="desc oneline">使用这个之前,你要先懂得
struts2的配置
基础的el语法
action的分配
返回值的回调 
一定的ajax和jquery基础
首先你要配置好web.xml,applicationContext...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/qq_32198277">来自:    <span class="blog_title"> 饥渴计科极客杰铿的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq_30764991/article/details/80482279,BlogCommendFromQuerySearch_21,index_21&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/qq_30764991/article/details/80482279" target="_blank" title="struts2简要概述一">
                <h4 class="text-truncate oneline" style="width: 765px;">
                        <em>struts2</em>简要<em>概述</em>一                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/4/6/B/3_qq_30764991.jpg" alt="qq_30764991" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">qq_30764991</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">05-28</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            68</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/qq_30764991/article/details/80482279" target="_blank" title="struts2简要概述一">
                            <span class="desc oneline">Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts ...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/qq_30764991">来自:    <span class="blog_title"> 学海无涯---那山那水那人</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/yubo_725/article/details/44219545,BlogCommendFromQuerySearch_22,index_22&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/yubo_725/article/details/44219545" target="_blank" title="Java web项目添加Struts2支持的步骤">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        Java web项目添加<em>Struts2</em>支持的步骤                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/3/F/4/3_yubo_725.jpg" alt="yubo_725" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">yubo_725</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">03-12</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            3560</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/yubo_725/article/details/44219545" target="_blank" title="Java web项目添加Struts2支持的步骤">
                            <span class="desc oneline">今天开始学习Struts2了,Struts2使用了MVC的设计模式,使Java web应用层次更分明,是非常流行的一种框架,下面我记录在Java web应用中添加Struts2支持的几个步骤:
一、...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/yubo_725">来自:    <span class="blog_title"> yubo_725</span></a></span>
                                            </p>
            </div>
                    </div>
    
    <div class="recommend-item-box recommend-ad-box"><div id="kp_box_63" data-pid="63" data-track-view="{&quot;mod&quot;:&quot;kp_popu_63-555&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_63-555&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1547107101159_996" id="QIHOO__WEB__SO__1547107101159_996" style="display:block;margin:0;padding:0;border:none;width:852px;height:60px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1547107101159_996-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1547107101159_996 singleImage clk" data-href="https://ssxd.mediav.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABK/rJGQgAAhnJ+isA&amp;mvid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;bid=13153827d4e0488e&amp;price=AAAAAFw2+x8AAAAAAA8oa8PvCLWtudlScY+VXQ==&amp;finfo=DAABCAABAAAADggAAgAAACAEAAM/N1u+bFzucgAIAAIAAAADCgADgJhKxMQWvNgIAAQAAAAnBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAGwoADwAAAAAAAiLgAA&amp;ugi=FcTgigEVyNtrTBUCFboCFQAVAAAV+9DCswsWgAgVyAEA&amp;uai=FaixkwIlAhUEFs2ijcH62uPn/gEV8ggltrykzwslABUaAA&amp;ubi=FariTRXKrMICFeiFlBcV9s6NWBUEFRwW1KK5kBcWzaLj8ubO2uf+ATQEFqjAECUGFeD5t/gMFaIEFQA2h5iar7vGhICmAQA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;ldtype=2&amp;csign2=44y-guX24ZU=&amp;url=http%3A%2F%2Fkj.tiancaidou.cn%2Fmall%2Fkjnfj.htm%3Fgzid%3Da3" data-pv="https://ssxd.mediav.com/s?type=1&amp;r=20&amp;tid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;finfo=DAABCAABAAAADggAAgAAACAEAAM/N1u+bFzucgAIAAIAAAADCgADgJhKxMQWvNgIAAQAAAAnBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAGwoADwAAAAAAAiLgAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABK/rJGQgAAhnJ+isA&amp;mvid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;bid=13153827d4e0488e&amp;ugi=FcTgigEVyNtrTBUCFboCFQAVAAAV+9DCswsWgAgVyAEA&amp;uai=FaixkwIlAhUEFs2ijcH62uPn/gEV8ggltrykzwslABUaAA&amp;ubi=FariTRXKrMICFeiFlBcV9s6NWBUEFRwW1KK5kBcWzaLj8ubO2uf+ATQEFqjAECUGFeD5t/gMFaIEFQA2h5iar7vGhICmAQA&amp;ds=2&amp;price=AAAAAFw2+x8AAAAAAA8oa8PvCLWtudlScY+VXQ==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=13153827d4e0488e&amp;p=2255956&amp;l=1136674&amp;s=2&amp;z=1&amp;w=AAAAAFw2+x8AAAAAAA8omv2FtKrnS4BlgsChIA==&amp;k=rH+nxgAAAAA=&amp;i=Bxb0ltLdRA3_&amp;v=65058514552351504120018" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=13153827d4e0488e&amp;p=2255956&amp;l=1136674&amp;s=2&amp;k=rH+nxgAAAAA=&amp;i=Bxb0ltLdRA3_&amp;v=65058514552351504120018&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
    <info-div class="wrap">
        <info-div class="singleImage-img singleImage-img-left">
            <info-div class="img" style="background-image:url(https://s3m.mediav.com/galileo/637077-ff74e3cf53c414857799fcbabe4b36ac.jpg)"><info-div class="ads-tag"></info-div></info-div>
        </info-div>
        <info-div class="singleImage-body singleImage-body-left">
            <info-div class="singleImage-title">一插上电,50平米内都暖和了!3天一度电,今日特惠!</info-div>
            <info-div class="singleImage-desc">优诺 · 顶新</info-div>
        </info-div>
   </info-div>
   <info-div style="clear:both;"></info-div>
</info-div>
</info-div></newsfeed></div>
<script type="text/javascript" src="//static.mediav.com/js/mvf_news_feed.js"></script>
<script>
                                               NEWS_FEED({
                w: 852,
                h : 60,
                showid : 'GNKXx7',
                placeholderId: "three_ad23",
                inject : 'define',
                define : {
                    imagePosition : 'left',
                    imageBorderRadius : 3,
                    imageWidth: 90,
                    imageHeight: 60,
                    imageFill : 'clip',
                    displayImage : true,
                    displayTitle : true,
                    titleFontSize: 18,
                    titleFontColor: '#000',
                    titleFontFamily : 'Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif',
                    titleFontWeight: 'bold',
                    titlePaddingTop : 0,
                    titlePaddingRight : 0,
                    titlePaddingBottom : 5,
                    titlePaddingLeft : 16,
                    displayDesc : true,
                    descFontSize: 14,
                    descFontColor: '#8e959a',
                    descFontFamily : 'Microsoft Yahei',
                    paddingTop : 0,
                    paddingRight : 0,
                    paddingBottom : 0,
                    paddingLeft : 0,
                    backgroundColor: '#fff',
                    hoverColor: '#000'
                      }
                  })
                                        </script></div></div>
        
                <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://download.csdn.net/download/qq_40281969/10672907,BlogCommendFromQuerySearch_23,index_23&quot;}" data-flg="true">
            <a href="https://download.csdn.net/download/qq_40281969/10672907" target="_blank">
                <div class="content">
                    <div class="">
                        <span class="type">下载</span>
                        <h4 class="text-truncate oneline clearfix">
                            struts 2的全部jar包                        </h4>
                        <span class="data float-right">09-18</span>
                    </div>
                    <div class="desc oneline">
                            struts2  需要使用很多的jar,对于初学者很繁琐,这个jar包包括了struts2 框架开发中的所有jar包,直接导入libs下即可                    </div>
                </div>
            </a>
        </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/joyous/article/details/80722121,BlogCommendFromQuerySearch_24,index_24&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/joyous/article/details/80722121" target="_blank" title="struts2 action 返回原始文本字符串">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        <em>struts2</em> action 返回原始文本字符串                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/B/B/5/3_joyous.jpg" alt="joyous" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">joyous</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">06-18</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            264</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/joyous/article/details/80722121" target="_blank" title="struts2 action 返回原始文本字符串">
                            <span class="desc oneline">struts2 action 返回原始字符串

文章来源 blog.csdn.net/joyous/article/details/80722121

以返回 stream 的方式返回原始文本字符串,...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/joyous">来自:    <span class="blog_title"> NULL 博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u010722889/article/details/20790737,BlogCommendFromQuerySearch_25,index_25&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/u010722889/article/details/20790737" target="_blank" title="struts2常用的标签介绍">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        <em>struts2</em>常用的标签介绍                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/6/6/0/3_u010722889.jpg" alt="u010722889" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">u010722889</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">03-12</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            3639</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/u010722889/article/details/20790737" target="_blank" title="struts2常用的标签介绍">
                            <span class="desc oneline">一:Struts2框架的标签库可以分为以下三类:
&nbsp;&nbsp;&nbsp; 1.用户界面标签(UI标签):主要用来生成HTML元素的标签。
(1)表单标签:主要用于生成HTML页面的FORM元素,以及普通表单元素的标签...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/u010722889">来自:    <span class="blog_title"> smile juan的专栏</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq_32575047/article/details/80394869,BlogCommendFromQuerySearch_26,index_26&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/qq_32575047/article/details/80394869" target="_blank" title="简单讲一下 struts2的执行流程?">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        简单讲一下 <em>struts2</em>的执行流程?                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/3/7/D/3_qq_32575047.jpg" alt="qq_32575047" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">qq_32575047</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">05-21</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            121</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/qq_32575047/article/details/80394869" target="_blank" title="简单讲一下 struts2的执行流程?">
                            <span class="desc oneline">基本简要执行流程如下:1、客户端浏览器发出HTTP请求。2、根据web.xml配置,该请求被FilterDispatcher接收。3、根据struts.xml配置,找到需要调用的Action类和方法,...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/qq_32575047">来自:    <span class="blog_title"> 弗兰-随风小欢的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/lzhat/article/details/53511739,BlogCommendFromQuerySearch_27,index_27&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/lzhat/article/details/53511739" target="_blank" title="JavaWeb-struts2动态方法调用">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        <em>JavaWeb</em>-<em>struts2</em>动态方法调用                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/E/A/C/3_lzhat.jpg" alt="lzhat" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">lzhat</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">12-07</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            971</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/lzhat/article/details/53511739" target="_blank" title="JavaWeb-struts2动态方法调用">
                            <span class="desc oneline">struts2动态方法调用 DynamicMethodInvoke
默认的"struts.xml"配置信息如下:

/HelloWorld.jsp

想用动态方法调用时,在配置时,不用指定“...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/lzhat">来自:    <span class="blog_title"> lzhat的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    <div class="recommend-item-box recommend-ad-box"><div id="kp_box_64" data-pid="64" data-track-view="{&quot;mod&quot;:&quot;kp_popu_64-81&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_64-81&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1547107101244_698" id="QIHOO__WEB__SO__1547107101244_698" style="display:block;margin:0;padding:0;border:none;width:852px;height:60px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1547107101244_698-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1547107101244_698 singleImage clk" data-href="https://s1.milkjpg.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABK/rJGQgAAhnJ+isA&amp;mvid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;bid=13153827cc79cc91&amp;price=AAAAAFw2+x8AAAAAAA75gaZprEf1jb/+Q2fLqg==&amp;finfo=DAABCAABAAAAGggAAgAAACoEAAM/RAcaHw38RAAIAAIAAAADCgADhKlFz8IwgY4IAAQAAAAqBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAHQoADwAAAAAAA/egAA&amp;ugi=FcTgigEVyNtrTBUCFboCFQAVAAAV+9DCswsWgAgVyAEA&amp;uai=FeTGlAIlAhUEFs2iic6n3urW9gEV8ggl/+zd7QclABUaAA&amp;ubi=FerpTRXqjcICFYiilxcVxsaVWBUEFRwWkNa3kBcWzaLKmIqM3db2ATQGFqjAkIAIJQYVqcjO/QYVugIVADa3iaG296OQowsA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign2=tkmOB7MrWa1=&amp;url=http%3A%2F%2Fwww.rnjmvg.cn" data-pv="https://s1.milkjpg.com/s?type=1&amp;r=20&amp;tid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;finfo=DAABCAABAAAAGggAAgAAACoEAAM/RAcaHw38RAAIAAIAAAADCgADhKlFz8IwgY4IAAQAAAAqBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAHQoADwAAAAAAA/egAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABK/rJGQgAAhnJ+isA&amp;mvid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;bid=13153827cc79cc91&amp;ugi=FcTgigEVyNtrTBUCFboCFQAVAAAV+9DCswsWgAgVyAEA&amp;uai=FeTGlAIlAhUEFs2iic6n3urW9gEV8ggl/+zd7QclABUaAA&amp;ubi=FerpTRXqjcICFYiilxcVxsaVWBUEFRwWkNa3kBcWzaLKmIqM3db2ATQGFqjAkIAIJQYVqcjO/QYVugIVADa3iaG296OQowsA&amp;ds=3&amp;price=AAAAAFw2+x8AAAAAAA75gaZprEf1jb/+Q2fLqg==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=13153827cc79cc91&amp;p=2265522&amp;l=1136674&amp;s=3&amp;z=1&amp;w=AAAAAFw2+x8AAAAAAA75ndMSjJvC+VUtBh6Tcg==&amp;k=oN3PUQAAAAA=&amp;i=1uPZXpLdRAZE&amp;v=65058514552351504120018" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=13153827cc79cc91&amp;p=2265522&amp;l=1136674&amp;s=3&amp;k=oN3PUQAAAAA=&amp;i=1uPZXpLdRAZE&amp;v=65058514552351504120018&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
    <info-div class="wrap">
        <info-div class="singleImage-img singleImage-img-left">
            <info-div class="img" style="background-image:url(https://s3m.milkjpg.com/galileo/637557-20a55be3ca3c0e0afb7c16bd5b51ba46.jpg)"><info-div class="ads-tag"></info-div></info-div>
        </info-div>
        <info-div class="singleImage-body singleImage-body-left">
            <info-div class="singleImage-title">这家的片碱  价格为什么这么低 ,有什么秘密吗?</info-div>
            <info-div class="singleImage-desc">泽琪化工 · 燨燚</info-div>
        </info-div>
   </info-div>
   <info-div style="clear:both;"></info-div>
</info-div>
</info-div></newsfeed></div>
<script type="text/javascript" src="//static.mediav.com/js/mvf_news_feed.js"></script>
<script>
                                               NEWS_FEED({
                w: 852,
                h : 60,
                showid : 'Afihld',
                placeholderId: "three_ad28",
                inject : 'define',
                define : {
                    imagePosition : 'left',
                    imageBorderRadius : 3,
                    imageWidth: 90,
                    imageHeight: 60,
                    imageFill : 'clip',
                    displayImage : true,
                    displayTitle : true,
                    titleFontSize: 18,
                    titleFontColor: '#000',
                    titleFontFamily : 'Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif',
                    titleFontWeight: 'bold',
                    titlePaddingTop : 0,
                    titlePaddingRight : 0,
                    titlePaddingBottom : 5,
                    titlePaddingLeft : 16,
                    displayDesc : true,
                    descFontSize: 14,
                    descFontColor: '#8e959a',
                    descFontFamily : 'Microsoft Yahei',
                    paddingTop : 0,
                    paddingRight : 0,
                    paddingBottom : 0,
                    paddingLeft : 0,
                    backgroundColor: '#fff',
                    hoverColor: '#000'
                      }
                  })
                                        </script></div></div>
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u013288707/article/details/64129533,BlogCommendFromQuerySearch_28,index_28&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/u013288707/article/details/64129533" target="_blank" title="struts2分页查询">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        <em>struts2</em>分页查询                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/3/8/D/3_u013288707.jpg" alt="u013288707" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">u013288707</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">03-20</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            423</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/u013288707/article/details/64129533" target="_blank" title="struts2分页查询">
                            <span class="desc oneline">创建实体类Person.java
package entity;

public class Person {
    private int personId;
    private String pers...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/u013288707">来自:    <span class="blog_title"> hhtq的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
                <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://download.csdn.net/download/qq365281664/9530639,BlogCommendFromQuerySearch_29,index_29&quot;}" data-flg="true">
            <a href="https://download.csdn.net/download/qq365281664/9530639" target="_blank">
                <div class="content">
                    <div class="">
                        <span class="type">下载</span>
                        <h4 class="text-truncate oneline clearfix">
                            Spring+<em>Struts2</em>+Hibernate <em>javaweb</em>网络商城系统+完整源码+可执行Mysq文件l                        </h4>
                        <span class="data float-right">05-25</span>
                    </div>
                    <div class="desc oneline">
                            可直接做毕业设计!Spring+Struts2+Hibernate框架 javaweb网络商城系统,管理员、商户、游客、购买者,商品信息,订单详情,购物车设计,完整代码_精美页面_可执行Mysql文件,系统导入Myeclipse即可执行!                    </div>
                </div>
            </a>
        </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u012605477/article/details/75338436,BlogCommendFromQuerySearch_30,index_30&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/u012605477/article/details/75338436" target="_blank" title="JavaWeb中的九大内置对象概述">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        <em>JavaWeb</em>中的九大内置对象<em>概述</em>                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/7/5/2/3_u012605477.jpg" alt="u012605477" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">u012605477</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">07-19</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            546</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/u012605477/article/details/75338436" target="_blank" title="JavaWeb中的九大内置对象概述">
                            <span class="desc oneline">本身想把九个内置对象放到Listener里面写,但是这样写的话再看起来比较麻烦,还是单独拿出来做一篇文章吧。
JSP内置对象:何为内置?就是不用我们创建,JSP它本身里面就有这些对象。
有人会问,内置...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/u012605477">来自:    <span class="blog_title"> 豆芽胡的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/hhua5230/article/details/79923889,BlogCommendFromQuerySearch_31,index_31&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/hhua5230/article/details/79923889" target="_blank" title="web.xml直接设置action,404和struts2中的解决方案">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        web.xml直接设置action,404和<em>struts2</em>中的解决方案                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/F/E/E/3_hhua5230.jpg" alt="hhua5230" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">hhua5230</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">04-16</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            170</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/hhua5230/article/details/79923889" target="_blank" title="web.xml直接设置action,404和struts2中的解决方案">
                            <span class="desc oneline">这几天的项目页面的访问全部改为.action访问,在修改首页时遇到了问题。将web.xml文件中&amp;amp;lt;welcome-file&amp;amp;gt;index.action&amp;amp;lt;/wel...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/hhua5230">来自:    <span class="blog_title"> 飞天武者的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/lijunjie818/article/details/76797614,BlogCommendFromQuerySearch_32,index_32&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/lijunjie818/article/details/76797614" target="_blank" title="struts2页面下载,从数据库把数据以excel表格形式导出">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        <em>struts2</em>页面下载,从数据库把数据以excel表格形式导出                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/C/B/1/3_lijunjie818.jpg" alt="lijunjie818" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">lijunjie818</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">08-07</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            361</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/lijunjie818/article/details/76797614" target="_blank" title="struts2页面下载,从数据库把数据以excel表格形式导出">
                            <span class="desc oneline">------------------------------------------jsp页面


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 点击下载

&nbsp;
-------------------------...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/lijunjie818">来自:    <span class="blog_title"> lijunjie818的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    <div class="recommend-item-box recommend-ad-box"><div id="kp_box_65" data-pid="65" data-track-view="{&quot;mod&quot;:&quot;kp_popu_65-84&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_65-84&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1547107101277_742" id="QIHOO__WEB__SO__1547107101277_742" style="display:block;margin:0;padding:0;border:none;width:852px;height:60px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1547107101277_742-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1547107101277_742 singleImage clk" data-href="https://s1.milkjpg.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABK/rJGQgAAhnJ+isA&amp;mvid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;bid=13153827d4e0488e&amp;price=AAAAAFw2+x8AAAAAAA8o9dmFrDxRwtgvnCCipQ==&amp;finfo=DAABCAABAAAACwgAAgAAACcEAAM/LuXktfrztwAIAAIAAAADCgADgJhT3SO4gr4IAAQAAAAvBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAGwoADwAAAAAAAa2wAA&amp;ugi=FcTgigEVyNtrTBUCFboCFQAVAAAV+9DCswsWgAgVyAEA&amp;uai=FaixkwIlAhUEFs2ijcH62uPn/gEV8ggltrykzwslABUaAA&amp;ubi=FbS4SRWmvsMCFdjqmRcV0OmaWBUEFRwW8t72/RYWzaLOi92I1uf+ATQGFqjAkIAIJQYV4Mbf6gQVoAQVADaXkMvh8eGzyZoBAA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;ldtype=2&amp;csign2=-cS9iGDl2yo=&amp;url=http%3A%2F%2Fzjbg.ruiyangsilicone-rubber.cn%2F%3Fgzid%3Dx2" data-pv="https://s1.milkjpg.com/s?type=1&amp;r=20&amp;tid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;finfo=DAABCAABAAAACwgAAgAAACcEAAM/LuXktfrztwAIAAIAAAADCgADgJhT3SO4gr4IAAQAAAAvBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAGwoADwAAAAAAAa2wAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABK/rJGQgAAhnJ+isA&amp;mvid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;bid=13153827d4e0488e&amp;ugi=FcTgigEVyNtrTBUCFboCFQAVAAAV+9DCswsWgAgVyAEA&amp;uai=FaixkwIlAhUEFs2ijcH62uPn/gEV8ggltrykzwslABUaAA&amp;ubi=FbS4SRWmvsMCFdjqmRcV0OmaWBUEFRwW8t72/RYWzaLOi92I1uf+ATQGFqjAkIAIJQYV4Mbf6gQVoAQVADaXkMvh8eGzyZoBAA&amp;ds=3&amp;price=AAAAAFw2+x8AAAAAAA8o9dmFrDxRwtgvnCCipQ==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=13153827d4e0488e&amp;p=2255956&amp;l=1136674&amp;s=3&amp;z=1&amp;w=AAAAAFw2+x8AAAAAAA8pL2XIftFc8qjeuVN+9Q==&amp;k=rH+nxgAAAAA=&amp;i=Bxt0ltLdRA3b&amp;v=65058514552351504120018" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=13153827d4e0488e&amp;p=2255956&amp;l=1136674&amp;s=3&amp;k=rH+nxgAAAAA=&amp;i=Bxt0ltLdRA3b&amp;v=65058514552351504120018&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
    <info-div class="wrap">
        <info-div class="singleImage-img singleImage-img-left">
            <info-div class="img" style="background-image:url(https://s3m.milkjpg.com/galileo/601626-bee211a5e9c6a14c835b187eba39d14d.jpg)"><info-div class="ads-tag"></info-div></info-div>
        </info-div>
        <info-div class="singleImage-body singleImage-body-left">
            <info-div class="singleImage-title">新年折上折!德国钻石无油烟不粘锅!2折只限今日!不抢就亏了!</info-div>
            <info-div class="singleImage-desc">建颂企业 · 燨燚</info-div>
        </info-div>
   </info-div>
   <info-div style="clear:both;"></info-div>
</info-div>
</info-div></newsfeed></div>
<script>
                                               NEWS_FEED({
                w: 852,
                h : 60,
                showid : 'GNKXx7',
                placeholderId: "three_ad33",
                inject : 'define',
                define : {
                    imagePosition : 'left',
                    imageBorderRadius : 3,
                    imageWidth: 90,
                    imageHeight: 60,
                    imageFill : 'clip',
                    displayImage : true,
                    displayTitle : true,
                    titleFontSize: 18,
                    titleFontColor: '#000',
                    titleFontFamily : 'Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif',
                    titleFontWeight: 'bold',
                    titlePaddingTop : 0,
                    titlePaddingRight : 0,
                    titlePaddingBottom : 5,
                    titlePaddingLeft : 16,
                    displayDesc : true,
                    descFontSize: 14,
                    descFontColor: '#8e959a',
                    descFontFamily : 'Microsoft Yahei',
                    paddingTop : 0,
                    paddingRight : 0,
                    paddingBottom : 0,
                    paddingLeft : 0,
                    backgroundColor: '#fff',
                    hoverColor: '#000'
                      }
                  })
                                        </script></div></div>
        
                <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://download.csdn.net/download/zrt1035405269/8799349,BlogCommendFromQuerySearch_33,index_33&quot;}" data-flg="true">
            <a href="https://download.csdn.net/download/zrt1035405269/8799349" target="_blank">
                <div class="content">
                    <div class="">
                        <span class="type">下载</span>
                        <h4 class="text-truncate oneline clearfix">
                            <em>javaWeb</em>学生公寓管理系统<em>struts2</em>                        </h4>
                        <span class="data float-right">06-12</span>
                    </div>
                    <div class="desc oneline">
                            javaWeb学生公寓管理系统struts2 
适合初学者                    </div>
                </div>
            </a>
        </div>
    
    
        
                <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://download.csdn.net/download/repeatthink/5343257,BlogCommendFromQuerySearch_34,index_34&quot;}" data-flg="true">
            <a href="https://download.csdn.net/download/repeatthink/5343257" target="_blank">
                <div class="content">
                    <div class="">
                        <span class="type">下载</span>
                        <h4 class="text-truncate oneline clearfix">
                            <em>javaweb</em>随身记                        </h4>
                        <span class="data float-right">05-08</span>
                    </div>
                    <div class="desc oneline">
                            javaweb基础教程 txt电子版,没有Struts2教程                    </div>
                </div>
            </a>
        </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/tjj1998/article/details/80550673,BlogCommendFromQuerySearch_35,index_35&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/tjj1998/article/details/80550673" target="_blank" title="【Web开发】Struts2标签使用——数据标签">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        【Web开发】<em>Struts2</em>标签使用——数据标签                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/F/3/9/3_tjj1998.jpg" alt="tjj1998" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">tjj1998</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">06-02</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            188</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/tjj1998/article/details/80550673" target="_blank" title="【Web开发】Struts2标签使用——数据标签">
                            <span class="desc oneline">

数据标签:用于实现获得或访问各种数据的功能

1.action标签

(1)executeResult:可选属性,为一个Boolean类型值,用来指定是否显示action的执行结果,默认值为f...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/tjj1998">来自:    <span class="blog_title"> tjj1998的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq_37832932/article/details/80036502,BlogCommendFromQuerySearch_36,index_36&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/qq_37832932/article/details/80036502" target="_blank" title="Struts2开发javaweb项目步骤">
                <h4 class="text-truncate oneline" style="width: 765px;">
                        <em>Struts2</em>开发<em>javaweb</em>项目步骤                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/4/3/1/3_qq_37832932.jpg" alt="qq_37832932" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">qq_37832932</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">04-22</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            66</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/qq_37832932/article/details/80036502" target="_blank" title="Struts2开发javaweb项目步骤">
                            <span class="desc oneline">1..在web.xml中配置核心控制器FilterDispatcher
2..设计和编写视图组件(JSP)
3..编写用来实现视图组件和业务逻辑组件JavaBean
4..编写视图组件对应的业务...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/qq_37832932">来自:    <span class="blog_title"> later的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
                <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://download.csdn.net/download/u011485893/5801091,BlogCommendFromQuerySearch_37,index_37&quot;}" data-flg="true">
            <a href="https://download.csdn.net/download/u011485893/5801091" target="_blank">
                <div class="content">
                    <div class="">
                        <span class="type">下载</span>
                        <h4 class="text-truncate oneline clearfix">
                            <em>Struts2</em>详细实例教程                        </h4>
                        <span class="data float-right">07-23</span>
                    </div>
                    <div class="desc oneline">
                            Struts2详细实例教程。文档中包含几个详细的小的javaweb 实例。适合于初学者。                    </div>
                </div>
            </a>
        </div>
    
    <div class="recommend-item-box recommend-ad-box"><div id="_ujv31ehhby" style=""><iframe width="852" frameborder="0" height="60" scrolling="no" src="//rabc2.iteye.com/vbxps?ros=XR&amp;gsn=ZWT&amp;ns=LUV_SXXZ&amp;vde=8KKGJ0U-0Td0Td2CF70y3J4E0yE5K0TdLRSTXRWVYY0Td1IK93C50Td45K19CJ0TdYXST_XYW&amp;zcs=UTZR252XU_6266RS2STRZRUUW1YTW2UT&amp;ndw=frkjynmqr&amp;zkb=S_TROSRVR&amp;nbs=S&amp;kxd=S&amp;zbyd=T&amp;zmc=SZXTO_YU&amp;mom=srdzZ&amp;kbs=T&amp;ohzc=SSSRRS,SSRRRR&amp;dzb=SWVYSRYSRSTSS&amp;zc=YRTVOXRV&amp;zsc=zSOzS&amp;zcc=SZXTOY_RU&amp;nm=U&amp;nsc=R&amp;nks=T&amp;s13=9ehs7&amp;ss2=amsh&amp;136=0myk&amp;hm10=cfyd&amp;swt=1"></iframe></div><script type="text/javascript" src="//rabc1.iteye.com/production/res/rxjg.js?pkcgstj=jm"></script></div>
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/so_sss/article/details/40455567,BlogCommendFromQuerySearch_38,index_38&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/so_sss/article/details/40455567" target="_blank" title="Struts2访问web元素(Request,Session,Application)的四种方式">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        <em>Struts2</em>访问web元素(Request,Session,Application)的四种方式                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/5/F/A/3_so_sss.jpg" alt="so_sss" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">so_sss</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">10-25</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            926</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/so_sss/article/details/40455567" target="_blank" title="Struts2访问web元素(Request,Session,Application)的四种方式">
                            <span class="desc oneline">Struts2访问web元素(Request,Session,Application)的四种方式</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/so_sss">来自:    <span class="blog_title"> so_sss的专栏</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/iteye_12858/article/details/82571995,BlogCommendFromQuerySearch_39,index_39&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/iteye_12858/article/details/82571995" target="_blank" title="struts2的url标签解决contextpath的问题">
                <h4 class="text-truncate oneline" style="width: 765px;">
                        <em>struts2</em>的url标签解决contextpath的问题                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/1/B/9/3_iteye_12858.jpg" alt="iteye_12858" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">iteye_12858</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">03-11</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            38</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/iteye_12858/article/details/82571995" target="_blank" title="struts2的url标签解决contextpath的问题">
                            <span class="desc oneline">web应用部署时,很有可能有不同的context path.为了解决这个问题,
可以使用
但是jsp中写java代码总是不美观.
在struts2中可以使用el表达式${pageContext....</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/iteye_12858">来自:    <span class="blog_title"> 大神带我来搬砖</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
                <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://download.csdn.net/download/qq_17786039/8314871,BlogCommendFromQuerySearch_40,index_40&quot;}" data-flg="true">
            <a href="https://download.csdn.net/download/qq_17786039/8314871" target="_blank">
                <div class="content">
                    <div class="">
                        <span class="type">下载</span>
                        <h4 class="text-truncate oneline clearfix">
                            <em>Struts2</em>实现增删改查和登录校验                        </h4>
                        <span class="data float-right">12-30</span>
                    </div>
                    <div class="desc oneline">
                            Struts2实现增删改查和登录校验,并运用了mysql数据库。适合快速的掌握struts2的原理                    </div>
                </div>
            </a>
        </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/WenGu__ZhiXin/article/details/52046122,BlogCommendFromQuerySearch_41,index_41&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/WenGu__ZhiXin/article/details/52046122" target="_blank" title="Struts2上传文件及相关总结">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        <em>Struts2</em>上传文件及相关总结                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/6/2/7/3_wengu__zhixin.jpg" alt="WenGu__ZhiXin" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">WenGu__ZhiXin</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">07-27</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            885</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/WenGu__ZhiXin/article/details/52046122" target="_blank" title="Struts2上传文件及相关总结">
                            <span class="desc oneline">Struts2通过第三方上传组件来实现文件上传</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/WenGu__ZhiXin">来自:    <span class="blog_title"> WenGu__ZhiXin的专栏</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
                <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://download.csdn.net/download/qq_42370407/10454905,BlogCommendFromQuerySearch_42,index_42&quot;}" data-flg="true">
            <a href="https://download.csdn.net/download/qq_42370407/10454905" target="_blank">
                <div class="content">
                    <div class="">
                        <span class="type">下载</span>
                        <h4 class="text-truncate oneline clearfix">
                            <em>JavaWeb</em>利用<em>struts2</em>实现一个简单计算器                        </h4>
                        <span class="data float-right">06-02</span>
                    </div>
                    <div class="desc oneline">
                            struts2技术是非常流行的MVC模型解决方案的一种,本资源从strut2技术出发,实现了一个简单的计算器                    </div>
                </div>
            </a>
        </div>
    
    <div class="recommend-item-box recommend-ad-box"><div><iframe width="852" frameborder="0" height="60" scrolling="no" src="https://rabc2.iteye.com/ixsmrkp?ros=XR&amp;gsn=ZWT&amp;ns=LUV_SXXZ&amp;vde=8KKGJ0U-0Td0Td2CF70y3J4E0yE5K0TdLRSTXRWVYY0Td1IK93C50Td45K19CJ0TdYXST_XYW&amp;zcs=UTZR252XU_6266RS2STRZRUUW1YTW2UT&amp;nm=U&amp;zkb=S_TROSRVR&amp;zsc=zSOzS&amp;zbyd=T&amp;kxd=S&amp;zcc=SZXTOSRTZX&amp;kbs=T&amp;nsc=R&amp;zmc=SZXTO_YU&amp;dzb=SWVYSRYSRSTSS&amp;nbs=T&amp;ohzc=SSSRRS,SSRRRR&amp;nks=U&amp;mom=srdzZ&amp;zc=YWRVOXRV&amp;ndw=frkjynmqr&amp;kf4=ys6m9&amp;swt=1"></iframe><ins style="width:0px;height:0px;padding-right:0px;"></ins></div><script type="text/javascript" src="//rabc1.iteye.com/production/res/rxjg.js?pkcgstj=jm"></script></div>
        
                <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://download.csdn.net/download/fengzi0503/840218,BlogCommendFromQuerySearch_43,index_43&quot;}" data-flg="true">
            <a href="https://download.csdn.net/download/fengzi0503/840218" target="_blank">
                <div class="content">
                    <div class="">
                        <span class="type">下载</span>
                        <h4 class="text-truncate oneline clearfix">
                            <em>struts2</em>简介及其优化                        </h4>
                        <span class="data float-right">12-05</span>
                    </div>
                    <div class="desc oneline">
                            概述了struts2中的个项功能,对比了与struts1的区别                    </div>
                </div>
            </a>
        </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/sinat_16108045/article/details/50765334,BlogCommendFromQuerySearch_44,index_44&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/sinat_16108045/article/details/50765334" target="_blank" title="Struts2学习(一) 基础环境搭建与创建HelloWorld程序">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        <em>Struts2</em>学习(一) 基础环境搭建与创建HelloWorld程序                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/A/9/8/3_sinat_16108045.jpg" alt="sinat_16108045" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">sinat_16108045</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">02-29</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            676</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/sinat_16108045/article/details/50765334" target="_blank" title="Struts2学习(一) 基础环境搭建与创建HelloWorld程序">
                            <span class="desc oneline">一:开发环境的搭配(使用MyEclipse2015+Tomcat)\
第一步:创建WEB工程


在这里可以将Target runtime转换成你自己的服务器
第二步:开发环境搭配(利用IDE自动...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/sinat_16108045">来自:    <span class="blog_title"> sinat_16108045的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/gz153016/article/details/51643576,BlogCommendFromQuerySearch_45,index_45&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/gz153016/article/details/51643576" target="_blank" title="JavaWeb相关技术简介">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        <em>JavaWeb</em>相关技术简介                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/7/8/A/3_gz153016.jpg" alt="gz153016" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">gz153016</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">06-12</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            4716</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/gz153016/article/details/51643576" target="_blank" title="JavaWeb相关技术简介">
                            <span class="desc oneline">2.4 系统的技术介绍
2.4.1 Javascript
JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。


同时也是一种广泛用于客户端Web开发的脚本语言,...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/gz153016">来自:    <span class="blog_title"> 激情,热血。</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq2236955150/article/details/78128620,BlogCommendFromQuerySearch_46,index_46&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/qq2236955150/article/details/78128620" target="_blank" title="第一章javaweb应用开发技术概述">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        第一章<em>javaweb</em>应用开发技术<em>概述</em>                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/F/6/F/3_qq2236955150.jpg" alt="qq2236955150" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">qq2236955150</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">09-28</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            532</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/qq2236955150/article/details/78128620" target="_blank" title="第一章javaweb应用开发技术概述">
                            <span class="desc oneline">1.1.1、javaweb应用
1、javaweb应用:是在web容器上运行的web资源构成的集合。
2、javaweb应用开发:是基于javaee框架的,需要由该框架的容器和组件支持下完成。
3、容...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/qq2236955150">来自:    <span class="blog_title"> qq2236955150的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u010933680/article/details/11353705,BlogCommendFromQuerySearch_47,index_47&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/u010933680/article/details/11353705" target="_blank" title="JavaWeb之概述">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        <em>JavaWeb</em>之<em>概述</em>                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/8/5/B/3_u010933680.jpg" alt="u010933680" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">u010933680</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">11-17</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            1151</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/u010933680/article/details/11353705" target="_blank" title="JavaWeb之概述">
                            <span class="desc oneline">胖客户端与瘦客户端
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 胖客户端程序指的是,当一个程序运行时需要一个单独的客户端程序支持。例如,登录QQ时,就需要一个客户端的程序运行。而瘦客户端操作时不需要进行任何其他程序的安装,直接使用...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/u010933680">来自:    <span class="blog_title"> 随缘</span></a></span>
                                            </p>
            </div>
                    </div>
    
    <div class="recommend-item-box recommend-ad-box"><div id="kp_box_68" data-pid="68" data-track-view="{&quot;mod&quot;:&quot;kp_popu_68-654&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_68-654&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1547107101392_103" id="QIHOO__WEB__SO__1547107101392_103" style="display:block;margin:0;padding:0;border:none;width:900px;height:84px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1547107101392_103-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1547107101392_103 singleImage clk" data-href="https://s1.milkjpg.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABK/rJGQgAAhnJ+isA&amp;mvid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;bid=13153827cc79cc91&amp;price=AAAAAFw2+x8AAAAAAA753Sh0zutnrpdJg2NvyQ==&amp;finfo=DAABCAABAAAAEAgAAgAAABYEAAM/RH85CdmfPAAIAAIAAAADCgADhKlO50O5NOcIAAQAAAAZBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAHQoADwAAAAAAAnEAAA&amp;ugi=FcTgigEVyNtrTBUCFboCFQAVAAAV+9DCswsWgAgVyAEA&amp;uai=FeTGlAIlAhUEFs2iic6n3urW9gEV8ggl/+zd7QclABUaAA&amp;ubi=FdCdThXo7cICFfTclhcVoNOUWBUEFSIW5LLNkBcWzaK1sYDG2Nb2ATQIFqjAkIAIJQYVkqeItw4VvgUVADbmwNXNrvK12ecBAA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign2=QzWflBYie8G=&amp;url=http%3A%2F%2Fvip.nns038.top%2F" data-pv="https://s1.milkjpg.com/s?type=1&amp;r=20&amp;tid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;finfo=DAABCAABAAAAEAgAAgAAABYEAAM/RH85CdmfPAAIAAIAAAADCgADhKlO50O5NOcIAAQAAAAZBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAHQoADwAAAAAAAnEAAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABK/rJGQgAAhnJ+isA&amp;mvid=NjUwNTg1MTQ1NTIzNTE1MDQxMjAwMTg&amp;bid=13153827cc79cc91&amp;ugi=FcTgigEVyNtrTBUCFboCFQAVAAAV+9DCswsWgAgVyAEA&amp;uai=FeTGlAIlAhUEFs2iic6n3urW9gEV8ggl/+zd7QclABUaAA&amp;ubi=FdCdThXo7cICFfTclhcVoNOUWBUEFSIW5LLNkBcWzaK1sYDG2Nb2ATQIFqjAkIAIJQYVkqeItw4VvgUVADbmwNXNrvK12ecBAA&amp;ds=4&amp;price=AAAAAFw2+x8AAAAAAA753Sh0zutnrpdJg2NvyQ==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=13153827cc79cc91&amp;p=2265522&amp;l=1136674&amp;s=4&amp;z=1&amp;w=AAAAAFw2+x8AAAAAAA75+F9WJtG4A9bd5sOObw==&amp;k=oN3PUQAAAAA=&amp;i=1uWZXpLdRAZQ&amp;v=65058514552351504120018" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=13153827cc79cc91&amp;p=2265522&amp;l=1136674&amp;s=4&amp;k=oN3PUQAAAAA=&amp;i=1uWZXpLdRAZQ&amp;v=65058514552351504120018&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
    <info-div class="wrap">
        <info-div class="singleImage-img singleImage-img-left">
            <info-div class="img" style="background-image:url(https://s3m.milkjpg.com/galileo/640872-c6b02e2eb655f1b626d9a669dc15f758.jpg)"><info-div class="ads-tag"></info-div></info-div>
        </info-div>
        <info-div class="singleImage-body singleImage-body-left">
            <info-div class="singleImage-title">27岁冷水江妹子通过网络平台赚钱,爆赚成网红</info-div>
            <info-div class="singleImage-desc">圣工石化 · 燨燚</info-div>
        </info-div>
   </info-div>
   <info-div style="clear:both;"></info-div>
</info-div>
</info-div></newsfeed></div>
<script>
                                               NEWS_FEED({
                w: 900,
                h : 84,
                showid : 'Afihld',
                placeholderId: "three_ad48",
                inject : 'define',
                define : {
                    imagePosition : 'left',
                    imageBorderRadius : 3,
                    imageWidth: 90,
                    imageHeight: 60,
                    imageFill : 'clip',
                    displayImage : true,
                    displayTitle : true,
                    titleFontSize: 16,
                    titleFontColor: '#000',
                    titleFontFamily : 'Microsoft Yahei',
                    titleFontWeight: 'bold',
                    titlePaddingTop : 0,
                    titlePaddingRight : 0,
                    titlePaddingBottom : 5,
                    titlePaddingLeft : 16,
                    displayDesc : true,
                    descFontSize: 14,
                    descFontColor: '#8e959a',
                    descFontFamily : 'Microsoft Yahei',
                    paddingTop : 10,
                    paddingRight : 0,
                    paddingBottom : 0,
                    paddingLeft : 0,
                    backgroundColor: '#fff',
                    hoverColor: '#000'
                      }
                  })
                                        </script></div></div>
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/sbcxylyt/article/details/78953404,BlogCommendFromQuerySearch_48,index_48&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/sbcxylyt/article/details/78953404" target="_blank" title="Java Web应用开发概述">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        Java Web应用开发<em>概述</em>                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/0/7/1/3_sbcxylyt.jpg" alt="sbcxylyt" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">sbcxylyt</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">01-02</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            736</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/sbcxylyt/article/details/78953404" target="_blank" title="Java Web应用开发概述">
                            <span class="desc oneline">Java Web应用开发概述
一、程序开发体系结构
网络应用程序开发体系结构分为两种:一种是基于客户端/服务器的C/S结构,另一种是基于浏览器/服务器的(B/S)结构。
1、C/S体系结构的介绍
C/...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/sbcxylyt">来自:    <span class="blog_title"> sbcxylyt的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/kai666ling/article/details/52526241,BlogCommendFromQuerySearch_49,index_49&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/kai666ling/article/details/52526241" target="_blank" title="使用Struts进行JavaWeb开发的中文乱码问题解决方案">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        使用Struts进行<em>JavaWeb</em>开发的中文乱码问题解决方案                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="https://avatar.csdn.net/1/A/F/3_kai666ling.jpg" alt="kai666ling" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">kai666ling</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">09-13</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            930</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/kai666ling/article/details/52526241" target="_blank" title="使用Struts进行JavaWeb开发的中文乱码问题解决方案">
                            <span class="desc oneline">几乎所有程序员在刚开始接触javaEE开发时,都会遇到中文乱码问题,通过查阅资料,我总结了一种处理中文乱码的方法,前提是使用了Struts2框架。
第一步:jsp页面,编码设置为utf-8

第二步:...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/kai666ling">来自:    <span class="blog_title"> kai666ling的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/diandianxiyu/article/details/53068012,BlogCommendHotData_0,index_50&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/diandianxiyu/article/details/53068012" target="_blank" title="【小程序】微信小程序开发实践">
                <h4 class="text-truncate oneline" style="width: 741px;">
                        【小程序】微信小程序开发实践                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="diandianxiyu" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">diandianxiyu</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">11-07</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            19531</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/diandianxiyu/article/details/53068012" target="_blank" title="【小程序】微信小程序开发实践">
                            <span class="desc oneline">帐号相关流程注册范围
企业
政府
媒体
其他组织换句话讲就是不让个人开发者注册。 :)填写企业信息不能使用和之前的公众号账户相同的邮箱,也就是说小程序是和微信公众号一个层级的。填写公司机构信息,对公账...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/diandianxiyu">来自:    <span class="blog_title"> 小雨同学的技术博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u012968002/article/details/78958090,BlogCommendHotData_1,index_51&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/u012968002/article/details/78958090" target="_blank" title="CAFFE -FCN训练配置过程">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        CAFFE -FCN训练配置过程                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="u012968002" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">u012968002</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">01-03</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            2375</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/u012968002/article/details/78958090" target="_blank" title="CAFFE -FCN训练配置过程">
                            <span class="desc oneline">转载自 http://blog.csdn.net/jiongnima/article/details/78549326?locationNum=3&amp;fps=1


&nbsp; &nbsp;在2015年发表于计算机...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/u012968002">来自:    <span class="blog_title"> JIN JI 2013.12.24</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/aoshilang2249/article/details/46956163,BlogCommendHotData_2,index_52&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/aoshilang2249/article/details/46956163" target="_blank" title="PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图等">
                <h4 class="text-truncate oneline" style="width: 741px;">
                        PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图等                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="aoshilang2249" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">aoshilang2249</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">07-19</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            17166</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/aoshilang2249/article/details/46956163" target="_blank" title="PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图等">
                            <span class="desc oneline">JpGraph简介

&nbsp; &nbsp; &nbsp; JpGraph是开源的PHP统计图表生成库,基于PHP的GD2图形库构建,把生成统计图的相关操作封装,隐藏了部分复杂的操作,使在PHP页面上输出统计图表变得更加容...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/aoshilang2249">来自:    <span class="blog_title"> 郎涯工作室</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/bestone0213/article/details/44307267,BlogCommendHotData_3,index_53&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/bestone0213/article/details/44307267" target="_blank" title="追踪mysql操作记录时间1.">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        追踪mysql操作记录时间1.                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="bestone0213" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">bestone0213</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">03-16</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            2504</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/bestone0213/article/details/44307267" target="_blank" title="追踪mysql操作记录时间1.">
                            <span class="desc oneline">测试环境莫名其妙有几条重要数据被删除了,由于在binlog里面只看到是公用账号删除的,无法查询是那个谁在那个时间段登录的,就考虑怎么记录每一个MYSQL账号的登录信息,在MYSQL中,每个连接都会先执...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/bestone0213">来自:    <span class="blog_title"> 路在脚下</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/hj7jay/article/details/51302829,BlogCommendHotData_4,index_54&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/hj7jay/article/details/51302829" target="_blank" title="Activiti数据库表结构(表详细版)">
                <h4 class="text-truncate oneline" style="width: 741px;">
                        Activiti数据库表结构(表详细版)                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="hj7jay" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">hj7jay</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">05-03</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            68636</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/hj7jay/article/details/51302829" target="_blank" title="Activiti数据库表结构(表详细版)">
                            <span class="desc oneline">版权声明:本文为博主原创文章,未经博主允许不得转载。不经过允许copy,讲追究法律责任,欢迎加入我们的学习提升群466355109,可以相互交流...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/hj7jay">来自:    <span class="blog_title"> 程序猿开发日志【学习永无止境】</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wuchengzeng/article/details/50037611,BlogCommendHotData_5,index_55&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/wuchengzeng/article/details/50037611" target="_blank" title="jquery/js实现一个网页同时调用多个倒计时(最新的)">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        jquery/js实现一个网页同时调用多个倒计时(最新的)                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="wuchengzeng" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">wuchengzeng</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">11-25</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            4836</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/wuchengzeng/article/details/50037611" target="_blank" title="jquery/js实现一个网页同时调用多个倒计时(最新的)">
                            <span class="desc oneline">jquery/js实现一个网页同时调用多个倒计时(最新的)
最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦!...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/wuchengzeng">来自:    <span class="blog_title"> websites</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/yu_xiaofei/article/details/13287899,BlogCommendHotData_6,index_56&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/yu_xiaofei/article/details/13287899" target="_blank" title="SNMP协议详解<二>">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        SNMP协议详解&lt;二&gt;                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="yu_xiaofei" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">yu_xiaofei</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">10-29</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            7270</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/yu_xiaofei/article/details/13287899" target="_blank" title="SNMP协议详解<二>">
                            <span class="desc oneline">上一篇文章讲解了SNMP的基本架构,本篇文章将重点分析SNMP报文,并对不同版本(SNMPv1、v2c、v3)进行区别!

四、SNMP协议数据单元

在SNMP管理中,管理站(NMS)和代理(Age...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/yu_xiaofei">来自:    <span class="blog_title"> 假装在纽约</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/stillit/article/details/26500847,BlogCommendHotData_7,index_57&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/stillit/article/details/26500847" target="_blank" title="ORA-12518 TNS:监听程序无法分发客户机连接 解决办法">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        ORA-12518 TNS:监听程序无法分发客户机连接 解决办法                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="stillit" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">stillit</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">05-21</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            6432</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/stillit/article/details/26500847" target="_blank" title="ORA-12518 TNS:监听程序无法分发客户机连接 解决办法">
                            <span class="desc oneline">环境 windows &nbsp;server 2003 EP

专有服务器模式下processes值设的过小。可通过以下方法解决:

&nbsp;&nbsp; &nbsp;1.cmd

&nbsp;&nbsp; &nbsp;2.sqlplus

&nbsp;&nbsp; ...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/stillit">来自:    <span class="blog_title"> 薄刀刀_薄海_的技术博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/yuqinying112/article/details/7244281,BlogCommendHotData_8,index_58&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/yuqinying112/article/details/7244281" target="_blank" title="使用Spring进行面向切面编程">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        使用Spring进行面向切面编程                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="yuqinying112" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">yuqinying112</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">02-09</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            6524</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/yuqinying112/article/details/7244281" target="_blank" title="使用Spring进行面向切面编程">
                            <span class="desc oneline">Chapter&nbsp;6.&nbsp;使用Spring进行面向切面编程(AOP)


6.1.&nbsp;简介

面向切面编程(AOP)通过提供另外一种思考程序结构的途经来弥补面向对象编程(OOP)的...</span>
                        </a>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/xu__cg/article/details/53190763,BlogCommendHotData_9,index_59&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/xu__cg/article/details/53190763" target="_blank" title="Java设计模式18——状态模式">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        Java设计模式18——状态模式                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="xu__cg" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">xu__cg</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">11-16</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            1403</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/xu__cg/article/details/53190763" target="_blank" title="Java设计模式18——状态模式">
                            <span class="desc oneline">一、定义状态(State)模式又称为状态对象模式(Pattern of Objects for State),状态模式是对象的行为模式。状态模式允许一个对象在其内部状态改变时改变其行为,用于解决系统中...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/xu__cg">来自:    <span class="blog_title"> 小小本科生成长之路</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq_36892341/article/details/73918672,BlogCommendHotData_10,index_60&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/qq_36892341/article/details/73918672" target="_blank" title="linux上安装Docker(非常简单的安装方法)">
                <h4 class="text-truncate oneline" style="width: 741px;">
                        linux上安装Docker(非常简单的安装方法)                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="qq_36892341" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">qq_36892341</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">06-29</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            77798</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/qq_36892341/article/details/73918672" target="_blank" title="linux上安装Docker(非常简单的安装方法)">
                            <span class="desc oneline">最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗!

Docker的三大核心概念:镜像、容器、仓库
镜像:类似虚拟机的镜像、用俗话说就是安装文件。
容器:类似一个轻量...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/qq_36892341">来自:    <span class="blog_title"> 我走小路的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/q383965374/article/details/41948467,BlogCommendHotData_11,index_61&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/q383965374/article/details/41948467" target="_blank" title="java通过struts实现web中的文件上传">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        java通过struts实现web中的文件上传                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="q383965374" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">q383965374</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">12-16</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            1342</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/q383965374/article/details/41948467" target="_blank" title="java通过struts实现web中的文件上传">
                            <span class="desc oneline">单文件上传
fileupload.jsp


  
    "&gt;
    
    My</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/q383965374">来自:    <span class="blog_title"> 直到世界的尽头</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/hayixia606/article/details/79237220,BlogCommendHotData_12,index_62&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/hayixia606/article/details/79237220" target="_blank" title="微信支付V3微信公众号支付PHP教程(thinkPHP5公众号支付)/JSSDK的使用">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        微信支付V3微信公众号支付PHP教程(thinkPHP5公众号支付)/JSSDK的使用                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="hayixia606" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">hayixia606</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">02-02</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            1547</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/hayixia606/article/details/79237220" target="_blank" title="微信支付V3微信公众号支付PHP教程(thinkPHP5公众号支付)/JSSDK的使用">
                            <span class="desc oneline">扫二维码关注,获取更多技术分享


  本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/hayixia606">来自:    <span class="blog_title"> Marswill</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wyx100/article/details/73080969,BlogCommendHotData_13,index_63&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/wyx100/article/details/73080969" target="_blank" title="人脸检测和识别 源代码 下载-opencv3+python3.6完整实战项目源代码 识别视频《欢乐颂》中人物">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        人脸检测和识别 源代码 下载-opencv3+python3.6完整实战项目源代码 识别视频《欢乐颂》中人物                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="wyx100" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">wyx100</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">06-12</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            5841</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/wyx100/article/details/73080969" target="_blank" title="人脸检测和识别 源代码 下载-opencv3+python3.6完整实战项目源代码 识别视频《欢乐颂》中人物">
                            <span class="desc oneline">人脸检测和识别- opencv3+python3完整实战项目源代码 识别视频《欢乐颂》中人物
python
opecv3人脸检测和识别
项目源代码
识别视频《欢乐颂》中人物...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/wyx100">来自:    <span class="blog_title"> wyx100的专栏</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/roguesir/article/details/77104246,BlogCommendHotData_14,index_64&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/roguesir/article/details/77104246" target="_blank" title="人脸检测工具face_recognition的安装与应用">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        人脸检测工具face_recognition的安装与应用                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="roguesir" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">roguesir</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">08-11</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            7682</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/roguesir/article/details/77104246" target="_blank" title="人脸检测工具face_recognition的安装与应用">
                            <span class="desc oneline">人脸检测工具face_recognition的安装与应用</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/roguesir">来自:    <span class="blog_title"> roguesir的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/gefangshuai/article/details/50328451,BlogCommendHotData_15,index_65&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/gefangshuai/article/details/50328451" target="_blank" title="关于SpringBoot bean无法注入的问题(与文件包位置有关)">
                <h4 class="text-truncate oneline" style="width: 741px;">
                        关于SpringBoot bean无法注入的问题(与文件包位置有关)                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="gefangshuai" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">gefangshuai</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">12-16</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            27668</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/gefangshuai/article/details/50328451" target="_blank" title="关于SpringBoot bean无法注入的问题(与文件包位置有关)">
                            <span class="desc oneline">问题场景描述整个项目通过Maven构建,大致结构如下:
核心Spring框架一个module spring-boot-base
service和dao一个module server-core
提供系统...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/gefangshuai">来自:    <span class="blog_title"> 开发随笔</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/liqfyiyi/article/details/50894004,BlogCommendHotData_16,index_66&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/liqfyiyi/article/details/50894004" target="_blank" title="美团在Redis上踩过的一些坑-3.redis内存占用飙升">
                <h4 class="text-truncate oneline" style="width: 741px;">
                        美团在Redis上踩过的一些坑-3.redis内存占用飙升                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="liqfyiyi" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">liqfyiyi</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">03-15</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            27420</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/liqfyiyi/article/details/50894004" target="_blank" title="美团在Redis上踩过的一些坑-3.redis内存占用飙升">
                            <span class="desc oneline">转载请注明出处哈:http://carlosfu.iteye.com/blog/2254154


&nbsp;&nbsp; &nbsp;

&nbsp;一、现象:
&nbsp; &nbsp; redis-cluster某个分片内存飙升,明...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/liqfyiyi">来自:    <span class="blog_title"> 欧辰的专栏</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u012743772/article/details/50517769,BlogCommendHotData_17,index_67&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/u012743772/article/details/50517769" target="_blank" title="DataTables 的 实例 《一》">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        DataTables 的 实例 《一》                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="u012743772" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">u012743772</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">01-14</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            2843</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/u012743772/article/details/50517769" target="_blank" title="DataTables 的 实例 《一》">
                            <span class="desc oneline">1.加载需要的js/css文件


2.


function del(id){
   alert(id);
}

var table;
$(document).ready(function(...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/u012743772">来自:    <span class="blog_title"> 辛修灿的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/lzpdz/article/details/51863119,BlogCommendHotData_18,index_68&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/lzpdz/article/details/51863119" target="_blank" title="关于Android电池管理系统(一)Linux驱动部分">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        关于Android电池管理系统(一)Linux驱动部分                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="lzpdz" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">lzpdz</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">07-08</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            2499</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/lzpdz/article/details/51863119" target="_blank" title="关于Android电池管理系统(一)Linux驱动部分">
                            <span class="desc oneline">一、概述
android系统电池部分的驱动程序,继承了传统linux系统下的Power Supply驱动程序架构,Battery驱动程序通过Power Supply驱动程序生成相应的sys文件系统,从...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/lzpdz">来自:    <span class="blog_title"> lzpdz的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/ycl111/article/details/78227,BlogCommendHotData_19,index_69&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/ycl111/article/details/78227" target="_blank" title="读核日记(三)">
                <h4 class="text-truncate oneline" style="width: 757px;">
                        读核日记(三)                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="ycl111" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">ycl111</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">08-18</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            976</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/ycl111/article/details/78227" target="_blank" title="读核日记(三)">
                            <span class="desc oneline">本文出自:http://os.silversand.net 作者: sunmoon (2001-08-31 15:00:01)在linux 中每一个进程都由task_struct 数据结构来定义. t...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/ycl111">来自:    <span class="blog_title"> 江湖·郎中·路</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/oscar999/article/details/36373183,BlogCommendHotData_20,index_70&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/oscar999/article/details/36373183" target="_blank" title="[JS进阶] JS 之Blob 对象类型">
                <h4 class="text-truncate oneline" style="width: 733px;">
                        [JS进阶] JS 之Blob 对象类型                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="oscar999" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">oscar999</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">11-30</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            109441</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/oscar999/article/details/36373183" target="_blank" title="[JS进阶] JS 之Blob 对象类型">
                            <span class="desc oneline">Blob 是什么? 这里说的是一种Javascript的对象类型。

oracle 中也有类似的栏位类型。

[JS进阶] HTML5 之文件操作(file)
这一篇中用到了File对象,而实际...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/oscar999">来自:    <span class="blog_title"> oscar999的专栏</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/ROVAST/article/details/24349189,BlogCommendHotData_21,index_71&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/ROVAST/article/details/24349189" target="_blank" title="VB使用RES资源文件技巧">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        VB使用RES资源文件技巧                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="ROVAST" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">ROVAST</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">04-23</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            3410</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/ROVAST/article/details/24349189" target="_blank" title="VB使用RES资源文件技巧">
                            <span class="desc oneline">本文介绍了 Visual Basic 中资源文件的多种使用技巧:①开发中英(简、繁)双版本的技巧;②实现“绿色”软件;③直接播放声音文件;④保存各类图标、光标图片等等。


----------...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/ROVAST">来自:    <span class="blog_title"> ROVAST的专栏</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/Tiaaaaa/article/details/58116346,BlogCommendHotData_22,index_72&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/Tiaaaaa/article/details/58116346" target="_blank" title="R语言逻辑回归、ROC曲线和十折交叉验证">
                <h4 class="text-truncate oneline" style="width: 741px;">
                        R语言逻辑回归、ROC曲线和十折交叉验证                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="Tiaaaaa" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">Tiaaaaa</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">02-27</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            12715</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/Tiaaaaa/article/details/58116346" target="_blank" title="R语言逻辑回归、ROC曲线和十折交叉验证">
                            <span class="desc oneline">自己整理编写的逻辑回归模板,作为学习笔记记录分享。数据集用的是14个自变量Xi,一个因变量Y的australian数据集。


1. 测试集和训练集3、7分组
australian ...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/Tiaaaaa">来自:    <span class="blog_title"> Tiaaaaa的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq574857122/article/details/16361033,BlogCommendHotData_23,index_73&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/qq574857122/article/details/16361033" target="_blank" title="强连通分量及缩点tarjan算法解析">
                <h4 class="text-truncate oneline" style="width: 741px;">
                        强连通分量及缩点tarjan算法解析                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="qq574857122" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">qq574857122</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">11-16</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            14216</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/qq574857122/article/details/16361033" target="_blank" title="强连通分量及缩点tarjan算法解析">
                            <span class="desc oneline">强连通分量:
简言之 就是找环(每条边只走一次,两两可达)
孤立的一个点也是一个连通分量 
&nbsp;
使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)
&nbsp;
定义:
int Ti...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/qq574857122">来自:    <span class="blog_title"> 九野的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/a635661820/article/details/45390671,BlogCommendHotData_24,index_74&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/a635661820/article/details/45390671" target="_blank" title="LSTM简介以及数学推导(FULL BPTT)">
                <h4 class="text-truncate oneline" style="width: 741px;">
                        LSTM简介以及数学推导(FULL BPTT)                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="a635661820" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">a635661820</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">04-30</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            70209</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/a635661820/article/details/45390671" target="_blank" title="LSTM简介以及数学推导(FULL BPTT)">
                            <span class="desc oneline">前段时间看了一些关于LSTM方面的论文,一直准备记录一下学习过程的,因为其他事儿,一直拖到了现在,记忆又快模糊了。现在赶紧补上,本文的组织安排是这样的:先介绍rnn的BPTT所存在的问题,然后介绍最初...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/a635661820">来自:    <span class="blog_title"> 天道酬勤,做一个务实的理想主义者</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/a1b2c3d4123456/article/details/53915056,BlogCommendHotData_25,index_75&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/a1b2c3d4123456/article/details/53915056" target="_blank" title="idea配置maven并添加镜像配置">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        idea配置maven并添加镜像配置                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="a1b2c3d4123456" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">a1b2c3d4123456</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">12-28</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            9363</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/a1b2c3d4123456/article/details/53915056" target="_blank" title="idea配置maven并添加镜像配置">
                            <span class="desc oneline">前提是安装好maven。1、打开maven存放文件夹找到 conf -&gt;settings.xml 
 
找到节点 
把下面内容写入节点内 配置为阿里云的镜像
      alimaven
      ...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/a1b2c3d4123456">来自:    <span class="blog_title"> 哆啦A梦的博客</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
            <div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/ymj7150697/article/details/7384126,BlogCommendHotData_26,index_76&quot;}" data-flg="true">
            <div class="content" style="width: 842px;">
                <a href="https://blog.csdn.net/ymj7150697/article/details/7384126" target="_blank" title="expat介绍文档翻译">
                <h4 class="text-truncate oneline" style="width: 749px;">
                        expat介绍文档翻译                </h4>
                <div class="info-box d-flex align-content-center">
                    <!-- <p class="avatar">
                            <img src="" alt="ymj7150697" class="avatar-pic">
                            <span class="namebox">
                                <span class="name">ymj7150697</span>
                                <span class="triangle"></span>
                            </span>
                    </p> -->
                    <p class="date-and-readNum">
                        <span class="date hover-show">03-22</span>
                        <span class="read-num hover-hide">
                            <svg class="icon csdnc-yuedushu" aria-hidden="true">
                                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
                            </svg>
                            1836</span>
                        </p>
                    </div>
                </a>
                    <p class="content" style="width: 842px;">
                        <a href="https://blog.csdn.net/ymj7150697/article/details/7384126" target="_blank" title="expat介绍文档翻译">
                            <span class="desc oneline">原文地址:http://www.xml.com/pub/a/1999/09/expat/index.html


因为需要用,所以才翻译了这个文档。但总归赖于英语水平很有限,翻译出来的中文有可能...</span>
                        </a>
                                                <span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/ymj7150697">来自:    <span class="blog_title"> ymj7150697的专栏</span></a></span>
                                            </p>
            </div>
                    </div>
    
    
        
    

            <div class="recommend-loading-box">
                <img src="https://csdnimg.cn/release/phoenix/images/feedLoading.gif">
            </div>
            <div class="recommend-end-box">
                <p class="text-center">没有更多推荐了,<a href="https://blog.csdn.net/" class="c-blue c-blue-hover c-blue-focus">返回首页</a></p>
            </div>
        </div>
    </main>

  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值