<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>陪你度过漫长的岁月</title>
  <subtitle>合乎于心</subtitle>
  <link href="/atom.xml" rel="self"/>
  
  <link href="http://wenni328.github.io.com/"/>
  <updated>2017-09-02T17:01:51.177Z</updated>
  <id>http://wenni328.github.io.com/</id>
  
  <author>
    <name>陪你度过漫长的岁月</name>
    
  </author>
  
  <generator uri="http://hexo.io/">Hexo</generator>
  
  <entry>
    <title>springboot+Thymeleaf模板</title>
    <link href="http://wenni328.github.io.com/2017/09/03/springboot-Thymeleaf%E6%A8%A1%E6%9D%BF/"/>
    <id>http://wenni328.github.io.com/2017/09/03/springboot-Thymeleaf模板/</id>
    <published>2017-09-02T16:32:53.000Z</published>
    <updated>2017-09-02T17:01:51.177Z</updated>
    
    <content type="html"><![CDATA[<h3 id="首先在pom-xml中加入Thymeleaf依赖"><a href="#首先在pom-xml中加入Thymeleaf依赖" class="headerlink" title="首先在pom.xml中加入Thymeleaf依赖"></a>首先在pom.xml中加入Thymeleaf依赖</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">&lt;dependency&gt;</div><div class="line">    &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;</div><div class="line">    &lt;artifactId&gt;spring-boot-starter-thymeleaf&lt;/artifactId&gt;</div><div class="line">    &lt;version&gt;1.5.6.RELEASE&lt;/version&gt;</div><div class="line">&lt;/dependency&gt;</div></pre></td></tr></table></figure>
<a id="more"></a>
<h3 id="application-yml-设置-thyemleaf"><a href="#application-yml-设置-thyemleaf" class="headerlink" title="application.yml 设置 thyemleaf"></a>application.yml 设置 thyemleaf</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div></pre></td><td class="code"><pre><div class="line">spring:</div><div class="line"> thymeleaf:</div><div class="line">   cache: <span class="literal">false</span></div><div class="line">   prefix: classpath:/templates/</div><div class="line">   suffix: .html</div><div class="line">   encoding: UTF-8</div><div class="line">   content-type: text/html</div><div class="line">   mode: HTML5</div></pre></td></tr></table></figure>
<h3 id="新建H5页面"><a href="#新建H5页面" class="headerlink" title="新建H5页面"></a>新建H5页面</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div></pre></td><td class="code"><pre><div class="line">&lt;!DOCTYPE html&gt;</div><div class="line">&lt;html lang=&quot;en&quot;&gt;</div><div class="line">&lt;head&gt;</div><div class="line">    &lt;meta charset=&quot;UTF-8&quot;&gt;</div><div class="line">    &lt;title&gt;Title&lt;/title&gt;</div><div class="line">&lt;/head&gt;</div><div class="line">&lt;body&gt;</div><div class="line"></div><div class="line">&lt;/body&gt;</div><div class="line">&lt;/html&gt;</div></pre></td></tr></table></figure>
<p>但是这样的话springboot访问时候会出现页面错误，因为springboot默认使用Thymeleaf2.0,2.0版本对语法格式要求比较严格，比如代码的结尾一定要/&gt;<br>两种解决错误方式</p>
<ul>
<li>–一是修改</li>
</ul>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">&lt;meta charset=<span class="string">"UTF-8"</span>/&gt;</div></pre></td></tr></table></figure>
<ul>
<li>–二是修改Thymeleaf版本，3.0对格式要求放宽了<br>在pom.xml中加入</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">&lt;properties&gt;</div><div class="line">     &lt;thymeleaf.version&gt;3.0.2.RELEASE&lt;/thymeleaf.version&gt;</div><div class="line">     &lt;thymeleaf-layout-dialect.version&gt;2.0.4&lt;/thymeleaf-layout-dialect.version&gt;</div><div class="line">&lt;/properties&gt;</div></pre></td></tr></table></figure>
<p>在H5中加入Thymeleaf</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">&lt;html xmlns:th=&quot;http://www.thymeleaf.org&quot;&gt;</div></pre></td></tr></table></figure>
<p>关于<a href="http://www.thymeleaf.org/" target="_blank" rel="external">Thymeleaf标签</a></p>
]]></content>
    
    <summary type="html">
    
      &lt;h3 id=&quot;首先在pom-xml中加入Thymeleaf依赖&quot;&gt;&lt;a href=&quot;#首先在pom-xml中加入Thymeleaf依赖&quot; class=&quot;headerlink&quot; title=&quot;首先在pom.xml中加入Thymeleaf依赖&quot;&gt;&lt;/a&gt;首先在pom.xml中加入Thymeleaf依赖&lt;/h3&gt;&lt;figure class=&quot;highlight bash&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;div class=&quot;line&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;5&lt;/div&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;div class=&quot;line&quot;&gt;&amp;lt;dependency&amp;gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;    &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;    &amp;lt;artifactId&amp;gt;spring-boot-starter-thymeleaf&amp;lt;/artifactId&amp;gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;    &amp;lt;version&amp;gt;1.5.6.RELEASE&amp;lt;/version&amp;gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/div&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
    
    </summary>
    
    
  </entry>
  
  <entry>
    <title>vue-webpack工程搭建</title>
    <link href="http://wenni328.github.io.com/2017/09/02/vue-webpack%E5%B7%A5%E7%A8%8B%E6%90%AD%E5%BB%BA/"/>
    <id>http://wenni328.github.io.com/2017/09/02/vue-webpack工程搭建/</id>
    <published>2017-09-02T09:01:15.000Z</published>
    <updated>2017-09-02T16:52:53.661Z</updated>
    
    <content type="html"><![CDATA[<h3 id="第一步：前提条件"><a href="#第一步：前提条件" class="headerlink" title="第一步：前提条件"></a>第一步：前提条件</h3><ul>
<li>–node是必须安装好的，不会的同学请移步<a href="http://www.runoob.com/nodejs/" target="_blank" rel="external">node安装</a> </li>
<li>–git for windows也是必须先安装的</li>
<li>–npm装逼神器也是需要先安装的，<a href="http://jingyan.baidu.com/article/a17d528506d7f58098c8f2b0.html" target="_blank" rel="external">npm安装</a><a id="more"></a>
查看本地是否成功安装node和npm(建议使用git for window)<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">$ node -v</div><div class="line"></div><div class="line">$ npm -v</div></pre></td></tr></table></figure>
</li>
</ul>
<h3 id="第二步：安装vue-cli工具"><a href="#第二步：安装vue-cli工具" class="headerlink" title="第二步：安装vue-cli工具"></a>第二步：安装vue-cli工具</h3><p>说白了就是安装好 vue这个指令工具，其他作用我们暂时不管<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ npm install -g vue-cli  <span class="comment">#等待时间可能会长一些</span></div></pre></td></tr></table></figure></p>
<h3 id="第三步：生成vue-webpack模板"><a href="#第三步：生成vue-webpack模板" class="headerlink" title="第三步：生成vue-webpack模板"></a>第三步：生成vue-webpack模板</h3><p>vue官方提供了两种webpack模板，分别是vue-webpack-simple和vue-webpack</p>
<h4 id="Webpack简介"><a href="#Webpack简介" class="headerlink" title="Webpack简介"></a>Webpack简介</h4><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">Webpack是当下最热门的前端资源模块化管理和打包工具，</div><div class="line">它可以将很多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源，</div><div class="line">还可以将按需加载的模块进行代码分割，等到实际需要的时候再异步加载。通过 loader 的转换，</div><div class="line">任何形式的资源都可以视作模块，比如 CommonJs 模块、 AMD 模块、 ES6 模块、CSS、图片、 JSON、Coffeescript、 LESS 等。</div></pre></td></tr></table></figure>
<h4 id="vue-webpack模板生成"><a href="#vue-webpack模板生成" class="headerlink" title="vue-webpack模板生成"></a>vue-webpack模板生成</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ vue init vue-webpack webpack <span class="comment">#等待时间较长</span></div></pre></td></tr></table></figure>
<p>vue-webpack依赖加入(进入项目)<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ npm install</div></pre></td></tr></table></figure></p>
<p>如图<img src="http://oufb2rqt9.bkt.clouddn.com/vue-webpack%E5%B7%A5%E7%A8%8B.png" alt="vue-webpack"><br><br>最终生成的目录结构为<img src="http://oufb2rqt9.bkt.clouddn.com/webpack%E7%9B%AE%E5%BD%95%E5%9B%BE.PNG" alt="webpack目录图"></p>
<p>运行指令如下，浏览器自动打开<a href="http://localhost:8080/#/" target="_blank" rel="external">http://localhost:8080/#/</a><br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ npm run dev</div></pre></td></tr></table></figure></p>
<p>运行成功标志<br><img src="http://oufb2rqt9.bkt.clouddn.com/vue-webpack%E8%BF%90%E8%A1%8C%E6%88%90%E5%8A%9F%E6%A0%87%E5%BF%97.PNG" alt="vue-webpack运行成功标志"></p>
<h3 id="第四步：生成vue-webpack-simple模板"><a href="#第四步：生成vue-webpack-simple模板" class="headerlink" title="第四步：生成vue-webpack-simple模板"></a>第四步：生成vue-webpack-simple模板</h3><p>与生成vue-webpack模板类似操作<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ vue init webpack-simple 项目名称  <span class="comment">#等待</span></div></pre></td></tr></table></figure></p>
<p>此时生成的模板结构<img src="http://oufb2rqt9.bkt.clouddn.com/webpack-simple.PNG" alt="webpack-simple"><br>加入依赖<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ npm install</div></pre></td></tr></table></figure></p>
<p>之后项目会多出一个node_modules,如图<br><img src="http://oufb2rqt9.bkt.clouddn.com/%E4%BE%9D%E8%B5%96%E5%90%8E.PNG" alt="依赖后"><br>运行示例<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ npm run dev</div></pre></td></tr></table></figure></p>
<p>发布示例<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ npm run build</div></pre></td></tr></table></figure></p>
<p>更多知识请自行百度</p>
]]></content>
    
    <summary type="html">
    
      &lt;h3 id=&quot;第一步：前提条件&quot;&gt;&lt;a href=&quot;#第一步：前提条件&quot; class=&quot;headerlink&quot; title=&quot;第一步：前提条件&quot;&gt;&lt;/a&gt;第一步：前提条件&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;–node是必须安装好的，不会的同学请移步&lt;a href=&quot;http://www.runoob.com/nodejs/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;node安装&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;–git for windows也是必须先安装的&lt;/li&gt;
&lt;li&gt;–npm装逼神器也是需要先安装的，&lt;a href=&quot;http://jingyan.baidu.com/article/a17d528506d7f58098c8f2b0.html&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;npm安装&lt;/a&gt;
    
    </summary>
    
    
      <category term="vue" scheme="http://wenni328.github.io.com/tags/vue/"/>
    
  </entry>
  
  <entry>
    <title>我的工具类</title>
    <link href="http://wenni328.github.io.com/2017/08/17/%E6%88%91%E7%9A%84%E5%B7%A5%E5%85%B7%E7%B1%BB/"/>
    <id>http://wenni328.github.io.com/2017/08/17/我的工具类/</id>
    <published>2017-08-17T02:58:07.000Z</published>
    <updated>2017-08-21T01:12:46.338Z</updated>
    
    <content type="html"><![CDATA[<h3 id="Json工具类"><a href="#Json工具类" class="headerlink" title="Json工具类"></a>Json工具类</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">&lt;dependency&gt;</div><div class="line">  &lt;groupId&gt;com.fasterxml.jackson.core&lt;/groupId&gt;</div><div class="line">  &lt;artifactId&gt;jackson-databind&lt;/artifactId&gt;</div><div class="line">  &lt;version&gt;2.4.2&lt;/version&gt;</div><div class="line">&lt;/dependency&gt;</div></pre></td></tr></table></figure>
<a id="more"></a>
<figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div><div class="line">51</div><div class="line">52</div><div class="line">53</div><div class="line">54</div><div class="line">55</div><div class="line">56</div><div class="line">57</div><div class="line">58</div><div class="line">59</div><div class="line">60</div><div class="line">61</div><div class="line">62</div><div class="line">63</div><div class="line">64</div><div class="line">65</div><div class="line">66</div><div class="line">67</div><div class="line">68</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">import</span> java.util.List;</div><div class="line"></div><div class="line"><span class="keyword">import</span> com.fasterxml.jackson.core.JsonProcessingException;</div><div class="line"><span class="keyword">import</span> com.fasterxml.jackson.databind.JavaType;</div><div class="line"><span class="keyword">import</span> com.fasterxml.jackson.databind.JsonNode;</div><div class="line"><span class="keyword">import</span> com.fasterxml.jackson.databind.ObjectMapper;</div><div class="line"></div><div class="line"></div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">JsonUtils</span> </span>&#123;</div><div class="line"></div><div class="line">    <span class="comment">// 定义jackson对象</span></div><div class="line">    <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> ObjectMapper MAPPER = <span class="keyword">new</span> ObjectMapper();</div><div class="line"></div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * 将对象转换成json字符串。</span></div><div class="line"><span class="comment">     * &lt;p&gt;Title: pojoToJson&lt;/p&gt;</span></div><div class="line"><span class="comment">     * &lt;p&gt;Description: &lt;/p&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> data</span></div><div class="line"><span class="comment">     * <span class="doctag">@return</span></span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> String <span class="title">objectToJson</span><span class="params">(Object data)</span> </span>&#123;</div><div class="line">    	<span class="keyword">try</span> &#123;</div><div class="line">			String string = MAPPER.writeValueAsString(data);</div><div class="line">			<span class="keyword">return</span> string;</div><div class="line">		&#125; <span class="keyword">catch</span> (JsonProcessingException e) &#123;</div><div class="line">			e.printStackTrace();</div><div class="line">		&#125;</div><div class="line">    	<span class="keyword">return</span> <span class="keyword">null</span>;</div><div class="line">    &#125;</div><div class="line">    </div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * 将json结果集转化为对象</span></div><div class="line"><span class="comment">     * </span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> jsonData json数据</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> clazz 对象中的object类型</span></div><div class="line"><span class="comment">     * <span class="doctag">@return</span></span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="keyword">public</span> <span class="keyword">static</span> &lt;T&gt; <span class="function">T <span class="title">jsonToPojo</span><span class="params">(String jsonData, Class&lt;T&gt; beanType)</span> </span>&#123;</div><div class="line">        <span class="keyword">try</span> &#123;</div><div class="line">            T t = MAPPER.readValue(jsonData, beanType);</div><div class="line">            <span class="keyword">return</span> t;</div><div class="line">        &#125; <span class="keyword">catch</span> (Exception e) &#123;</div><div class="line">        	e.printStackTrace();</div><div class="line">        &#125;</div><div class="line">        <span class="keyword">return</span> <span class="keyword">null</span>;</div><div class="line">    &#125;</div><div class="line">    </div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * 将json数据转换成pojo对象list</span></div><div class="line"><span class="comment">     * &lt;p&gt;Title: jsonToList&lt;/p&gt;</span></div><div class="line"><span class="comment">     * &lt;p&gt;Description: &lt;/p&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> jsonData</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> beanType</span></div><div class="line"><span class="comment">     * <span class="doctag">@return</span></span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="keyword">public</span> <span class="keyword">static</span> &lt;T&gt;<span class="function">List&lt;T&gt; <span class="title">jsonToList</span><span class="params">(String jsonData, Class&lt;T&gt; beanType)</span> </span>&#123;</div><div class="line">    	JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);</div><div class="line">    	<span class="keyword">try</span> &#123;</div><div class="line">    		List&lt;T&gt; list = MAPPER.readValue(jsonData, javaType);</div><div class="line">    		<span class="keyword">return</span> list;</div><div class="line">		&#125; <span class="keyword">catch</span> (Exception e) &#123;</div><div class="line">			e.printStackTrace();</div><div class="line">		&#125;</div><div class="line">    	</div><div class="line">    	<span class="keyword">return</span> <span class="keyword">null</span>;</div><div class="line">    &#125;</div><div class="line">    </div><div class="line">&#125;</div></pre></td></tr></table></figure>
<h3 id="redis工具类-需要在配置文件里面加入"><a href="#redis工具类-需要在配置文件里面加入" class="headerlink" title="redis工具类(需要在配置文件里面加入)"></a>redis工具类(需要在配置文件里面加入)</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">interface</span> <span class="title">JedisClient</span> </span>&#123;</div><div class="line">    <span class="function">String <span class="title">get</span><span class="params">(String key)</span></span>;</div><div class="line">    <span class="function">String <span class="title">set</span><span class="params">(String key, String value)</span></span>;</div><div class="line">    <span class="function">String <span class="title">hget</span><span class="params">(String hkey, String key)</span></span>;</div><div class="line">    <span class="function"><span class="keyword">long</span> <span class="title">hset</span><span class="params">(String hkey, String key, String value)</span></span>;</div><div class="line">    <span class="function"><span class="keyword">long</span> <span class="title">incr</span><span class="params">(String key)</span></span>;</div><div class="line">    <span class="function"><span class="keyword">long</span> <span class="title">decr</span><span class="params">(String key)</span></span>;</div><div class="line">    <span class="function"><span class="keyword">long</span> <span class="title">expire</span><span class="params">(String key, <span class="keyword">int</span> second)</span></span>;</div><div class="line">    <span class="function"><span class="keyword">long</span> <span class="title">ttl</span><span class="params">(String key)</span></span>;</div><div class="line">    <span class="function"><span class="keyword">long</span> <span class="title">del</span><span class="params">(String key)</span></span>;</div><div class="line">    <span class="function"><span class="keyword">long</span> <span class="title">hdel</span><span class="params">(String hkey, String key)</span></span>;</div><div class="line">&#125;</div></pre></td></tr></table></figure>
<p>单机实现类<br><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div><div class="line">51</div><div class="line">52</div><div class="line">53</div><div class="line">54</div><div class="line">55</div><div class="line">56</div><div class="line">57</div><div class="line">58</div><div class="line">59</div><div class="line">60</div><div class="line">61</div><div class="line">62</div><div class="line">63</div><div class="line">64</div><div class="line">65</div><div class="line">66</div><div class="line">67</div><div class="line">68</div><div class="line">69</div><div class="line">70</div><div class="line">71</div><div class="line">72</div><div class="line">73</div><div class="line">74</div><div class="line">75</div><div class="line">76</div><div class="line">77</div><div class="line">78</div><div class="line">79</div><div class="line">80</div><div class="line">81</div><div class="line">82</div><div class="line">83</div><div class="line">84</div><div class="line">85</div><div class="line">86</div><div class="line">87</div><div class="line">88</div><div class="line">89</div><div class="line">90</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">import</span> com.migo.order.jediscomp.JedisClient;</div><div class="line"><span class="keyword">import</span> org.springframework.beans.factory.annotation.Autowired;</div><div class="line"><span class="keyword">import</span> redis.clients.jedis.Jedis;</div><div class="line"><span class="keyword">import</span> redis.clients.jedis.JedisPool;</div><div class="line"></div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">JedisClientSingle</span> <span class="keyword">implements</span> <span class="title">JedisClient</span> </span>&#123;</div><div class="line"></div><div class="line">    <span class="meta">@Autowired</span></div><div class="line">    <span class="keyword">private</span> JedisPool jedisPool;</div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> String <span class="title">get</span><span class="params">(String key)</span> </span>&#123;</div><div class="line">        Jedis jedis=jedisPool.getResource();</div><div class="line">        String result=jedis.get(key);</div><div class="line">        jedis.close();</div><div class="line">        <span class="keyword">return</span> result;</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> String <span class="title">set</span><span class="params">(String key, String value)</span> </span>&#123;</div><div class="line">        Jedis jedis=jedisPool.getResource();</div><div class="line">        String result=jedis.set(key, value);</div><div class="line">        jedis.close();</div><div class="line">        <span class="keyword">return</span> result;</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> String <span class="title">hget</span><span class="params">(String hkey, String key)</span> </span>&#123;</div><div class="line">        Jedis jedis=jedisPool.getResource();</div><div class="line">        String result=jedis.hget(hkey, key);</div><div class="line">        jedis.close();</div><div class="line">        <span class="keyword">return</span> result;</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">long</span> <span class="title">hset</span><span class="params">(String hkey, String key, String value)</span> </span>&#123;</div><div class="line">        Jedis jedis=jedisPool.getResource();</div><div class="line">        Long result = jedis.hset(hkey, key, value);</div><div class="line">        jedis.close();</div><div class="line">        <span class="keyword">return</span> result;</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">long</span> <span class="title">incr</span><span class="params">(String key)</span> </span>&#123;</div><div class="line">        Jedis jedis=jedisPool.getResource();</div><div class="line">        Long result = jedis.incr(key);</div><div class="line">        jedis.close();</div><div class="line">        <span class="keyword">return</span> result;</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">long</span> <span class="title">decr</span><span class="params">(String key)</span> </span>&#123;</div><div class="line">        Jedis jedis=jedisPool.getResource();</div><div class="line">        Long result = jedis.decr(key);</div><div class="line">        jedis.close();</div><div class="line">        <span class="keyword">return</span> result;</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">long</span> <span class="title">expire</span><span class="params">(String key, <span class="keyword">int</span> second)</span> </span>&#123;</div><div class="line">        Jedis jedis=jedisPool.getResource();</div><div class="line">        Long result = jedis.expire(key, second);</div><div class="line">        jedis.close();</div><div class="line">        <span class="keyword">return</span> result;</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">long</span> <span class="title">ttl</span><span class="params">(String key)</span> </span>&#123;</div><div class="line">        Jedis jedis=jedisPool.getResource();</div><div class="line">        Long result = jedis.ttl(key);</div><div class="line">        jedis.close();</div><div class="line">        <span class="keyword">return</span> result;</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">long</span> <span class="title">del</span><span class="params">(String key)</span> </span>&#123;</div><div class="line">        Jedis jedis=jedisPool.getResource();</div><div class="line">        Long result = jedis.del(key);</div><div class="line">        jedis.close();</div><div class="line">        <span class="keyword">return</span> result;</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">long</span> <span class="title">hdel</span><span class="params">(String hkey, String key)</span> </span>&#123;</div><div class="line">        Jedis jedis=jedisPool.getResource();</div><div class="line">        Long result = jedis.hdel(hkey, key);</div><div class="line">        jedis.close();</div><div class="line">        <span class="keyword">return</span> result;</div><div class="line">    &#125;</div><div class="line">&#125;</div></pre></td></tr></table></figure></p>
<p>集群实现类<br><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div><div class="line">51</div><div class="line">52</div><div class="line">53</div><div class="line">54</div><div class="line">55</div><div class="line">56</div><div class="line">57</div><div class="line">58</div><div class="line">59</div><div class="line">60</div><div class="line">61</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">import</span> com.migo.order.jediscomp.JedisClient;</div><div class="line"><span class="keyword">import</span> org.springframework.beans.factory.annotation.Autowired;</div><div class="line"><span class="keyword">import</span> redis.clients.jedis.JedisCluster;</div><div class="line"></div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">JedisClientCluster</span> <span class="keyword">implements</span> <span class="title">JedisClient</span> </span>&#123;</div><div class="line"></div><div class="line">    <span class="meta">@Autowired</span></div><div class="line">    <span class="keyword">private</span> JedisCluster jedisCluster;</div><div class="line"></div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> String <span class="title">get</span><span class="params">(String key)</span> </span>&#123;</div><div class="line">        <span class="keyword">return</span> jedisCluster.get(key);</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> String <span class="title">set</span><span class="params">(String key, String value)</span> </span>&#123;</div><div class="line"></div><div class="line">        <span class="keyword">return</span> jedisCluster.set(key, value);</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> String <span class="title">hget</span><span class="params">(String hkey, String key)</span> </span>&#123;</div><div class="line">        <span class="keyword">return</span> jedisCluster.hget(hkey, key);</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">long</span> <span class="title">hset</span><span class="params">(String hkey, String key, String value)</span> </span>&#123;</div><div class="line">        <span class="keyword">return</span> jedisCluster.hset(hkey, key, value);</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">long</span> <span class="title">incr</span><span class="params">(String key)</span> </span>&#123;</div><div class="line">        <span class="keyword">return</span> jedisCluster.incr(key);</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">long</span> <span class="title">decr</span><span class="params">(String key)</span> </span>&#123;</div><div class="line">        <span class="keyword">return</span> jedisCluster.decr(key);</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">long</span> <span class="title">expire</span><span class="params">(String key, <span class="keyword">int</span> second)</span> </span>&#123;</div><div class="line">        <span class="keyword">return</span> jedisCluster.expire(key, second);</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">long</span> <span class="title">ttl</span><span class="params">(String key)</span> </span>&#123;</div><div class="line">        <span class="keyword">return</span> jedisCluster.ttl(key);</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">long</span> <span class="title">del</span><span class="params">(String key)</span> </span>&#123;</div><div class="line">        <span class="keyword">return</span> jedisCluster.del(key);</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">long</span> <span class="title">hdel</span><span class="params">(String hkey, String key)</span> </span>&#123;</div><div class="line">        <span class="keyword">return</span> jedisCluster.hdel(hkey,key);</div><div class="line">    &#125;</div><div class="line">&#125;</div></pre></td></tr></table></figure></p>
<h3 id="redis与spring整合"><a href="#redis与spring整合" class="headerlink" title="redis与spring整合"></a>redis与spring整合</h3><p>applicationContext-redis.xml<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div><div class="line">51</div><div class="line">52</div><div class="line">53</div><div class="line">54</div><div class="line">55</div></pre></td><td class="code"><pre><div class="line">&lt;?xml version=<span class="string">"1.0"</span> encoding=<span class="string">"UTF-8"</span>?&gt;</div><div class="line">&lt;beans xmlns=<span class="string">"http://www.springframework.org/schema/beans"</span></div><div class="line">       xmlns:context=<span class="string">"http://www.springframework.org/schema/context"</span> xmlns:p=<span class="string">"http://www.springframework.org/schema/p"</span></div><div class="line">       xmlns:aop=<span class="string">"http://www.springframework.org/schema/aop"</span> xmlns:tx=<span class="string">"http://www.springframework.org/schema/tx"</span></div><div class="line">       xmlns:xsi=<span class="string">"http://www.w3.org/2001/XMLSchema-instance"</span></div><div class="line">       xsi:schemaLocation=<span class="string">"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd</span></div><div class="line"><span class="string">	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd</span></div><div class="line"><span class="string">	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd</span></div><div class="line"><span class="string">	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"</span>&gt;</div><div class="line"></div><div class="line"></div><div class="line">    &lt;!--扫描包加载service实现类--&gt;</div><div class="line">    &lt;context:component-scan base-package=<span class="string">"com.migo.order.service"</span>/&gt;</div><div class="line">    &lt;!-- 配置redis客户端单机版 --&gt;</div><div class="line">    &lt;bean id=<span class="string">"jedisPool"</span> class=<span class="string">"redis.clients.jedis.JedisPool"</span>&gt;</div><div class="line">        &lt;constructor-arg name=<span class="string">"host"</span> value=<span class="string">"192.168.42.131"</span>/&gt;</div><div class="line">        &lt;constructor-arg name=<span class="string">"port"</span> value=<span class="string">"6379"</span>/&gt;</div><div class="line">    &lt;/bean&gt;</div><div class="line">    &lt;!-- 配置redis客户端实现类 --&gt;</div><div class="line">    &lt;bean id=<span class="string">"jedisClientSingle"</span> class=<span class="string">"com.migo.order.jediscomp.impl.JedisClientSingle"</span>/&gt;</div><div class="line"></div><div class="line">    &lt;!-- 配置redis客户端集群版 --&gt;</div><div class="line">     &lt;!--&lt;bean id=<span class="string">"jedisCluster"</span> class=<span class="string">"redis.clients.jedis.JedisCluster"</span>&gt;</div><div class="line">        &lt;constructor-arg&gt;</div><div class="line">            &lt;<span class="built_in">set</span>&gt;</div><div class="line">                &lt;bean class=<span class="string">"redis.clients.jedis.HostAndPort"</span>&gt;</div><div class="line">                    &lt;constructor-arg name=<span class="string">"host"</span> value=<span class="string">"192.168.42.131"</span>/&gt;</div><div class="line">                    &lt;constructor-arg name=<span class="string">"port"</span> value=<span class="string">"7001"</span>/&gt;</div><div class="line">                &lt;/bean&gt;</div><div class="line">                &lt;bean class=<span class="string">"redis.clients.jedis.HostAndPort"</span>&gt;</div><div class="line">                    &lt;constructor-arg name=<span class="string">"host"</span> value=<span class="string">"192.168.42.131"</span>/&gt;</div><div class="line">                    &lt;constructor-arg name=<span class="string">"port"</span> value=<span class="string">"7002"</span>/&gt;</div><div class="line">                &lt;/bean&gt;</div><div class="line">                &lt;bean class=<span class="string">"redis.clients.jedis.HostAndPort"</span>&gt;</div><div class="line">                    &lt;constructor-arg name=<span class="string">"host"</span> value=<span class="string">"192.168.42.131"</span>/&gt;</div><div class="line">                    &lt;constructor-arg name=<span class="string">"port"</span> value=<span class="string">"7003"</span>/&gt;</div><div class="line">                &lt;/bean&gt;</div><div class="line">                &lt;bean class=<span class="string">"redis.clients.jedis.HostAndPort"</span>&gt;</div><div class="line">                    &lt;constructor-arg name=<span class="string">"host"</span> value=<span class="string">"192.168.42.131"</span>/&gt;</div><div class="line">                    &lt;constructor-arg name=<span class="string">"port"</span> value=<span class="string">"7004"</span>/&gt;</div><div class="line">                &lt;/bean&gt;</div><div class="line">                &lt;bean class=<span class="string">"redis.clients.jedis.HostAndPort"</span>&gt;</div><div class="line">                    &lt;constructor-arg name=<span class="string">"host"</span> value=<span class="string">"192.168.42.131"</span>/&gt;</div><div class="line">                    &lt;constructor-arg name=<span class="string">"port"</span> value=<span class="string">"7005"</span>/&gt;</div><div class="line">                &lt;/bean&gt;</div><div class="line">                &lt;bean class=<span class="string">"redis.clients.jedis.HostAndPort"</span>&gt;</div><div class="line">                    &lt;constructor-arg name=<span class="string">"host"</span> value=<span class="string">"192.168.42.131"</span>/&gt;</div><div class="line">                    &lt;constructor-arg name=<span class="string">"port"</span> value=<span class="string">"7006"</span>/&gt;</div><div class="line">                &lt;/bean&gt;</div><div class="line">            &lt;/<span class="built_in">set</span>&gt;</div><div class="line">        &lt;/constructor-arg&gt;</div><div class="line">    &lt;/bean&gt;</div><div class="line">    &lt;bean id=<span class="string">"jedisClientCluster"</span> class=<span class="string">"com.migo.order.jediscomp.impl.JedisClientCluster"</span>/&gt;</div><div class="line">--&gt;</div><div class="line">&lt;/beans&gt;</div></pre></td></tr></table></figure></p>
<h4 id="redis缓存使用"><a href="#redis缓存使用" class="headerlink" title="redis缓存使用"></a>redis缓存使用</h4><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div></pre></td><td class="code"><pre><div class="line">**service实现类中***</div><div class="line"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> String REDIS_KEY = <span class="string">"MIGO_MANAGE_ITEM_CAT_LIST"</span>; <span class="comment">// 规则：项目名_模块名_业务名</span></div><div class="line"> <span class="comment">// 从缓存中命中，如果命中返回，没有命中继续查询</span></div><div class="line">  String jsonData = jedisClient.get(REDIS_KEY);</div><div class="line">  <span class="comment">//将查询结果集写入到Redis中</span></div><div class="line">  <span class="keyword">this</span>.jedisClient.set(REDIS_KEY,JsonUtils.objectToJson(resultList),REDIS_TIME);</div><div class="line">---------------------------------------华丽分割线--------------------------------------------</div><div class="line">至于写的操作对缓存做出了修改</div><div class="line">根据你更新的数据的key看能否命中redis的缓存数据，如果没命中，什么都不做，如果命中，</div><div class="line">更新redis缓存中的命中的数据。缓存是典型的读多写少，你不能每次更新都去更新缓存</div></pre></td></tr></table></figure>
<h3 id="Excel模板导出工具类"><a href="#Excel模板导出工具类" class="headerlink" title="Excel模板导出工具类"></a>Excel模板导出工具类</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div><div class="line">51</div><div class="line">52</div><div class="line">53</div><div class="line">54</div><div class="line">55</div><div class="line">56</div><div class="line">57</div><div class="line">58</div><div class="line">59</div><div class="line">60</div><div class="line">61</div><div class="line">62</div><div class="line">63</div><div class="line">64</div><div class="line">65</div><div class="line">66</div><div class="line">67</div><div class="line">68</div><div class="line">69</div><div class="line">70</div><div class="line">71</div><div class="line">72</div><div class="line">73</div><div class="line">74</div><div class="line">75</div><div class="line">76</div><div class="line">77</div><div class="line">78</div><div class="line">79</div><div class="line">80</div><div class="line">81</div><div class="line">82</div><div class="line">83</div><div class="line">84</div><div class="line">85</div><div class="line">86</div><div class="line">87</div><div class="line">88</div><div class="line">89</div><div class="line">90</div><div class="line">91</div><div class="line">92</div><div class="line">93</div><div class="line">94</div><div class="line">95</div><div class="line">96</div><div class="line">97</div><div class="line">98</div><div class="line">99</div><div class="line">100</div><div class="line">101</div><div class="line">102</div><div class="line">103</div><div class="line">104</div><div class="line">105</div><div class="line">106</div><div class="line">107</div><div class="line">108</div><div class="line">109</div><div class="line">110</div><div class="line">111</div><div class="line">112</div><div class="line">113</div><div class="line">114</div><div class="line">115</div><div class="line">116</div><div class="line">117</div><div class="line">118</div><div class="line">119</div><div class="line">120</div><div class="line">121</div><div class="line">122</div><div class="line">123</div><div class="line">124</div><div class="line">125</div><div class="line">126</div><div class="line">127</div><div class="line">128</div><div class="line">129</div><div class="line">130</div><div class="line">131</div><div class="line">132</div><div class="line">133</div><div class="line">134</div><div class="line">135</div><div class="line">136</div><div class="line">137</div><div class="line">138</div><div class="line">139</div><div class="line">140</div><div class="line">141</div><div class="line">142</div><div class="line">143</div><div class="line">144</div><div class="line">145</div><div class="line">146</div><div class="line">147</div><div class="line">148</div><div class="line">149</div><div class="line">150</div><div class="line">151</div><div class="line">152</div><div class="line">153</div><div class="line">154</div><div class="line">155</div><div class="line">156</div><div class="line">157</div><div class="line">158</div><div class="line">159</div><div class="line">160</div><div class="line">161</div><div class="line">162</div><div class="line">163</div><div class="line">164</div><div class="line">165</div><div class="line">166</div><div class="line">167</div><div class="line">168</div><div class="line">169</div><div class="line">170</div><div class="line">171</div><div class="line">172</div><div class="line">173</div><div class="line">174</div><div class="line">175</div><div class="line">176</div><div class="line">177</div><div class="line">178</div><div class="line">179</div><div class="line">180</div><div class="line">181</div><div class="line">182</div><div class="line">183</div><div class="line">184</div><div class="line">185</div><div class="line">186</div><div class="line">187</div><div class="line">188</div><div class="line">189</div><div class="line">190</div><div class="line">191</div><div class="line">192</div><div class="line">193</div><div class="line">194</div><div class="line">195</div><div class="line">196</div><div class="line">197</div><div class="line">198</div><div class="line">199</div><div class="line">200</div><div class="line">201</div><div class="line">202</div><div class="line">203</div><div class="line">204</div><div class="line">205</div><div class="line">206</div><div class="line">207</div><div class="line">208</div><div class="line">209</div><div class="line">210</div><div class="line">211</div><div class="line">212</div><div class="line">213</div><div class="line">214</div><div class="line">215</div><div class="line">216</div><div class="line">217</div><div class="line">218</div><div class="line">219</div><div class="line">220</div><div class="line">221</div><div class="line">222</div><div class="line">223</div><div class="line">224</div><div class="line">225</div><div class="line">226</div><div class="line">227</div><div class="line">228</div><div class="line">229</div><div class="line">230</div><div class="line">231</div><div class="line">232</div><div class="line">233</div><div class="line">234</div><div class="line">235</div><div class="line">236</div><div class="line">237</div><div class="line">238</div><div class="line">239</div><div class="line">240</div><div class="line">241</div><div class="line">242</div><div class="line">243</div><div class="line">244</div><div class="line">245</div><div class="line">246</div><div class="line">247</div><div class="line">248</div><div class="line">249</div><div class="line">250</div><div class="line">251</div><div class="line">252</div><div class="line">253</div><div class="line">254</div><div class="line">255</div><div class="line">256</div><div class="line">257</div><div class="line">258</div><div class="line">259</div><div class="line">260</div><div class="line">261</div><div class="line">262</div><div class="line">263</div><div class="line">264</div><div class="line">265</div><div class="line">266</div><div class="line">267</div><div class="line">268</div><div class="line">269</div><div class="line">270</div><div class="line">271</div><div class="line">272</div><div class="line">273</div><div class="line">274</div><div class="line">275</div><div class="line">276</div><div class="line">277</div><div class="line">278</div><div class="line">279</div><div class="line">280</div><div class="line">281</div><div class="line">282</div><div class="line">283</div><div class="line">284</div><div class="line">285</div><div class="line">286</div><div class="line">287</div><div class="line">288</div><div class="line">289</div><div class="line">290</div><div class="line">291</div><div class="line">292</div><div class="line">293</div><div class="line">294</div><div class="line">295</div><div class="line">296</div><div class="line">297</div><div class="line">298</div><div class="line">299</div><div class="line">300</div><div class="line">301</div><div class="line">302</div><div class="line">303</div><div class="line">304</div><div class="line">305</div><div class="line">306</div><div class="line">307</div><div class="line">308</div><div class="line">309</div><div class="line">310</div><div class="line">311</div><div class="line">312</div><div class="line">313</div><div class="line">314</div><div class="line">315</div><div class="line">316</div><div class="line">317</div><div class="line">318</div><div class="line">319</div><div class="line">320</div><div class="line">321</div><div class="line">322</div><div class="line">323</div><div class="line">324</div><div class="line">325</div><div class="line">326</div><div class="line">327</div><div class="line">328</div><div class="line">329</div><div class="line">330</div><div class="line">331</div><div class="line">332</div><div class="line">333</div><div class="line">334</div><div class="line">335</div><div class="line">336</div><div class="line">337</div><div class="line">338</div><div class="line">339</div><div class="line">340</div><div class="line">341</div><div class="line">342</div><div class="line">343</div><div class="line">344</div><div class="line">345</div><div class="line">346</div><div class="line">347</div><div class="line">348</div><div class="line">349</div><div class="line">350</div><div class="line">351</div><div class="line">352</div><div class="line">353</div><div class="line">354</div><div class="line">355</div><div class="line">356</div><div class="line">357</div><div class="line">358</div><div class="line">359</div><div class="line">360</div><div class="line">361</div><div class="line">362</div><div class="line">363</div><div class="line">364</div><div class="line">365</div><div class="line">366</div><div class="line">367</div><div class="line">368</div><div class="line">369</div><div class="line">370</div><div class="line">371</div><div class="line">372</div><div class="line">373</div><div class="line">374</div><div class="line">375</div><div class="line">376</div><div class="line">377</div><div class="line">378</div><div class="line">379</div><div class="line">380</div><div class="line">381</div><div class="line">382</div><div class="line">383</div><div class="line">384</div><div class="line">385</div><div class="line">386</div><div class="line">387</div><div class="line">388</div><div class="line">389</div><div class="line">390</div><div class="line">391</div><div class="line">392</div><div class="line">393</div><div class="line">394</div><div class="line">395</div><div class="line">396</div><div class="line">397</div><div class="line">398</div><div class="line">399</div><div class="line">400</div><div class="line">401</div><div class="line">402</div><div class="line">403</div><div class="line">404</div><div class="line">405</div><div class="line">406</div><div class="line">407</div><div class="line">408</div><div class="line">409</div><div class="line">410</div><div class="line">411</div><div class="line">412</div><div class="line">413</div><div class="line">414</div><div class="line">415</div><div class="line">416</div><div class="line">417</div><div class="line">418</div><div class="line">419</div><div class="line">420</div><div class="line">421</div><div class="line">422</div><div class="line">423</div><div class="line">424</div><div class="line">425</div><div class="line">426</div><div class="line">427</div><div class="line">428</div><div class="line">429</div><div class="line">430</div><div class="line">431</div><div class="line">432</div><div class="line">433</div><div class="line">434</div><div class="line">435</div><div class="line">436</div><div class="line">437</div><div class="line">438</div><div class="line">439</div><div class="line">440</div><div class="line">441</div><div class="line">442</div><div class="line">443</div><div class="line">444</div><div class="line">445</div><div class="line">446</div></pre></td><td class="code"><pre><div class="line"><span class="comment">/**</span></div><div class="line"><span class="comment"> * 报表工具类</span></div><div class="line"><span class="comment"> * <span class="doctag">@author</span> Administrator</span></div><div class="line"><span class="comment"> *</span></div><div class="line"><span class="comment"> */</span></div><div class="line"><span class="keyword">import</span> java.io.File;</div><div class="line"><span class="keyword">import</span> java.io.FileInputStream;</div><div class="line"><span class="keyword">import</span> java.io.FileNotFoundException;</div><div class="line"><span class="keyword">import</span> java.io.FileOutputStream;</div><div class="line"><span class="keyword">import</span> java.io.IOException;</div><div class="line"><span class="keyword">import</span> java.io.OutputStream;</div><div class="line"><span class="keyword">import</span> java.util.ArrayList;</div><div class="line"><span class="keyword">import</span> java.util.HashMap;</div><div class="line"><span class="keyword">import</span> java.util.Iterator;</div><div class="line"><span class="keyword">import</span> java.util.List;</div><div class="line"><span class="keyword">import</span> java.util.Map;</div><div class="line"><span class="keyword">import</span> java.util.Map.Entry;</div><div class="line"><span class="keyword">import</span> java.util.regex.Matcher;</div><div class="line"><span class="keyword">import</span> java.util.regex.Pattern;</div><div class="line"> </div><div class="line"><span class="keyword">import</span> org.apache.poi.hssf.usermodel.HSSFWorkbook;</div><div class="line"><span class="keyword">import</span> org.apache.poi.ss.usermodel.Cell;</div><div class="line"><span class="keyword">import</span> org.apache.poi.ss.usermodel.CellStyle;</div><div class="line"><span class="keyword">import</span> org.apache.poi.ss.usermodel.Row;</div><div class="line"><span class="keyword">import</span> org.apache.poi.ss.usermodel.Sheet;</div><div class="line"><span class="keyword">import</span> org.apache.poi.ss.usermodel.Workbook;</div><div class="line"><span class="keyword">import</span> org.apache.poi.ss.util.CellRangeAddress;</div><div class="line"><span class="keyword">import</span> org.apache.poi.xssf.usermodel.XSSFWorkbook;</div><div class="line"> </div><div class="line"><span class="comment">/**</span></div><div class="line"><span class="comment"> * </span></div><div class="line"><span class="comment"> * &lt;p class="detail"&gt;</span></div><div class="line"><span class="comment"> * 描述：poi根据模板导出excel，根据excel坐标赋值，如（B1）</span></div><div class="line"><span class="comment"> * &lt;/p&gt;</span></div><div class="line"><span class="comment"> * <span class="doctag">@ClassName</span>: ExcelUtil</span></div><div class="line"><span class="comment"> * <span class="doctag">@version</span> V1.0  </span></div><div class="line"><span class="comment"> * <span class="doctag">@date</span> 2015年9月27日 </span></div><div class="line"><span class="comment"> * <span class="doctag">@author</span> &lt;a href="mailto:1435290472@qq.com"&gt;zq&lt;/a&gt;</span></div><div class="line"><span class="comment"> */</span></div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">PoiUtils</span> </span>&#123;</div><div class="line"> </div><div class="line">    <span class="comment">//模板map</span></div><div class="line">    <span class="keyword">private</span> Map&lt;String,Workbook&gt; tempWorkbook = <span class="keyword">new</span> HashMap&lt;String, Workbook&gt;();</div><div class="line">    <span class="comment">//模板输入流map</span></div><div class="line">    <span class="keyword">private</span> Map&lt;String,FileInputStream&gt; tempStream = <span class="keyword">new</span> HashMap&lt;String, FileInputStream&gt;();</div><div class="line">     </div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * </span></div><div class="line"><span class="comment">     * &lt;p class="detail"&gt;</span></div><div class="line"><span class="comment">     * 描述：临时单元格数据</span></div><div class="line"><span class="comment">     * &lt;/p&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@ClassName</span>: Cell</span></div><div class="line"><span class="comment">     * <span class="doctag">@version</span> V1.0  </span></div><div class="line"><span class="comment">     * <span class="doctag">@date</span> 2015年9月26日 </span></div><div class="line"><span class="comment">     * <span class="doctag">@author</span> &lt;a href="mailto:1435290472@qq.com"&gt;zq&lt;/a&gt;</span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="class"><span class="keyword">class</span> <span class="title">TempCell</span></span>&#123;</div><div class="line">        <span class="keyword">private</span> <span class="keyword">int</span> row;</div><div class="line">        <span class="keyword">private</span> <span class="keyword">int</span> column;</div><div class="line">        <span class="keyword">private</span> CellStyle cellStyle;</div><div class="line">        <span class="keyword">private</span> Object data;</div><div class="line">        <span class="comment">//用于列表合并，表示几列合并</span></div><div class="line">        <span class="keyword">private</span> <span class="keyword">int</span> columnSize = -<span class="number">1</span>;</div><div class="line"> </div><div class="line">        <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">getColumn</span><span class="params">()</span> </span>&#123;</div><div class="line">            <span class="keyword">return</span> column;</div><div class="line">        &#125;</div><div class="line">        <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">setColumn</span><span class="params">(<span class="keyword">int</span> column)</span> </span>&#123;</div><div class="line">            <span class="keyword">this</span>.column = column;</div><div class="line">        &#125;</div><div class="line">        <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">getRow</span><span class="params">()</span> </span>&#123;</div><div class="line">            <span class="keyword">return</span> row;</div><div class="line">        &#125;</div><div class="line">        <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">setRow</span><span class="params">(<span class="keyword">int</span> row)</span> </span>&#123;</div><div class="line">            <span class="keyword">this</span>.row = row;</div><div class="line">        &#125;</div><div class="line">        <span class="function"><span class="keyword">public</span> CellStyle <span class="title">getCellStyle</span><span class="params">()</span> </span>&#123;</div><div class="line">            <span class="keyword">return</span> cellStyle;</div><div class="line">        &#125;</div><div class="line">        <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">setCellStyle</span><span class="params">(CellStyle cellStyle)</span> </span>&#123;</div><div class="line">            <span class="keyword">this</span>.cellStyle = cellStyle;</div><div class="line">        &#125;</div><div class="line">        <span class="function"><span class="keyword">public</span> Object <span class="title">getData</span><span class="params">()</span> </span>&#123;</div><div class="line">            <span class="keyword">return</span> data;</div><div class="line">        &#125;</div><div class="line">        <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">setData</span><span class="params">(Object data)</span> </span>&#123;</div><div class="line">            <span class="keyword">this</span>.data = data;</div><div class="line">        &#125;</div><div class="line">        <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">getColumnSize</span><span class="params">()</span> </span>&#123;</div><div class="line">            <span class="keyword">return</span> columnSize;</div><div class="line">        &#125;</div><div class="line">        <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">setColumnSize</span><span class="params">(<span class="keyword">int</span> columnSize)</span> </span>&#123;</div><div class="line">            <span class="keyword">this</span>.columnSize = columnSize;</div><div class="line">        &#125;</div><div class="line">    &#125;</div><div class="line">     </div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * </span></div><div class="line"><span class="comment">     * &lt;p class="detail"&gt;</span></div><div class="line"><span class="comment">     * 功能：按模板向Excel中相应地方填充数据</span></div><div class="line"><span class="comment">     * &lt;/p&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@date</span> 2015年9月26日</span></div><div class="line"><span class="comment">     * <span class="doctag">@author</span> &lt;a href="mailto:1435290472@qq.com"&gt;zq&lt;/a&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> tempFilePath</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> dataMap</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> sheetNo</span></div><div class="line"><span class="comment">     * <span class="doctag">@throws</span> IOException</span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">writeData</span><span class="params">(String tempFilePath,Map&lt;String,Object&gt; dataMap,<span class="keyword">int</span> sheetNo)</span> <span class="keyword">throws</span> IOException</span>&#123;</div><div class="line">        <span class="comment">//获取模板填充格式位置等数据</span></div><div class="line">    <span class="comment">//    HashMap tem = getTemp(tempFilePath,sheet);</span></div><div class="line">        <span class="comment">//读取模板</span></div><div class="line">        Workbook wbModule = getTempWorkbook(tempFilePath);</div><div class="line">        <span class="comment">//数据填充的sheet</span></div><div class="line">        Sheet wsheet = wbModule.getSheetAt(sheetNo);</div><div class="line">         </div><div class="line">        Iterator it = dataMap.entrySet().iterator();</div><div class="line">        <span class="keyword">while</span>(it.hasNext())&#123;</div><div class="line">            Entry&lt;String, Object&gt; entry = (Entry&lt;String, Object&gt;) it.next();</div><div class="line">            String point = entry.getKey();</div><div class="line">            Object data = entry.getValue();</div><div class="line">             </div><div class="line">            TempCell cell = getCell(point, data,wsheet);</div><div class="line">            <span class="comment">//指定坐标赋值</span></div><div class="line">            setCell(cell,wsheet);</div><div class="line">        &#125;</div><div class="line">        <span class="comment">//设置生成excel中公式自动计算</span></div><div class="line">        wsheet.setForceFormulaRecalculation(<span class="keyword">true</span>);</div><div class="line">    &#125;</div><div class="line">     </div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * </span></div><div class="line"><span class="comment">     * &lt;p class="detail"&gt;</span></div><div class="line"><span class="comment">     * 功能：按模板向Excel中列表填充数据。    只支持列合并</span></div><div class="line"><span class="comment">     * &lt;/p&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@date</span> 2015年9月27日</span></div><div class="line"><span class="comment">     * <span class="doctag">@author</span> &lt;a href="mailto:1435290472@qq.com"&gt;zq&lt;/a&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> tempFilePath</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> heads   列表头部位置集合</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> datalist</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> sheetNo</span></div><div class="line"><span class="comment">     * <span class="doctag">@throws</span> FileNotFoundException</span></div><div class="line"><span class="comment">     * <span class="doctag">@throws</span> IOException</span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">writeDateList</span><span class="params">(String tempFilePath,String[] heads,List&lt;Map&lt;Integer, Object&gt;&gt; datalist,<span class="keyword">int</span> sheetNo)</span> <span class="keyword">throws</span> FileNotFoundException, IOException </span>&#123;</div><div class="line">        <span class="comment">//读取模板</span></div><div class="line">        Workbook wbModule = getTempWorkbook(tempFilePath);</div><div class="line">        <span class="comment">//数据填充的sheet</span></div><div class="line">        Sheet wsheet = wbModule.getSheetAt(sheetNo);</div><div class="line">        <span class="comment">//列表数据模板cell</span></div><div class="line">        List&lt;TempCell&gt; tempCells = <span class="keyword">new</span> ArrayList&lt;TempCell&gt;();</div><div class="line">        <span class="keyword">for</span>(<span class="keyword">int</span> i=<span class="number">0</span>;i&lt;heads.length;i++)&#123;</div><div class="line">            String point = heads[i];</div><div class="line">            TempCell tempCell = getCell(point,<span class="keyword">null</span>,wsheet);</div><div class="line">            <span class="comment">//取得合并单元格位置  -1：表示不是合并单元格</span></div><div class="line">            <span class="keyword">int</span> pos = isMergedRegion(wsheet, tempCell.getRow(), tempCell.getColumn());</div><div class="line">            <span class="keyword">if</span>(pos&gt;-<span class="number">1</span>)&#123;</div><div class="line">                CellRangeAddress range = wsheet.getMergedRegion(pos);</div><div class="line">                tempCell.setColumnSize(range.getLastColumn()-range.getFirstColumn());</div><div class="line">            &#125;</div><div class="line">            tempCells.add(tempCell);</div><div class="line">        &#125;</div><div class="line">        <span class="comment">//赋值</span></div><div class="line">        <span class="keyword">for</span>(<span class="keyword">int</span> i=<span class="number">0</span>;i&lt;datalist.size();i++)&#123;</div><div class="line">            Map&lt;Integer, Object&gt; dataMap = datalist.get(i);</div><div class="line">            <span class="keyword">for</span>(<span class="keyword">int</span> j=<span class="number">0</span>;j&lt;tempCells.size();j++)&#123;</div><div class="line">                TempCell tempCell = tempCells.get(j);</div><div class="line">                tempCell.setRow(tempCell.getRow()+<span class="number">1</span>);</div><div class="line">                tempCell.setData(dataMap.get(j+<span class="number">1</span>));</div><div class="line">                setCell(tempCell, wsheet);</div><div class="line">            &#125;</div><div class="line">        &#125;</div><div class="line"> </div><div class="line">         </div><div class="line">    &#125;</div><div class="line">     </div><div class="line">     </div><div class="line"> </div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * </span></div><div class="line"><span class="comment">     * &lt;p class="detail"&gt;</span></div><div class="line"><span class="comment">     * 功能：获取输入工作区</span></div><div class="line"><span class="comment">     * &lt;/p&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@date</span> 2015年9月26日</span></div><div class="line"><span class="comment">     * <span class="doctag">@author</span> &lt;a href="mailto:1435290472@qq.com"&gt;zq&lt;/a&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> tempFilePath</span></div><div class="line"><span class="comment">     * <span class="doctag">@return</span></span></div><div class="line"><span class="comment">     * <span class="doctag">@throws</span> FileNotFoundException</span></div><div class="line"><span class="comment">     * <span class="doctag">@throws</span> IOException</span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">private</span> Workbook <span class="title">getTempWorkbook</span><span class="params">(String tempFilePath)</span> <span class="keyword">throws</span> FileNotFoundException, IOException </span>&#123;</div><div class="line">        <span class="keyword">if</span>(!tempWorkbook.containsKey(tempFilePath))&#123;</div><div class="line">            <span class="keyword">if</span>(tempFilePath.endsWith(<span class="string">".xlsx"</span>))&#123;</div><div class="line">                tempWorkbook.put(tempFilePath, <span class="keyword">new</span> XSSFWorkbook(getFileInputStream(tempFilePath)));</div><div class="line">            &#125;<span class="keyword">else</span> <span class="keyword">if</span>(tempFilePath.endsWith(<span class="string">".xls"</span>))&#123;</div><div class="line">                tempWorkbook.put(tempFilePath, <span class="keyword">new</span> HSSFWorkbook(getFileInputStream(tempFilePath)));</div><div class="line">            &#125;</div><div class="line">        &#125;</div><div class="line">        <span class="keyword">return</span> tempWorkbook.get(tempFilePath);</div><div class="line">    &#125;</div><div class="line">     </div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * </span></div><div class="line"><span class="comment">     * &lt;p class="detail"&gt;</span></div><div class="line"><span class="comment">     * 功能：获得模板输入流</span></div><div class="line"><span class="comment">     * &lt;/p&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@date</span> 2015年9月26日</span></div><div class="line"><span class="comment">     * <span class="doctag">@author</span> &lt;a href="mailto:1435290472@qq.com"&gt;zq&lt;/a&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> tempFilePath</span></div><div class="line"><span class="comment">     * <span class="doctag">@return</span></span></div><div class="line"><span class="comment">     * <span class="doctag">@throws</span> FileNotFoundException</span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">private</span> FileInputStream <span class="title">getFileInputStream</span><span class="params">(String tempFilePath)</span> <span class="keyword">throws</span> FileNotFoundException </span>&#123;</div><div class="line">        <span class="keyword">if</span>(!tempStream.containsKey(tempFilePath))&#123;</div><div class="line">            tempStream.put(tempFilePath, <span class="keyword">new</span> FileInputStream(tempFilePath));</div><div class="line">        &#125;</div><div class="line">        <span class="keyword">return</span> tempStream.get(tempFilePath);</div><div class="line">    &#125;</div><div class="line">     </div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * </span></div><div class="line"><span class="comment">     * &lt;p class="detail"&gt;</span></div><div class="line"><span class="comment">     * 功能：设置单元格数据,样式  (根据坐标：B3)</span></div><div class="line"><span class="comment">     * &lt;/p&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@date</span> 2015年9月27日</span></div><div class="line"><span class="comment">     * <span class="doctag">@author</span> &lt;a href="mailto:1435290472@qq.com"&gt;zq&lt;/a&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> point</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> data</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> sheet</span></div><div class="line"><span class="comment">     * <span class="doctag">@return</span></span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">private</span> TempCell <span class="title">getCell</span><span class="params">(String point,Object data,Sheet sheet)</span></span>&#123;</div><div class="line">        TempCell tempCell = <span class="keyword">new</span> TempCell();</div><div class="line"> </div><div class="line">        <span class="comment">//得到列 字母 </span></div><div class="line">        String lineStr = <span class="string">""</span>;</div><div class="line">        String reg = <span class="string">"[A-Z]+"</span>;</div><div class="line">        Pattern p = Pattern.compile(reg);</div><div class="line">        Matcher m = p.matcher(point);       </div><div class="line">        <span class="keyword">while</span>(m.find())&#123;</div><div class="line">            lineStr = m.group();</div><div class="line">        &#125;</div><div class="line">        <span class="comment">//将列字母转成列号  根据ascii转换</span></div><div class="line">        <span class="keyword">char</span>[] ch = lineStr.toCharArray();</div><div class="line">        <span class="keyword">int</span> column = <span class="number">0</span>;</div><div class="line">        <span class="keyword">for</span>(<span class="keyword">int</span> i=<span class="number">0</span>;i&lt;ch.length;i++)&#123;</div><div class="line">            <span class="keyword">char</span> c = ch[i];</div><div class="line">            <span class="keyword">int</span> post = ch.length-i-<span class="number">1</span>;</div><div class="line">            <span class="keyword">int</span> r = (<span class="keyword">int</span>) Math.pow(<span class="number">10</span>, post);</div><div class="line">            column = column + r*((<span class="keyword">int</span>)c-<span class="number">65</span>);</div><div class="line">        &#125;</div><div class="line">        tempCell.setColumn(column);</div><div class="line">         </div><div class="line">        <span class="comment">//得到行号</span></div><div class="line">        reg = <span class="string">"[1-9]+"</span>;</div><div class="line">        p = Pattern.compile(reg);</div><div class="line">        m = p.matcher(point);       </div><div class="line">        <span class="keyword">while</span>(m.find())&#123;</div><div class="line">            tempCell.setRow((Integer.parseInt(m.group())-<span class="number">1</span>));</div><div class="line">        &#125;</div><div class="line">         </div><div class="line">        <span class="comment">//获取模板指定单元格样式，设置到tempCell （写列表数据的时候用）</span></div><div class="line">        Row rowIn = sheet.getRow(tempCell.getRow());</div><div class="line">        <span class="keyword">if</span>(rowIn == <span class="keyword">null</span>) &#123;</div><div class="line">            rowIn = sheet.createRow(tempCell.getRow());</div><div class="line">        &#125;</div><div class="line">        Cell cellIn = rowIn.getCell(tempCell.getColumn());</div><div class="line">        <span class="keyword">if</span>(cellIn == <span class="keyword">null</span>) &#123;</div><div class="line">            cellIn = rowIn.createCell(tempCell.getColumn());</div><div class="line">        &#125;</div><div class="line">        tempCell.setCellStyle(cellIn.getCellStyle());</div><div class="line">         </div><div class="line">        tempCell.setData(data);</div><div class="line">        <span class="keyword">return</span> tempCell;</div><div class="line">    &#125;</div><div class="line"> </div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * </span></div><div class="line"><span class="comment">     * &lt;p class="detail"&gt;</span></div><div class="line"><span class="comment">     * 功能：给指定坐标赋值</span></div><div class="line"><span class="comment">     * &lt;/p&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@date</span> 2015年9月27日</span></div><div class="line"><span class="comment">     * <span class="doctag">@author</span> &lt;a href="mailto:1435290472@qq.com"&gt;zq&lt;/a&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> tempCell</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> sheet</span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">private</span> <span class="keyword">void</span> <span class="title">setCell</span><span class="params">(TempCell tempCell,Sheet sheet)</span> </span>&#123;</div><div class="line">        <span class="keyword">if</span>(tempCell.getColumnSize()&gt;-<span class="number">1</span>)&#123;</div><div class="line">            CellRangeAddress rangeAddress = mergeRegion(sheet, tempCell.getRow(), tempCell.getRow(), tempCell.getColumn(), tempCell.getColumn()+tempCell.getColumnSize());</div><div class="line">            setRegionStyle(tempCell.getCellStyle(), rangeAddress, sheet);</div><div class="line">        &#125;</div><div class="line">         </div><div class="line">        Row rowIn = sheet.getRow(tempCell.getRow());</div><div class="line">        <span class="keyword">if</span>(rowIn == <span class="keyword">null</span>) &#123;</div><div class="line">            rowIn = sheet.createRow(tempCell.getRow());</div><div class="line">        &#125;</div><div class="line">        Cell cellIn = rowIn.getCell(tempCell.getColumn());</div><div class="line">        <span class="keyword">if</span>(cellIn == <span class="keyword">null</span>) &#123;</div><div class="line">            cellIn = rowIn.createCell(tempCell.getColumn());</div><div class="line">        &#125;</div><div class="line">        <span class="comment">//根据data类型给cell赋值</span></div><div class="line">        <span class="keyword">if</span>(tempCell.getData() <span class="keyword">instanceof</span> String)&#123;</div><div class="line">            cellIn.setCellValue((String)tempCell.getData());</div><div class="line">        &#125;<span class="keyword">else</span> <span class="keyword">if</span>(tempCell.getData() <span class="keyword">instanceof</span> Integer)&#123;</div><div class="line">            cellIn.setCellValue((Integer)tempCell.getData());</div><div class="line">        &#125;<span class="keyword">else</span> <span class="keyword">if</span>(tempCell.getData() <span class="keyword">instanceof</span> Double)&#123;</div><div class="line">            cellIn.setCellValue((Double)tempCell.getData());</div><div class="line">        &#125;<span class="keyword">else</span>&#123;</div><div class="line">            cellIn.setCellValue((String)tempCell.getData());</div><div class="line">        &#125;</div><div class="line">        <span class="comment">//样式</span></div><div class="line">        <span class="keyword">if</span>(tempCell.getCellStyle()!=<span class="keyword">null</span> &amp;&amp; tempCell.getColumnSize()==-<span class="number">1</span>)&#123;</div><div class="line">            cellIn.setCellStyle(tempCell.getCellStyle());</div><div class="line">        &#125;</div><div class="line">         </div><div class="line">         </div><div class="line">    &#125;</div><div class="line">     </div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * </span></div><div class="line"><span class="comment">     * &lt;p class="detail"&gt;</span></div><div class="line"><span class="comment">     * 功能：写到输出流并移除资源</span></div><div class="line"><span class="comment">     * &lt;/p&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@date</span> 2015年9月27日</span></div><div class="line"><span class="comment">     * <span class="doctag">@author</span> &lt;a href="mailto:1435290472@qq.com"&gt;zq&lt;/a&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> tempFilePath</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> os</span></div><div class="line"><span class="comment">     * <span class="doctag">@throws</span> FileNotFoundException</span></div><div class="line"><span class="comment">     * <span class="doctag">@throws</span> IOException</span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">writeAndClose</span><span class="params">(String tempFilePath,OutputStream os)</span> <span class="keyword">throws</span> FileNotFoundException, IOException</span>&#123;</div><div class="line">        <span class="keyword">if</span>(getTempWorkbook(tempFilePath)!=<span class="keyword">null</span>)&#123;</div><div class="line">            getTempWorkbook(tempFilePath).write(os);</div><div class="line">            tempWorkbook.remove(tempFilePath);</div><div class="line">        &#125;</div><div class="line">        <span class="keyword">if</span>(getFileInputStream(tempFilePath)!=<span class="keyword">null</span>)&#123;</div><div class="line">            getFileInputStream(tempFilePath).close();</div><div class="line">            tempStream.remove(tempFilePath);</div><div class="line">        &#125;</div><div class="line">    &#125;</div><div class="line">     </div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * </span></div><div class="line"><span class="comment">     * &lt;p class="detail"&gt;</span></div><div class="line"><span class="comment">     * 功能：判断指定的单元格是否是合并单元格</span></div><div class="line"><span class="comment">     * &lt;/p&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@date</span> 2015年9月27日</span></div><div class="line"><span class="comment">     * <span class="doctag">@author</span> &lt;a href="mailto:1435290472@qq.com"&gt;zq&lt;/a&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> sheet</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> row</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> column</span></div><div class="line"><span class="comment">     * <span class="doctag">@return</span>  0:不是合并单元格，i:合并单元格的位置</span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">private</span> Integer <span class="title">isMergedRegion</span><span class="params">(Sheet sheet,<span class="keyword">int</span> row ,<span class="keyword">int</span> column)</span> </span>&#123;  </div><div class="line">        <span class="keyword">int</span> sheetMergeCount = sheet.getNumMergedRegions();  </div><div class="line">        <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i &lt; sheetMergeCount; i++) &#123;  </div><div class="line">            CellRangeAddress range = sheet.getMergedRegion(i);  </div><div class="line">            <span class="keyword">int</span> firstColumn = range.getFirstColumn();  </div><div class="line">            <span class="keyword">int</span> lastColumn = range.getLastColumn();  </div><div class="line">            <span class="keyword">int</span> firstRow = range.getFirstRow();  </div><div class="line">            <span class="keyword">int</span> lastRow = range.getLastRow();  </div><div class="line">            <span class="keyword">if</span>(row &gt;= firstRow &amp;&amp; row &lt;= lastRow)&#123;  </div><div class="line">                <span class="keyword">if</span>(column &gt;= firstColumn &amp;&amp; column &lt;= lastColumn)&#123;  </div><div class="line">                    <span class="keyword">return</span> i;  </div><div class="line">                &#125;  </div><div class="line">            &#125;  </div><div class="line">        &#125;  </div><div class="line">        <span class="keyword">return</span> -<span class="number">1</span>;  </div><div class="line">    &#125;</div><div class="line">     </div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * </span></div><div class="line"><span class="comment">     * &lt;p class="detail"&gt;</span></div><div class="line"><span class="comment">     * 功能：合并单元格</span></div><div class="line"><span class="comment">     * &lt;/p&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@date</span> 2015年9月27日</span></div><div class="line"><span class="comment">     * <span class="doctag">@author</span> &lt;a href="mailto:1435290472@qq.com"&gt;zq&lt;/a&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> sheet</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> firstRow</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> lastRow</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> firstCol</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> lastCol</span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">private</span> CellRangeAddress <span class="title">mergeRegion</span><span class="params">(Sheet sheet, <span class="keyword">int</span> firstRow, <span class="keyword">int</span> lastRow, <span class="keyword">int</span> firstCol, <span class="keyword">int</span> lastCol)</span> </span>&#123;</div><div class="line">        CellRangeAddress rang = <span class="keyword">new</span> CellRangeAddress(firstRow, lastRow, firstCol, lastCol);</div><div class="line">        sheet.addMergedRegion(rang); </div><div class="line">        <span class="keyword">return</span> rang;</div><div class="line">    &#125;</div><div class="line">     </div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * </span></div><div class="line"><span class="comment">     * &lt;p class="detail"&gt;</span></div><div class="line"><span class="comment">     * 功能：设置合并单元格样式</span></div><div class="line"><span class="comment">     * &lt;/p&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@date</span> 2015年9月27日</span></div><div class="line"><span class="comment">     * <span class="doctag">@author</span> &lt;a href="mailto:1435290472@qq.com"&gt;zq&lt;/a&gt;</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> cs</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> region</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> sheet</span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">setRegionStyle</span><span class="params">(CellStyle cs, CellRangeAddress region, Sheet sheet)</span></span>&#123;  </div><div class="line">        <span class="keyword">for</span>(<span class="keyword">int</span> i=region.getFirstRow();i&lt;=region.getLastRow();i++)&#123;  </div><div class="line">            Row row=sheet.getRow(i);  </div><div class="line">            <span class="keyword">if</span>(row==<span class="keyword">null</span>) row=sheet.createRow(i);  </div><div class="line">            <span class="keyword">for</span>(<span class="keyword">int</span> j=region.getFirstColumn();j&lt;=region.getLastColumn();j++)&#123;  </div><div class="line">                Cell cell=row.getCell(j);  </div><div class="line">                <span class="keyword">if</span>(cell==<span class="keyword">null</span>)&#123;  </div><div class="line">                    cell=row.createCell(j);  </div><div class="line">                    cell.setCellValue(<span class="string">""</span>);  </div><div class="line">                &#125;  </div><div class="line">                cell.setCellStyle(cs);  </div><div class="line">            &#125;  </div><div class="line">        &#125;  </div><div class="line">    &#125; </div><div class="line"> </div><div class="line"> </div><div class="line"> </div><div class="line">     <span class="comment">//测试</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] args)</span> <span class="keyword">throws</span> FileNotFoundException, IOException </span>&#123;</div><div class="line"><span class="comment">//      String tempFilePath = ExcelUtil.class.getResource("demo.xlsx").getPath();</span></div><div class="line">        String tempFilePath = <span class="string">"D:/demo.xls"</span>;</div><div class="line">        File file = <span class="keyword">new</span> File(<span class="string">"d:/data.xls"</span>);</div><div class="line">        OutputStream os = <span class="keyword">new</span> FileOutputStream(file);</div><div class="line">         </div><div class="line">        PoiUtils excel = <span class="keyword">new</span> PoiUtils();</div><div class="line">        List&lt;Map&lt;Integer, Object&gt;&gt; datalist = <span class="keyword">new</span> ArrayList&lt;Map&lt;Integer,Object&gt;&gt;();</div><div class="line">        Map&lt;Integer, Object&gt; data = <span class="keyword">new</span> HashMap&lt;Integer,Object&gt;();</div><div class="line">        data.put(<span class="number">1</span>, <span class="string">"dfe"</span>);</div><div class="line">        data.put(<span class="number">2</span>, <span class="string">"男"</span>);</div><div class="line">        data.put(<span class="number">3</span>, <span class="number">45</span>);</div><div class="line">        datalist.add(data);</div><div class="line">        data = <span class="keyword">new</span> HashMap&lt;Integer,Object&gt;();</div><div class="line">        data.put(<span class="number">1</span>, <span class="string">"dfeddddd"</span>);</div><div class="line">        data.put(<span class="number">2</span>, <span class="string">"男"</span>);</div><div class="line">        data.put(<span class="number">3</span>, <span class="number">45</span>);</div><div class="line">        datalist.add(data);</div><div class="line">        String[] heads = <span class="keyword">new</span> String[]&#123;<span class="string">"A2"</span>,<span class="string">"C2"</span>,<span class="string">"E2"</span>&#125;;   <span class="comment">//必须为列表头部所有位置集合，   输出 数据单元格样式和头部单元格样式保持一致</span></div><div class="line">        excel.writeDateList(tempFilePath,heads,datalist,<span class="number">0</span>);</div><div class="line">        </div><div class="line">        <span class="comment">//写到输出流并移除资源</span></div><div class="line">        excel.writeAndClose(tempFilePath, os);</div><div class="line">          </div><div class="line">        os.flush();</div><div class="line">        os.close();</div><div class="line">    &#125;</div><div class="line">&#125;</div></pre></td></tr></table></figure>
<p><a href="https://github.com/wenni328/wenni328.github.io" target="_blank" rel="external">demo.xls下载</a></p>
<p><strong><em>这个工具类在service实现类中的用法（与上面提供的模板是一样的）*</em></strong><br><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div></pre></td><td class="code"><pre><div class="line"> <span class="meta">@Override</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">exportLogEle</span><span class="params">()</span> </span>&#123;</div><div class="line">        <span class="comment">// TODO Auto-generated method stub</span></div><div class="line">        File file1=<span class="keyword">new</span> File(<span class="string">""</span>);</div><div class="line">        String tempFilePath=file1.getAbsolutePath()+<span class="string">"\\config\\demo1.xls"</span>;</div><div class="line">        String exportfileName=DateUtils.getFileName();</div><div class="line">        File file = <span class="keyword">new</span> File(<span class="string">"d:/"</span>+exportfileName+<span class="string">".xls"</span>);</div><div class="line">        OutputStream os=<span class="keyword">null</span>;</div><div class="line">        <span class="keyword">try</span> &#123;</div><div class="line">             os = <span class="keyword">new</span> FileOutputStream(file);</div><div class="line">        &#125; <span class="keyword">catch</span> (FileNotFoundException e) &#123;</div><div class="line">            <span class="comment">// TODO Auto-generated catch block</span></div><div class="line">            e.printStackTrace();</div><div class="line">        &#125;</div><div class="line">         </div><div class="line">        PoiUtils excel = <span class="keyword">new</span> PoiUtils();</div><div class="line">        Syslog syslog=<span class="keyword">new</span> Syslog();</div><div class="line">        syslog.setLogType(<span class="string">"1"</span>);</div><div class="line">        List&lt;Syslog&gt; syslogs=syslogMapper.selectAll(syslog);</div><div class="line">         List&lt;Map&lt;Integer, Object&gt;&gt; datalist = <span class="keyword">new</span> ArrayList&lt;Map&lt;Integer,Object&gt;&gt;();</div><div class="line">            </div><div class="line">            <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i &lt; syslogs.size(); i++) &#123;</div><div class="line">            	Map&lt;Integer, Object&gt; data = <span class="keyword">new</span> HashMap&lt;Integer,Object&gt;();</div><div class="line">            	System.out.println(i);</div><div class="line">            	data.put(<span class="number">1</span>, i);</div><div class="line">            	data.put(<span class="number">2</span>, syslogs.get(i).getVisitor());</div><div class="line">            	data.put(<span class="number">3</span>, syslogs.get(i).getArchivesNum());</div><div class="line">            	data.put(<span class="number">4</span>, syslogs.get(i).getTitle());</div><div class="line">            	data.put(<span class="number">5</span>, DateUtils.formatDate(syslogs.get(i).getCreateTime().toString()));</div><div class="line">            	data.put(<span class="number">6</span>, syslogs.get(i).getIp());</div><div class="line">            	datalist.add(data);</div><div class="line">            &#125;</div><div class="line">            String[] heads = <span class="keyword">new</span> String[]&#123;<span class="string">"A2"</span>,<span class="string">"B2"</span>,<span class="string">"C2"</span>,<span class="string">"D2"</span>,<span class="string">"E2"</span>,<span class="string">"F2"</span>&#125;;   <span class="comment">//必须为列表头部所有位置集合，   输出 数据单元格样式和头部单元格样式保持一致</span></div><div class="line">            <span class="keyword">try</span> &#123;</div><div class="line">                excel.writeDateList(tempFilePath,heads,datalist,<span class="number">0</span>);</div><div class="line">                  <span class="comment">//写到输出流并移除资源</span></div><div class="line">                excel.writeAndClose(tempFilePath, os);</div><div class="line">                os.flush();</div><div class="line">                os.close();</div><div class="line">            &#125; <span class="keyword">catch</span> (FileNotFoundException e) &#123;</div><div class="line">                <span class="comment">// TODO Auto-generated catch block</span></div><div class="line">                e.printStackTrace();</div><div class="line">            &#125; <span class="keyword">catch</span> (IOException e) &#123;</div><div class="line">                <span class="comment">// TODO Auto-generated catch block</span></div><div class="line">                e.printStackTrace();</div><div class="line">            &#125;</div><div class="line">           </div><div class="line">    &#125;</div><div class="line">&#125;</div></pre></td></tr></table></figure></p>
<h3 id="cookie工具类"><a href="#cookie工具类" class="headerlink" title="cookie工具类"></a>cookie工具类</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div><div class="line">51</div><div class="line">52</div><div class="line">53</div><div class="line">54</div><div class="line">55</div><div class="line">56</div><div class="line">57</div><div class="line">58</div><div class="line">59</div><div class="line">60</div><div class="line">61</div><div class="line">62</div><div class="line">63</div><div class="line">64</div><div class="line">65</div><div class="line">66</div><div class="line">67</div><div class="line">68</div><div class="line">69</div><div class="line">70</div><div class="line">71</div><div class="line">72</div><div class="line">73</div><div class="line">74</div><div class="line">75</div><div class="line">76</div><div class="line">77</div><div class="line">78</div><div class="line">79</div><div class="line">80</div><div class="line">81</div><div class="line">82</div><div class="line">83</div><div class="line">84</div><div class="line">85</div><div class="line">86</div><div class="line">87</div><div class="line">88</div><div class="line">89</div><div class="line">90</div><div class="line">91</div><div class="line">92</div><div class="line">93</div><div class="line">94</div><div class="line">95</div><div class="line">96</div><div class="line">97</div><div class="line">98</div><div class="line">99</div><div class="line">100</div><div class="line">101</div><div class="line">102</div><div class="line">103</div><div class="line">104</div><div class="line">105</div><div class="line">106</div><div class="line">107</div><div class="line">108</div><div class="line">109</div><div class="line">110</div><div class="line">111</div><div class="line">112</div><div class="line">113</div><div class="line">114</div><div class="line">115</div><div class="line">116</div><div class="line">117</div><div class="line">118</div><div class="line">119</div><div class="line">120</div><div class="line">121</div><div class="line">122</div><div class="line">123</div><div class="line">124</div><div class="line">125</div><div class="line">126</div><div class="line">127</div><div class="line">128</div><div class="line">129</div><div class="line">130</div><div class="line">131</div><div class="line">132</div><div class="line">133</div><div class="line">134</div><div class="line">135</div><div class="line">136</div><div class="line">137</div><div class="line">138</div><div class="line">139</div><div class="line">140</div><div class="line">141</div><div class="line">142</div><div class="line">143</div><div class="line">144</div><div class="line">145</div><div class="line">146</div><div class="line">147</div><div class="line">148</div><div class="line">149</div><div class="line">150</div><div class="line">151</div><div class="line">152</div><div class="line">153</div><div class="line">154</div><div class="line">155</div><div class="line">156</div><div class="line">157</div><div class="line">158</div><div class="line">159</div><div class="line">160</div><div class="line">161</div><div class="line">162</div><div class="line">163</div><div class="line">164</div><div class="line">165</div><div class="line">166</div><div class="line">167</div><div class="line">168</div><div class="line">169</div><div class="line">170</div><div class="line">171</div><div class="line">172</div><div class="line">173</div><div class="line">174</div><div class="line">175</div><div class="line">176</div><div class="line">177</div><div class="line">178</div><div class="line">179</div><div class="line">180</div><div class="line">181</div><div class="line">182</div><div class="line">183</div><div class="line">184</div><div class="line">185</div><div class="line">186</div><div class="line">187</div><div class="line">188</div><div class="line">189</div><div class="line">190</div><div class="line">191</div><div class="line">192</div><div class="line">193</div><div class="line">194</div><div class="line">195</div><div class="line">196</div><div class="line">197</div><div class="line">198</div><div class="line">199</div><div class="line">200</div><div class="line">201</div><div class="line">202</div><div class="line">203</div><div class="line">204</div><div class="line">205</div><div class="line">206</div><div class="line">207</div><div class="line">208</div><div class="line">209</div><div class="line">210</div><div class="line">211</div><div class="line">212</div><div class="line">213</div><div class="line">214</div><div class="line">215</div><div class="line">216</div><div class="line">217</div><div class="line">218</div><div class="line">219</div><div class="line">220</div><div class="line">221</div><div class="line">222</div><div class="line">223</div><div class="line">224</div><div class="line">225</div><div class="line">226</div></pre></td><td class="code"><pre><div class="line"></div><div class="line"><span class="keyword">import</span> javax.servlet.http.Cookie;</div><div class="line"><span class="keyword">import</span> javax.servlet.http.HttpServletRequest;</div><div class="line"><span class="keyword">import</span> javax.servlet.http.HttpServletResponse;</div><div class="line"><span class="keyword">import</span> java.io.UnsupportedEncodingException;</div><div class="line"><span class="keyword">import</span> java.net.URLDecoder;</div><div class="line"><span class="keyword">import</span> java.net.URLEncoder;</div><div class="line"></div><div class="line"></div><div class="line"><span class="comment">/**</span></div><div class="line"><span class="comment"> * </span></div><div class="line"><span class="comment"> * Cookie 工具类</span></div><div class="line"><span class="comment"> *</span></div><div class="line"><span class="comment"> */</span></div><div class="line"><span class="keyword">public</span> <span class="keyword">final</span> <span class="class"><span class="keyword">class</span> <span class="title">CookieUtils</span> </span>&#123;</div><div class="line"></div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * 得到Cookie的值, 不编码</span></div><div class="line"><span class="comment">     * </span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> request</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> cookieName</span></div><div class="line"><span class="comment">     * <span class="doctag">@return</span></span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> String <span class="title">getCookieValue</span><span class="params">(HttpServletRequest request, String cookieName)</span> </span>&#123;</div><div class="line">        <span class="keyword">return</span> getCookieValue(request, cookieName, <span class="keyword">false</span>);</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * 得到Cookie的值,</span></div><div class="line"><span class="comment">     * </span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> request</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> cookieName</span></div><div class="line"><span class="comment">     * <span class="doctag">@return</span></span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> String <span class="title">getCookieValue</span><span class="params">(HttpServletRequest request, String cookieName, <span class="keyword">boolean</span> isDecoder)</span> </span>&#123;</div><div class="line">        Cookie[] cookieList = request.getCookies();</div><div class="line">        <span class="keyword">if</span> (cookieList == <span class="keyword">null</span> || cookieName == <span class="keyword">null</span>) &#123;</div><div class="line">            <span class="keyword">return</span> <span class="keyword">null</span>;</div><div class="line">        &#125;</div><div class="line">        String retValue = <span class="keyword">null</span>;</div><div class="line">        <span class="keyword">try</span> &#123;</div><div class="line">            <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i &lt; cookieList.length; i++) &#123;</div><div class="line">                <span class="keyword">if</span> (cookieList[i].getName().equals(cookieName)) &#123;</div><div class="line">                    <span class="keyword">if</span> (isDecoder) &#123;</div><div class="line">                        retValue = URLDecoder.decode(cookieList[i].getValue(), <span class="string">"UTF-8"</span>);</div><div class="line">                    &#125; <span class="keyword">else</span> &#123;</div><div class="line">                        retValue = cookieList[i].getValue();</div><div class="line">                    &#125;</div><div class="line">                    <span class="keyword">break</span>;</div><div class="line">                &#125;</div><div class="line">            &#125;</div><div class="line">        &#125; <span class="keyword">catch</span> (UnsupportedEncodingException e) &#123;</div><div class="line">            e.printStackTrace();</div><div class="line">        &#125;</div><div class="line">        <span class="keyword">return</span> retValue;</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * 得到Cookie的值,</span></div><div class="line"><span class="comment">     * </span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> request</span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> cookieName</span></div><div class="line"><span class="comment">     * <span class="doctag">@return</span></span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> String <span class="title">getCookieValue</span><span class="params">(HttpServletRequest request, String cookieName, String encodeString)</span> </span>&#123;</div><div class="line">        Cookie[] cookieList = request.getCookies();</div><div class="line">        <span class="keyword">if</span> (cookieList == <span class="keyword">null</span> || cookieName == <span class="keyword">null</span>) &#123;</div><div class="line">            <span class="keyword">return</span> <span class="keyword">null</span>;</div><div class="line">        &#125;</div><div class="line">        String retValue = <span class="keyword">null</span>;</div><div class="line">        <span class="keyword">try</span> &#123;</div><div class="line">            <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i &lt; cookieList.length; i++) &#123;</div><div class="line">                <span class="keyword">if</span> (cookieList[i].getName().equals(cookieName)) &#123;</div><div class="line">                    retValue = URLDecoder.decode(cookieList[i].getValue(), encodeString);</div><div class="line">                    <span class="keyword">break</span>;</div><div class="line">                &#125;</div><div class="line">            &#125;</div><div class="line">        &#125; <span class="keyword">catch</span> (UnsupportedEncodingException e) &#123;</div><div class="line">        	 e.printStackTrace();</div><div class="line">        &#125;</div><div class="line">        <span class="keyword">return</span> retValue;</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * 设置Cookie的值 不设置生效时间默认浏览器关闭即失效,也不编码</span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">setCookie</span><span class="params">(HttpServletRequest request, HttpServletResponse response, String cookieName,</span></span></div><div class="line"><span class="function"><span class="params">            String cookieValue)</span> </span>&#123;</div><div class="line">        setCookie(request, response, cookieName, cookieValue, -<span class="number">1</span>);</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * 设置Cookie的值 在指定时间内生效,但不编码</span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">setCookie</span><span class="params">(HttpServletRequest request, HttpServletResponse response, String cookieName,</span></span></div><div class="line"><span class="function"><span class="params">            String cookieValue, <span class="keyword">int</span> cookieMaxage)</span> </span>&#123;</div><div class="line">        setCookie(request, response, cookieName, cookieValue, cookieMaxage, <span class="keyword">false</span>);</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * 设置Cookie的值 不设置生效时间,但编码</span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">setCookie</span><span class="params">(HttpServletRequest request, HttpServletResponse response, String cookieName,</span></span></div><div class="line"><span class="function"><span class="params">            String cookieValue, <span class="keyword">boolean</span> isEncode)</span> </span>&#123;</div><div class="line">        setCookie(request, response, cookieName, cookieValue, -<span class="number">1</span>, isEncode);</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * 设置Cookie的值 在指定时间内生效, 编码参数</span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">setCookie</span><span class="params">(HttpServletRequest request, HttpServletResponse response, String cookieName,</span></span></div><div class="line"><span class="function"><span class="params">            String cookieValue, <span class="keyword">int</span> cookieMaxage, <span class="keyword">boolean</span> isEncode)</span> </span>&#123;</div><div class="line">        doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, isEncode);</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * 设置Cookie的值 在指定时间内生效, 编码参数(指定编码)</span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">setCookie</span><span class="params">(HttpServletRequest request, HttpServletResponse response, String cookieName,</span></span></div><div class="line"><span class="function"><span class="params">            String cookieValue, <span class="keyword">int</span> cookieMaxage, String encodeString)</span> </span>&#123;</div><div class="line">        doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, encodeString);</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * 删除Cookie带cookie域名</span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">deleteCookie</span><span class="params">(HttpServletRequest request, HttpServletResponse response,</span></span></div><div class="line"><span class="function"><span class="params">            String cookieName)</span> </span>&#123;</div><div class="line">        doSetCookie(request, response, cookieName, <span class="string">""</span>, -<span class="number">1</span>, <span class="keyword">false</span>);</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * 设置Cookie的值，并使其在指定时间内生效</span></div><div class="line"><span class="comment">     * </span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> cookieMaxage cookie生效的最大秒数</span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">void</span> <span class="title">doSetCookie</span><span class="params">(HttpServletRequest request, HttpServletResponse response,</span></span></div><div class="line"><span class="function"><span class="params">            String cookieName, String cookieValue, <span class="keyword">int</span> cookieMaxage, <span class="keyword">boolean</span> isEncode)</span> </span>&#123;</div><div class="line">        <span class="keyword">try</span> &#123;</div><div class="line">            <span class="keyword">if</span> (cookieValue == <span class="keyword">null</span>) &#123;</div><div class="line">                cookieValue = <span class="string">""</span>;</div><div class="line">            &#125; <span class="keyword">else</span> <span class="keyword">if</span> (isEncode) &#123;</div><div class="line">                cookieValue = URLEncoder.encode(cookieValue, <span class="string">"utf-8"</span>);</div><div class="line">            &#125;</div><div class="line">            Cookie cookie = <span class="keyword">new</span> Cookie(cookieName, cookieValue);</div><div class="line">            <span class="keyword">if</span> (cookieMaxage &gt; <span class="number">0</span>)</div><div class="line">                cookie.setMaxAge(cookieMaxage);</div><div class="line">            <span class="keyword">if</span> (<span class="keyword">null</span> != request) &#123;<span class="comment">// 设置域名的cookie</span></div><div class="line">            	String domainName = getDomainName(request);</div><div class="line">            	System.out.println(domainName);</div><div class="line">                <span class="keyword">if</span> (!<span class="string">"localhost"</span>.equals(domainName)) &#123;</div><div class="line">                	cookie.setDomain(domainName);</div><div class="line">                &#125;</div><div class="line">            &#125;</div><div class="line">            cookie.setPath(<span class="string">"/"</span>);</div><div class="line">            response.addCookie(cookie);</div><div class="line">        &#125; <span class="keyword">catch</span> (Exception e) &#123;</div><div class="line">        	 e.printStackTrace();</div><div class="line">        &#125;</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * 设置Cookie的值，并使其在指定时间内生效</span></div><div class="line"><span class="comment">     * </span></div><div class="line"><span class="comment">     * <span class="doctag">@param</span> cookieMaxage cookie生效的最大秒数</span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">void</span> <span class="title">doSetCookie</span><span class="params">(HttpServletRequest request, HttpServletResponse response,</span></span></div><div class="line"><span class="function"><span class="params">            String cookieName, String cookieValue, <span class="keyword">int</span> cookieMaxage, String encodeString)</span> </span>&#123;</div><div class="line">        <span class="keyword">try</span> &#123;</div><div class="line">            <span class="keyword">if</span> (cookieValue == <span class="keyword">null</span>) &#123;</div><div class="line">                cookieValue = <span class="string">""</span>;</div><div class="line">            &#125; <span class="keyword">else</span> &#123;</div><div class="line">                cookieValue = URLEncoder.encode(cookieValue, encodeString);</div><div class="line">            &#125;</div><div class="line">            Cookie cookie = <span class="keyword">new</span> Cookie(cookieName, cookieValue);</div><div class="line">            <span class="keyword">if</span> (cookieMaxage &gt; <span class="number">0</span>)</div><div class="line">                cookie.setMaxAge(cookieMaxage);</div><div class="line">            <span class="keyword">if</span> (<span class="keyword">null</span> != request) &#123;<span class="comment">// 设置域名的cookie</span></div><div class="line">            	String domainName = getDomainName(request);</div><div class="line">            	System.out.println(domainName);</div><div class="line">                <span class="keyword">if</span> (!<span class="string">"localhost"</span>.equals(domainName)) &#123;</div><div class="line">                	cookie.setDomain(domainName);</div><div class="line">                &#125;</div><div class="line">            &#125;</div><div class="line">            cookie.setPath(<span class="string">"/"</span>);</div><div class="line">            response.addCookie(cookie);</div><div class="line">        &#125; <span class="keyword">catch</span> (Exception e) &#123;</div><div class="line">        	 e.printStackTrace();</div><div class="line">        &#125;</div><div class="line">    &#125;</div><div class="line"></div><div class="line">    <span class="comment">/**</span></div><div class="line"><span class="comment">     * 得到cookie的域名</span></div><div class="line"><span class="comment">     */</span></div><div class="line">    <span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> String <span class="title">getDomainName</span><span class="params">(HttpServletRequest request)</span> </span>&#123;</div><div class="line">        String domainName = <span class="keyword">null</span>;</div><div class="line"></div><div class="line">        String serverName = request.getRequestURL().toString();</div><div class="line">        <span class="keyword">if</span> (serverName == <span class="keyword">null</span> || serverName.equals(<span class="string">""</span>)) &#123;</div><div class="line">            domainName = <span class="string">""</span>;</div><div class="line">        &#125; <span class="keyword">else</span> &#123;</div><div class="line">            serverName = serverName.toLowerCase();</div><div class="line">            serverName = serverName.substring(<span class="number">7</span>);</div><div class="line">            <span class="keyword">final</span> <span class="keyword">int</span> end = serverName.indexOf(<span class="string">"/"</span>);</div><div class="line">            serverName = serverName.substring(<span class="number">0</span>, end);</div><div class="line">            <span class="keyword">final</span> String[] domains = serverName.split(<span class="string">"\\."</span>);</div><div class="line">            <span class="keyword">int</span> len = domains.length;</div><div class="line">            <span class="keyword">if</span> (len &gt; <span class="number">3</span>) &#123;</div><div class="line">                <span class="comment">// www.xxx.com.cn</span></div><div class="line">                domainName = <span class="string">"."</span> + domains[len - <span class="number">3</span>] + <span class="string">"."</span> + domains[len - <span class="number">2</span>] + <span class="string">"."</span> + domains[len - <span class="number">1</span>];</div><div class="line">            &#125; <span class="keyword">else</span> <span class="keyword">if</span> (len &lt;= <span class="number">3</span> &amp;&amp; len &gt; <span class="number">1</span>) &#123;</div><div class="line">                <span class="comment">// xxx.com or xxx.cn</span></div><div class="line">                domainName = <span class="string">"."</span> + domains[len - <span class="number">2</span>] + <span class="string">"."</span> + domains[len - <span class="number">1</span>];</div><div class="line">            &#125; <span class="keyword">else</span> &#123;</div><div class="line">                domainName = serverName;</div><div class="line">            &#125;</div><div class="line">        &#125;</div><div class="line"></div><div class="line">        <span class="keyword">if</span> (domainName != <span class="keyword">null</span> &amp;&amp; domainName.indexOf(<span class="string">":"</span>) &gt; <span class="number">0</span>) &#123;</div><div class="line">            String[] ary = domainName.split(<span class="string">"\\:"</span>);</div><div class="line">            domainName = ary[<span class="number">0</span>];</div><div class="line">        &#125;</div><div class="line">        <span class="keyword">return</span> domainName;</div><div class="line">    &#125;</div><div class="line"></div><div class="line">&#125;</div></pre></td></tr></table></figure>
]]></content>
    
    <summary type="html">
    
      &lt;h3 id=&quot;Json工具类&quot;&gt;&lt;a href=&quot;#Json工具类&quot; class=&quot;headerlink&quot; title=&quot;Json工具类&quot;&gt;&lt;/a&gt;Json工具类&lt;/h3&gt;&lt;figure class=&quot;highlight bash&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;div class=&quot;line&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;5&lt;/div&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;div class=&quot;line&quot;&gt;&amp;lt;dependency&amp;gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;  &amp;lt;groupId&amp;gt;com.fasterxml.jackson.core&amp;lt;/groupId&amp;gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;  &amp;lt;artifactId&amp;gt;jackson-databind&amp;lt;/artifactId&amp;gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;  &amp;lt;version&amp;gt;2.4.2&amp;lt;/version&amp;gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/div&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
    
    </summary>
    
    
      <category term="工具类" scheme="http://wenni328.github.io.com/tags/%E5%B7%A5%E5%85%B7%E7%B1%BB/"/>
    
  </entry>
  
  <entry>
    <title>redis缓存学习</title>
    <link href="http://wenni328.github.io.com/2017/08/17/redis%E5%AD%A6%E4%B9%A0/"/>
    <id>http://wenni328.github.io.com/2017/08/17/redis学习/</id>
    <published>2017-08-17T01:05:53.000Z</published>
    <updated>2017-08-17T02:56:59.161Z</updated>
    
    <content type="html"><![CDATA[<h3 id="redis简介"><a href="#redis简介" class="headerlink" title="redis简介"></a>redis简介</h3><p>Redis 是一个开源（BSD许可）的，内存中的数据结构存储系统，它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构，如 字符串（strings）， 散列（hashes）， 列表（lists）， 集合（sets）， 有序集合（sorted sets） 与范围查询， bitmaps， hyperloglogs 和 地理空间（geospatial） 索引半径查询。 Redis 内置了 复制（replication），LUA脚本（Lua scripting）， LRU驱动事件（LRU eviction），事务（transactions） 和不同级别的 磁盘持久化（persistence）， 并通过 Redis哨兵（Sentinel）和自动 分区（Cluster）提供高可用性（high availability）。<br><strong>更多知识请关注</strong><a href="http://www.redis.cn" target="_blank" rel="external">redis中文官网</a></p>
<h3 id="redis安装（linux）"><a href="#redis安装（linux）" class="headerlink" title="redis安装（linux）"></a>redis安装（linux）</h3><p>打开linux终端，使用命令<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz</div><div class="line">$ tar xzf redis-2.8.17.tar.gz</div><div class="line">$ <span class="built_in">cd</span> redis-2.8.17</div><div class="line">$ make</div></pre></td></tr></table></figure></p>
<a id="more"></a>
<p>启动服务端</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">$ <span class="built_in">cd</span> src</div><div class="line">$ ./redis-server</div></pre></td></tr></table></figure>
<p>启动客户端<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">$ <span class="built_in">cd</span> src</div><div class="line">$ ./redis-cli</div></pre></td></tr></table></figure></p>
]]></content>
    
    <summary type="html">
    
      &lt;h3 id=&quot;redis简介&quot;&gt;&lt;a href=&quot;#redis简介&quot; class=&quot;headerlink&quot; title=&quot;redis简介&quot;&gt;&lt;/a&gt;redis简介&lt;/h3&gt;&lt;p&gt;Redis 是一个开源（BSD许可）的，内存中的数据结构存储系统，它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构，如 字符串（strings）， 散列（hashes）， 列表（lists）， 集合（sets）， 有序集合（sorted sets） 与范围查询， bitmaps， hyperloglogs 和 地理空间（geospatial） 索引半径查询。 Redis 内置了 复制（replication），LUA脚本（Lua scripting）， LRU驱动事件（LRU eviction），事务（transactions） 和不同级别的 磁盘持久化（persistence）， 并通过 Redis哨兵（Sentinel）和自动 分区（Cluster）提供高可用性（high availability）。&lt;br&gt;&lt;strong&gt;更多知识请关注&lt;/strong&gt;&lt;a href=&quot;http://www.redis.cn&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;redis中文官网&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;redis安装（linux）&quot;&gt;&lt;a href=&quot;#redis安装（linux）&quot; class=&quot;headerlink&quot; title=&quot;redis安装（linux）&quot;&gt;&lt;/a&gt;redis安装（linux）&lt;/h3&gt;&lt;p&gt;打开linux终端，使用命令&lt;br&gt;&lt;figure class=&quot;highlight bash&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;div class=&quot;line&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;4&lt;/div&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;div class=&quot;line&quot;&gt;$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;$ tar xzf redis-2.8.17.tar.gz&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;$ &lt;span class=&quot;built_in&quot;&gt;cd&lt;/span&gt; redis-2.8.17&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;$ make&lt;/div&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;&lt;/p&gt;
    
    </summary>
    
    
      <category term="redis" scheme="http://wenni328.github.io.com/tags/redis/"/>
    
  </entry>
  
  <entry>
    <title>java知识图谱</title>
    <link href="http://wenni328.github.io.com/2017/08/16/java%E7%9F%A5%E8%AF%86%E5%9B%BE%E8%B0%B1/"/>
    <id>http://wenni328.github.io.com/2017/08/16/java知识图谱/</id>
    <published>2017-08-16T02:22:50.000Z</published>
    <updated>2017-08-16T02:31:19.684Z</updated>
    
    <content type="html"><![CDATA[<h3 id="java知识图谱"><a href="#java知识图谱" class="headerlink" title="java知识图谱"></a>java知识图谱</h3><p><a href="http://oufb2rqt9.bkt.clouddn.com/java%E7%9F%A5%E8%AF%86%E7%BB%93%E6%9E%84%E5%9B%BE.jpg" target="_blank" rel="external">java知识图谱(借用csdn大佬的图谱)</a></p>
]]></content>
    
    <summary type="html">
    
      &lt;h3 id=&quot;java知识图谱&quot;&gt;&lt;a href=&quot;#java知识图谱&quot; class=&quot;headerlink&quot; title=&quot;java知识图谱&quot;&gt;&lt;/a&gt;java知识图谱&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://oufb2rqt9.bkt.clouddn.com/java
    
    </summary>
    
    
      <category term="知识概览" scheme="http://wenni328.github.io.com/tags/%E7%9F%A5%E8%AF%86%E6%A6%82%E8%A7%88/"/>
    
  </entry>
  
  <entry>
    <title>思创记录</title>
    <link href="http://wenni328.github.io.com/2017/08/14/%E6%80%9D%E5%88%9B%E8%AE%B0%E5%BD%95/"/>
    <id>http://wenni328.github.io.com/2017/08/14/思创记录/</id>
    <published>2017-08-14T08:02:14.000Z</published>
    <updated>2017-08-17T02:54:53.125Z</updated>
    
    <content type="html"><![CDATA[<h3 id="获取当前用户"><a href="#获取当前用户" class="headerlink" title="获取当前用户"></a>获取当前用户</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">*service*</div><div class="line"><span class="meta">@Autowired</span></div><div class="line"><span class="keyword">protected</span> IUserService userService;<span class="comment">// 统一用户服务</span></div><div class="line">String userId=userService.getCurrentUser().getUserId();</div></pre></td></tr></table></figure>
<h3 id="列表显示数据"><a href="#列表显示数据" class="headerlink" title="列表显示数据"></a>列表显示数据</h3><h4 id="连表查询但获取的是一个表的数据"><a href="#连表查询但获取的是一个表的数据" class="headerlink" title="连表查询但获取的是一个表的数据"></a>连表查询但获取的是一个表的数据</h4><a id="more"></a>
<figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div></pre></td><td class="code"><pre><div class="line">  <span class="comment">/**</span></div><div class="line"><span class="comment"> * 获取当前用户参加的议题</span></div><div class="line"><span class="comment"> * <span class="doctag">@param</span> page</span></div><div class="line"><span class="comment"> * <span class="doctag">@param</span> model</span></div><div class="line"><span class="comment"> * <span class="doctag">@return</span></span></div><div class="line"><span class="comment"> * <span class="doctag">@throws</span> SystemException</span></div><div class="line"><span class="comment"> * <span class="doctag">@throws</span> ServiceException</span></div><div class="line"><span class="comment"> */</span></div><div class="line"></div><div class="line"><span class="function"><span class="keyword">public</span> Page&lt;TGxMeetingAgenda&gt; <span class="title">getCurrentUserJoin</span><span class="params">(Page page, String meetingId)</span> <span class="keyword">throws</span> SystemException,ServiceException</span>&#123;</div><div class="line">	</div><div class="line">	List params = <span class="keyword">new</span> ArrayList();</div><div class="line">	StringBuffer hql=<span class="keyword">new</span> StringBuffer(<span class="string">"select ad from TGxMeetingMru mru,TGxMeetingAgenda ad"</span>);</div><div class="line">	hql.append(<span class="string">" where mru.mruMid=ad.meetingId"</span>);</div><div class="line">	hql.append(<span class="string">" and mru.mruAid=ad.id"</span>);</div><div class="line">	<span class="keyword">if</span>(StringUtils.isNotBlank(meetingId))&#123;</div><div class="line">		hql.append(<span class="string">" and ad.meetingId=?"</span>);</div><div class="line">		params.add(meetingId);</div><div class="line">	&#125;</div><div class="line">	hql.append(<span class="string">" and mru.mruUserid=?"</span>);</div><div class="line">	params.add(userService.getCurrentUser().getUserId());</div><div class="line">	page=meetingAdDAO.find(page, hql.toString(), params.toArray());</div><div class="line">	<span class="keyword">return</span> page;</div><div class="line">&#125;</div></pre></td></tr></table></figure>
<h4 id="单表查询数据-带条件"><a href="#单表查询数据-带条件" class="headerlink" title="单表查询数据(带条件)"></a>单表查询数据(带条件)</h4><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div></pre></td><td class="code"><pre><div class="line"><span class="comment">/**</span></div><div class="line"><span class="comment"> * author:</span></div><div class="line"><span class="comment"> * description:	获取所有没有删除的会议室 page对象</span></div><div class="line"><span class="comment"> * modifyer:</span></div><div class="line"><span class="comment"> * description:</span></div><div class="line"><span class="comment"> * <span class="doctag">@param</span> page  分页对象</span></div><div class="line"><span class="comment"> * <span class="doctag">@param</span> model	搜索条件</span></div><div class="line"><span class="comment"> * <span class="doctag">@return</span></span></div><div class="line"><span class="comment"> * <span class="doctag">@throws</span> SystemException</span></div><div class="line"><span class="comment"> * <span class="doctag">@throws</span> ServiceException</span></div><div class="line"><span class="comment"> */</span></div><div class="line"><span class="function"><span class="keyword">public</span> Page&lt;TGxMeetingAgenda&gt; <span class="title">getAllPage</span><span class="params">(Page page, TGxMeetingAgenda model)</span> <span class="keyword">throws</span> SystemException,ServiceException</span>&#123;</div><div class="line">	<span class="keyword">try</span>&#123;</div><div class="line">		StringBuilder hql = <span class="keyword">new</span> StringBuilder();</div><div class="line">		List palist=<span class="keyword">new</span> ArrayList();</div><div class="line">		hql.append(<span class="string">"select t from TGxMeetingAgenda t where 1=1"</span>);</div><div class="line">		</div><div class="line">		<span class="keyword">if</span>(<span class="keyword">null</span>!=model.getMeetingId())&#123;<span class="comment">//会议id</span></div><div class="line">			String meetingId = model.getMeetingId();</div><div class="line">			<span class="keyword">if</span>(!<span class="string">""</span>.equals(meetingId)&amp;&amp;<span class="keyword">null</span>!=meetingId)&#123;</div><div class="line">				hql.append(<span class="string">" and t.meetingId = ?"</span>);</div><div class="line">				palist.add(FiltrateContent.getNewContent(meetingId));</div><div class="line">			&#125;</div><div class="line">		&#125;</div><div class="line">		</div><div class="line">		<span class="keyword">if</span>(<span class="keyword">null</span>!=model.getTitle())&#123;<span class="comment">//议题</span></div><div class="line">			String mTile = model.getTitle();</div><div class="line">			<span class="keyword">if</span>(!<span class="string">""</span>.equals(mTile)&amp;&amp;<span class="keyword">null</span>!=mTile)&#123;</div><div class="line">				hql.append(<span class="string">" and t.title like ?"</span>);</div><div class="line">				palist.add(<span class="string">"%"</span>+FiltrateContent.getNewContent(mTile.trim())+<span class="string">"%"</span>);</div><div class="line">			&#125;</div><div class="line">		&#125;</div><div class="line">		</div><div class="line">		<span class="keyword">if</span>(<span class="keyword">null</span>!=model.getUserName())&#123;<span class="comment">//参与人员</span></div><div class="line">			String userName = model.getUserName();</div><div class="line">			<span class="keyword">if</span>(!<span class="string">""</span>.equals(userName)&amp;&amp;<span class="keyword">null</span>!=userName)&#123;</div><div class="line">				hql.append(<span class="string">" and t.userName like ?"</span>);</div><div class="line">				palist.add(<span class="string">"%"</span>+FiltrateContent.getNewContent(userName.trim())+<span class="string">"%"</span>);</div><div class="line">			&#125;</div><div class="line">		&#125;</div><div class="line"></div><div class="line">		hql.append(<span class="string">"  order by t.sort asc"</span>);<span class="comment">//创建时间排序</span></div><div class="line">		<span class="keyword">return</span>  meetingDAO.find(page, hql.toString(), palist.toArray());</div><div class="line">	&#125;<span class="keyword">catch</span>(ServiceException e)&#123;</div><div class="line">		<span class="keyword">throw</span> <span class="keyword">new</span> ServiceException(MessagesConst.find_error,               </div><div class="line">				<span class="keyword">new</span> Object[] &#123;<span class="string">"会议议题列表"</span>&#125;);</div><div class="line">	&#125;</div><div class="line">&#125;</div></pre></td></tr></table></figure>
<h4 id="连表查询数据-结果集为多表字段"><a href="#连表查询数据-结果集为多表字段" class="headerlink" title="连表查询数据(结果集为多表字段)"></a>连表查询数据(结果集为多表字段)</h4><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div></pre></td><td class="code"><pre><div class="line"><span class="comment">/**</span></div><div class="line"><span class="comment">	 * 分页浏览参会人员</span></div><div class="line"><span class="comment">	 * <span class="doctag">@param</span> page</span></div><div class="line"><span class="comment">	 * <span class="doctag">@param</span> username 搜索</span></div><div class="line"><span class="comment">	 * <span class="doctag">@param</span> model</span></div><div class="line"><span class="comment">	 * <span class="doctag">@param</span> logInfos</span></div><div class="line"><span class="comment">	 * <span class="doctag">@return</span></span></div><div class="line"><span class="comment">	 * <span class="doctag">@throws</span> SystemException</span></div><div class="line"><span class="comment">	 * <span class="doctag">@throws</span> ServiceException</span></div><div class="line"><span class="comment">	 */</span></div><div class="line">	<span class="function"><span class="keyword">public</span> Page  <span class="title">getTGxMeetingUserPage</span><span class="params">(Page page,TGxMeetingUser model)</span><span class="keyword">throws</span> SystemException,ServiceException</span>&#123;</div><div class="line">		<span class="keyword">try</span> &#123;</div><div class="line">			List palist=<span class="keyword">new</span> ArrayList();</div><div class="line">			StringBuffer hql = <span class="keyword">new</span> StringBuffer();</div><div class="line">			hql.append(<span class="string">"SELECT tu.id,tu.userId,us.userName as userName,tbo.orgName as userOrgName"</span>);</div><div class="line">			hql.append(<span class="string">" FROM TUumsBaseUser us, "</span>);</div><div class="line">			hql.append(<span class="string">" TGxMeetingUser tu,"</span>);</div><div class="line">			hql.append(<span class="string">" TUumsBaseOrg tbo"</span>);</div><div class="line">			hql.append(<span class="string">" WHERE us.userId = tu.userId "</span>);</div><div class="line">			hql.append( <span class="string">"AND us.orgId = tbo.orgId"</span>);</div><div class="line">			</div><div class="line">			<span class="keyword">if</span>(<span class="keyword">null</span>!=model.getUserName() &amp;&amp; !<span class="string">""</span>.equals(model.getUserName()))&#123;</div><div class="line">				hql.append(<span class="string">" and us.userName like ? "</span>);</div><div class="line">				palist.add(<span class="string">"%"</span>+model.getUserName()+<span class="string">"%"</span>);</div><div class="line">			&#125;</div><div class="line">			hql.append( <span class="string">" order by tu.id asc"</span>);</div><div class="line">			page=tGxMeetingUserDAO.find(page, hql.toString(),palist.toArray());</div><div class="line">			<span class="keyword">if</span>(<span class="keyword">null</span>!=page.getResult())&#123;</div><div class="line">				List&lt;TGxMeetingUser&gt; tmuList=<span class="keyword">new</span> ArrayList&lt;TGxMeetingUser&gt;();</div><div class="line">				TGxMeetingUser tmu=<span class="keyword">null</span>;</div><div class="line">				List&lt;Object&gt; objs=page.getResult();</div><div class="line">				<span class="keyword">for</span>(Object obj:objs)&#123;</div><div class="line">					tmu =<span class="keyword">new</span> TGxMeetingUser();</div><div class="line">					Object[] a = (Object[]) obj; </div><div class="line">					tmu.setId(a[<span class="number">0</span>].toString());</div><div class="line">					tmu.setUserId(a[<span class="number">1</span>].toString());</div><div class="line">					tmu.setUserName(a[<span class="number">2</span>].toString());</div><div class="line">					tmu.setUserOrgName(a[<span class="number">3</span>].toString());</div><div class="line">					tmuList.add(tmu);</div><div class="line">				&#125;</div><div class="line">				page.setResult(tmuList);</div><div class="line">			&#125;</div><div class="line">			</div><div class="line">			<span class="keyword">return</span> page;</div><div class="line">		&#125; <span class="keyword">catch</span> (Exception e) &#123;</div><div class="line">			<span class="keyword">throw</span> <span class="keyword">new</span> ServiceException(MessagesConst.find_error,</div><div class="line">					<span class="keyword">new</span> Object[] &#123; <span class="string">"分页搜索参会用户"</span> &#125;);</div><div class="line">		&#125;</div><div class="line">	&#125;</div></pre></td></tr></table></figure>
<figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">其中结果返回对象里面加入了其他与当前对象无关字段</div><div class="line">#加入注解@Transient不将字段加入数据库#</div><div class="line"><span class="keyword">private</span> String userName;<span class="comment">//用户名字</span></div><div class="line"><span class="keyword">private</span> String userOrgName;<span class="comment">//用户部门</span></div></pre></td></tr></table></figure>
<h3 id="添加"><a href="#添加" class="headerlink" title="添加"></a>添加</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line"><span class="comment">/**</span></div><div class="line"><span class="comment">	 * 添加</span></div><div class="line"><span class="comment">	 * <span class="doctag">@param</span> model</span></div><div class="line"><span class="comment">	 */</span></div><div class="line">	<span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">save</span><span class="params">(TGxMeetingUser model)</span> </span>&#123;</div><div class="line">		tGxMeetingUserDAO.save(model);</div><div class="line">	&#125;</div></pre></td></tr></table></figure>
<h3 id="编辑"><a href="#编辑" class="headerlink" title="编辑"></a>编辑</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line"><span class="comment">/**</span></div><div class="line"><span class="comment">		 * 编辑实体</span></div><div class="line"><span class="comment">		 * <span class="doctag">@param</span> model</span></div><div class="line"><span class="comment">		 */</span></div><div class="line">		<span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">update</span><span class="params">(TGxMeetingUser model)</span></span>&#123;</div><div class="line">			<span class="keyword">this</span>.tGxMeetingUserDAO.update(model);</div><div class="line">		&#125;</div></pre></td></tr></table></figure>
<h3 id="删除"><a href="#删除" class="headerlink" title="删除"></a>删除</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div></pre></td><td class="code"><pre><div class="line"><span class="comment">/**</span></div><div class="line"><span class="comment">	 * 删除参会人员根据id</span></div><div class="line"><span class="comment">	 * <span class="doctag">@param</span> suggestionCode</span></div><div class="line"><span class="comment">	 * <span class="doctag">@param</span> loginfos</span></div><div class="line"><span class="comment">	 * <span class="doctag">@throws</span> SystemException</span></div><div class="line"><span class="comment">	 * <span class="doctag">@throws</span> ServiceException</span></div><div class="line"><span class="comment">	 */</span></div><div class="line">	<span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">delete</span><span class="params">(String id,OALogInfo logInfo)</span></span></div><div class="line"><span class="function">			<span class="keyword">throws</span> SystemException, ServiceException </span>&#123;</div><div class="line">		<span class="keyword">try</span> &#123;</div><div class="line">			tGxMeetingUserDAO.delete(id);</div><div class="line">		&#125; <span class="keyword">catch</span> (Exception e) &#123;</div><div class="line">			 <span class="keyword">throw</span> <span class="keyword">new</span> ServiceException(MessagesConst.save_error,               </div><div class="line">						<span class="keyword">new</span> Object[] &#123;<span class="string">"删除参与人员"</span>&#125;);</div><div class="line">		&#125;</div><div class="line">	&#125;</div></pre></td></tr></table></figure>
<figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div></pre></td><td class="code"><pre><div class="line">**其中action里面一般批量删除**</div><div class="line"><span class="comment">//删除</span></div><div class="line">	<span class="meta">@Override</span></div><div class="line">	<span class="function"><span class="keyword">public</span> String <span class="title">delete</span><span class="params">()</span> <span class="keyword">throws</span> Exception </span>&#123;</div><div class="line">		<span class="comment">// TODO Auto-generated method stub</span></div><div class="line">		String[] mrIdString = ids.split(<span class="string">","</span>);</div><div class="line">		<span class="keyword">for</span>(<span class="keyword">int</span> i=<span class="number">0</span>;i&lt;mrIdString.length;i++)&#123;</div><div class="line">			manager.delete(mrIdString[i],<span class="keyword">new</span> OALogInfo(<span class="string">"会议室管理-『删除』："</span>+mrIdString[i]));</div><div class="line">		&#125;</div><div class="line">		renderText(<span class="string">"reload"</span>);</div><div class="line">		<span class="keyword">return</span> <span class="keyword">null</span>;</div><div class="line">	&#125;</div></pre></td></tr></table></figure>
<h3 id="根据ID获取信息"><a href="#根据ID获取信息" class="headerlink" title="根据ID获取信息"></a>根据ID获取信息</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div></pre></td><td class="code"><pre><div class="line"><span class="meta">@Transactional</span>(readOnly=<span class="keyword">true</span>)</div><div class="line">	<span class="function"><span class="keyword">public</span> TGxMeeting <span class="title">getTGxMeetingById</span><span class="params">(String roomId)</span> <span class="keyword">throws</span> SystemException,ServiceException</span>&#123;</div><div class="line">		<span class="keyword">try</span>&#123;</div><div class="line">			<span class="keyword">return</span> meetingDAO.get(roomId);</div><div class="line">		&#125;<span class="keyword">catch</span>(ServiceException e)&#123;</div><div class="line">			<span class="keyword">throw</span> <span class="keyword">new</span> ServiceException(MessagesConst.find_error,               </div><div class="line">					<span class="keyword">new</span> Object[] &#123;<span class="string">"获取会议室信息"</span>&#125;);</div><div class="line">		&#125;</div><div class="line">	&#125;</div></pre></td></tr></table></figure>
<h3 id="人员选择树结构"><a href="#人员选择树结构" class="headerlink" title="人员选择树结构"></a>人员选择树结构</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div><div class="line">51</div><div class="line">52</div><div class="line">53</div><div class="line">54</div><div class="line">55</div><div class="line">56</div><div class="line">57</div><div class="line">58</div><div class="line">59</div><div class="line">60</div><div class="line">61</div><div class="line">62</div><div class="line">63</div><div class="line">64</div><div class="line">65</div><div class="line">66</div></pre></td><td class="code"><pre><div class="line"></div><div class="line"><span class="comment">/**</span></div><div class="line"><span class="comment"> * 选择机构负责人,支持多选.</span></div><div class="line"><span class="comment"> * <span class="doctag">@author</span>:邓志城</span></div><div class="line"><span class="comment"> * <span class="doctag">@date</span>:2011-1-6 下午04:16:31</span></div><div class="line"><span class="comment"> * <span class="doctag">@return</span></span></div><div class="line"><span class="comment"> */</span></div><div class="line"><span class="function"><span class="keyword">public</span> String <span class="title">chooseOrgManager</span><span class="params">()</span> </span>&#123;</div><div class="line">	List&lt;TempPo&gt; nodes = <span class="keyword">new</span> LinkedList&lt;TempPo&gt;();</div><div class="line">	<span class="keyword">try</span> &#123;</div><div class="line">		List&lt;Organization&gt; orgList = userService.getAllDeparments();<span class="comment">//得到机构列表</span></div><div class="line">		Map&lt;String,List&lt;User&gt;&gt; userMap = userService.getUserMap();<span class="comment">//得到用户MAP：KEY：机构ID，VALUE：机构下的人员列表</span></div><div class="line">		List&lt;Organization&gt; newList = <span class="keyword">new</span> ArrayList&lt;Organization&gt;(orgList);</div><div class="line">		Collections.sort(newList, <span class="keyword">new</span> Comparator&lt;Organization&gt;()&#123;</div><div class="line">			<span class="meta">@Override</span></div><div class="line">			<span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">compare</span><span class="params">(Organization o1, Organization o2)</span> </span>&#123;</div><div class="line">				String code1 = o1.getOrgSyscode();</div><div class="line">				String code2 = o2.getOrgSyscode();</div><div class="line">				<span class="keyword">if</span>(code1 != <span class="keyword">null</span> &amp;&amp; code2 != <span class="keyword">null</span>) &#123;</div><div class="line">					<span class="keyword">return</span> code1.length() - code2.length();</div><div class="line">				&#125;</div><div class="line">				<span class="keyword">return</span> <span class="number">0</span>;</div><div class="line">			&#125;</div><div class="line">		&#125;);</div><div class="line">		String root = <span class="keyword">null</span>;</div><div class="line">		<span class="keyword">if</span>(!newList.isEmpty()) &#123;</div><div class="line">			root = newList.get(<span class="number">0</span>).getOrgSyscode();</div><div class="line">		&#125;</div><div class="line">		<span class="keyword">for</span>(<span class="keyword">int</span> i=<span class="number">0</span>;i&lt;orgList.size();i++) &#123;<span class="comment">//遍历塞值进去 (部门)</span></div><div class="line">			Organization organization = orgList.get(i);</div><div class="line">			TempPo po = <span class="keyword">new</span> TempPo();</div><div class="line">			po.setId(<span class="string">"o"</span>+organization.getOrgId());</div><div class="line">			po.setName(organization.getOrgName());</div><div class="line">			String parentId = organization.getOrgParentId();</div><div class="line">			po.setType(<span class="string">"o"</span>);</div><div class="line">			<span class="keyword">if</span>(organization.getOrgSyscode().equals(root)) &#123;<span class="comment">//判断树结构是否根节点</span></div><div class="line">				parentId = <span class="string">"0"</span>;</div><div class="line">			&#125; <span class="keyword">else</span> &#123;</div><div class="line">				parentId = parentId == <span class="keyword">null</span> ? <span class="string">"0"</span> : <span class="string">"o"</span> + parentId;<span class="comment">//自定义非根节点表示样式</span></div><div class="line">			&#125;</div><div class="line">			po.setParentId(parentId);<span class="comment">//---</span></div><div class="line">			nodes.add(po);</div><div class="line">			<span class="comment">//添加人员</span></div><div class="line">			List&lt;User&gt; userList = userMap.get(organization.getOrgId());</div><div class="line">			<span class="keyword">if</span>(userList != <span class="keyword">null</span>) &#123;</div><div class="line">				<span class="keyword">for</span>(User u : userList) &#123;</div><div class="line">					TempPo upo = <span class="keyword">new</span> TempPo();</div><div class="line">					upo.setId(u.getUserId());</div><div class="line">					upo.setName(u.getUserName());</div><div class="line">					upo.setParentId(po.getId());<span class="comment">//--对应部门</span></div><div class="line">					upo.setType(<span class="string">"u"</span>);</div><div class="line">					nodes.add(upo);	</div><div class="line">				&#125;</div><div class="line">			&#125;</div><div class="line">		&#125;</div><div class="line">		userMap.clear();<span class="comment">//清空</span></div><div class="line">		orgList.clear();<span class="comment">//清空</span></div><div class="line">	&#125;<span class="keyword">catch</span> (Exception e) &#123;</div><div class="line">		logger.error(<span class="string">"选择机构负责人发生异常"</span>, e);</div><div class="line">	&#125; </div><div class="line"></div><div class="line">	getRequest().setAttribute(<span class="string">"data"</span>, nodes);<span class="comment">//前台自定义树遍历值</span></div><div class="line">	getRequest().setAttribute(<span class="string">"id"</span>, getRequest().getParameter(<span class="string">"id"</span>));</div><div class="line">	getRequest().setAttribute(<span class="string">"ids"</span>, manager.getUserTreeIds());</div><div class="line">	<span class="keyword">return</span> <span class="string">"bigtree"</span>;</div><div class="line">&#125;</div></pre></td></tr></table></figure>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">其中的data在前台自定义标签里面自动遍历</div></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      &lt;h3 id=&quot;获取当前用户&quot;&gt;&lt;a href=&quot;#获取当前用户&quot; class=&quot;headerlink&quot; title=&quot;获取当前用户&quot;&gt;&lt;/a&gt;获取当前用户&lt;/h3&gt;&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;div class=&quot;line&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;4&lt;/div&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;div class=&quot;line&quot;&gt;*service*&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;span class=&quot;meta&quot;&gt;@Autowired&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;protected&lt;/span&gt; IUserService userService;&lt;span class=&quot;comment&quot;&gt;// 统一用户服务&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot;&gt;String userId=userService.getCurrentUser().getUserId();&lt;/div&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;列表显示数据&quot;&gt;&lt;a href=&quot;#列表显示数据&quot; class=&quot;headerlink&quot; title=&quot;列表显示数据&quot;&gt;&lt;/a&gt;列表显示数据&lt;/h3&gt;&lt;h4 id=&quot;连表查询但获取的是一个表的数据&quot;&gt;&lt;a href=&quot;#连表查询但获取的是一个表的数据&quot; class=&quot;headerlink&quot; title=&quot;连表查询但获取的是一个表的数据&quot;&gt;&lt;/a&gt;连表查询但获取的是一个表的数据&lt;/h4&gt;
    
    </summary>
    
    
  </entry>
  
  <entry>
    <title>springboot启示篇</title>
    <link href="http://wenni328.github.io.com/2017/02/10/springboot%E5%90%AF%E7%A4%BA%E7%AF%87/"/>
    <id>http://wenni328.github.io.com/2017/02/10/springboot启示篇/</id>
    <published>2017-02-10T13:54:48.000Z</published>
    <updated>2017-08-17T02:54:34.634Z</updated>
    
    <content type="html"><![CDATA[<h3 id="什么是springboot"><a href="#什么是springboot" class="headerlink" title="什么是springboot"></a>什么是springboot</h3><p>springboot是为了简化spring的创建、配置、等而出现的。使用springboot构建web项目，程序员不用过多考虑xml配置整合问题只需要专注写代码业务。springboot默认使用tomcat作为服务器，使用logback提供日志记录。</p>
<h3 id="用springboot构建你的第一个web工程"><a href="#用springboot构建你的第一个web工程" class="headerlink" title="用springboot构建你的第一个web工程"></a>用springboot构建你的第一个web工程</h3><h4 id="环境"><a href="#环境" class="headerlink" title="环境"></a>环境</h4><ul>
<li>–idea<a id="more"></a></li>
<li>–jdk1.8.0_102(最低使用1.7，官网推荐1.8)</li>
<li>–maven 3.3.9</li>
<li>–springboot 1.5.6RELEASE</li>
<li>–<a href="https://github.com/wenni328/springboot-base" target="_blank" rel="external">示例项目源码</a></li>
</ul>
<h4 id="新建springboot项目"><a href="#新建springboot项目" class="headerlink" title="新建springboot项目"></a>新建springboot项目</h4><p><img src="http://oufb2rqt9.bkt.clouddn.com/1%28JI~G%29_%7DR%5DP%7D_DPT%29%29KKFD.png" alt="项目"><br>选择默认的就行</p>
<h4 id="项目结构"><a href="#项目结构" class="headerlink" title="项目结构"></a>项目结构</h4><p><img src="http://oufb2rqt9.bkt.clouddn.com/springboot%E9%A1%B9%E7%9B%AE%E7%9B%AE%E5%BD%95%E7%BB%93%E6%9E%84.png" align="left" style="width:300px;height:300px;"><br>springboot默认<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">忙 ！没时间写了，后续再写</div></pre></td></tr></table></figure></p>
]]></content>
    
    <summary type="html">
    
      &lt;h3 id=&quot;什么是springboot&quot;&gt;&lt;a href=&quot;#什么是springboot&quot; class=&quot;headerlink&quot; title=&quot;什么是springboot&quot;&gt;&lt;/a&gt;什么是springboot&lt;/h3&gt;&lt;p&gt;springboot是为了简化spring的创建、配置、等而出现的。使用springboot构建web项目，程序员不用过多考虑xml配置整合问题只需要专注写代码业务。springboot默认使用tomcat作为服务器，使用logback提供日志记录。&lt;/p&gt;
&lt;h3 id=&quot;用springboot构建你的第一个web工程&quot;&gt;&lt;a href=&quot;#用springboot构建你的第一个web工程&quot; class=&quot;headerlink&quot; title=&quot;用springboot构建你的第一个web工程&quot;&gt;&lt;/a&gt;用springboot构建你的第一个web工程&lt;/h3&gt;&lt;h4 id=&quot;环境&quot;&gt;&lt;a href=&quot;#环境&quot; class=&quot;headerlink&quot; title=&quot;环境&quot;&gt;&lt;/a&gt;环境&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;–idea
    
    </summary>
    
    
      <category term="springboot" scheme="http://wenni328.github.io.com/tags/springboot/"/>
    
  </entry>
  
  <entry>
    <title>java集合类总览</title>
    <link href="http://wenni328.github.io.com/2017/01/17/java%E9%9B%86%E5%90%88%E7%B1%BB%E6%80%BB%E8%A7%88/"/>
    <id>http://wenni328.github.io.com/2017/01/17/java集合类总览/</id>
    <published>2017-01-17T05:09:31.000Z</published>
    <updated>2017-08-10T12:54:15.942Z</updated>
    
    <content type="html"><![CDATA[<p>Java所有的集合类都在java.util包中。</p>
<h3 id="Java最常用的集合类"><a href="#Java最常用的集合类" class="headerlink" title="Java最常用的集合类"></a>Java最常用的集合类</h3><h4 id="Collection接口"><a href="#Collection接口" class="headerlink" title="Collection接口"></a>Collection接口</h4><ul>
<li>–List接口(允许有重复元素)：ArrayList、LinkList、Vector、Stack</li>
<li>–Set接口(不允许用重复值) ：HashSet、TreeSet<a id="more"></a>
</li>
</ul>
<h4 id="Map接口"><a href="#Map接口" class="headerlink" title="Map接口"></a>Map接口</h4><ul>
<li>–HashMap</li>
<li>–TreeMap(具有按key排序功能)</li>
</ul>
<h3 id="对于Collection需要掌握的七点常用内容"><a href="#对于Collection需要掌握的七点常用内容" class="headerlink" title="对于Collection需要掌握的七点常用内容"></a>对于Collection需要掌握的七点常用内容</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">Collection的创建：即构造器，掌握在构造器方法中Collection的实现类做了一些什么</div><div class="line">往Collection中添加对象：即add(E)方法---&gt;类的实现方式决定了此方法的性能</div><div class="line">删除Collection中的对象：即remove(E)方法---&gt;类的实现方式决定了此方法的性能</div><div class="line">获取Collection中的单个对象：即get(int index)方法---&gt;类的实现方式决定了此方法的性能</div><div class="line">遍历Collection中的对象：即iterator，在实际中更常用的是增强型的<span class="keyword">for</span>循环去做遍历</div><div class="line">判断对象是否存在于Collection中：contain(E)---&gt;类的实现方式决定了此方法的性能</div><div class="line">Collection中对象的排序：主要取决于所采取的排序算法</div></pre></td></tr></table></figure>
<h3 id="对于Map需要掌握的七点常用内容"><a href="#对于Map需要掌握的七点常用内容" class="headerlink" title="对于Map需要掌握的七点常用内容"></a>对于Map需要掌握的七点常用内容</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">Map的创建：即构造器，掌握在构造器方法中Map的实现类做了一些什么</div><div class="line">往Map中添加键值对：即put(Object key, Object value)方法</div><div class="line">删除Map中的对象：即remove(Object key)方法</div><div class="line">获取Map中的单个对象：即get(Object key)方法</div><div class="line">判断对象是否存在于Map中：containsKey(Object key)</div><div class="line">遍历Map中的对象：即keySet()和iterator，在实际中更常用的是增强型的<span class="keyword">for</span>循环去做遍历</div><div class="line">Map中对象的排序：主要取决于所采取的排序算法</div></pre></td></tr></table></figure>
]]></content>
    
    <summary type="html">
    
      &lt;p&gt;Java所有的集合类都在java.util包中。&lt;/p&gt;
&lt;h3 id=&quot;Java最常用的集合类&quot;&gt;&lt;a href=&quot;#Java最常用的集合类&quot; class=&quot;headerlink&quot; title=&quot;Java最常用的集合类&quot;&gt;&lt;/a&gt;Java最常用的集合类&lt;/h3&gt;&lt;h4 id=&quot;Collection接口&quot;&gt;&lt;a href=&quot;#Collection接口&quot; class=&quot;headerlink&quot; title=&quot;Collection接口&quot;&gt;&lt;/a&gt;Collection接口&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;–List接口(允许有重复元素)：ArrayList、LinkList、Vector、Stack&lt;/li&gt;
&lt;li&gt;–Set接口(不允许用重复值) ：HashSet、TreeSet
    
    </summary>
    
    
  </entry>
  
  <entry>
    <title>Hexo搭建免费博客</title>
    <link href="http://wenni328.github.io.com/2017/01/16/hexo%E9%9A%8F%E7%AC%94/"/>
    <id>http://wenni328.github.io.com/2017/01/16/hexo随笔/</id>
    <published>2017-01-15T23:33:44.000Z</published>
    <updated>2017-08-10T11:46:28.491Z</updated>
    
    <content type="html"><![CDATA[<h3 id="准备条件"><a href="#准备条件" class="headerlink" title="准备条件"></a>准备条件</h3><ol>
<li>首先你得有一个自己的<a href="https://github.com/" target="_blank" rel="external">github</a>账号，没有的话去注册一个吧。</li>
<li>其次你的电脑上需要<a href="http://www.runoob.com/nodejs/nodejs-install-setup.html" target="_blank" rel="external">安装</a>nodeJs和npm，这是前提条件。</li>
<li>第三，作为一个开发者，git怎么能缺少呢，安装一个git for windows客户端吧。</li>
</ol>
<h3 id="搭建你的博客"><a href="#搭建你的博客" class="headerlink" title="搭建你的博客"></a>搭建你的博客</h3><h4 id="创建Github仓库"><a href="#创建Github仓库" class="headerlink" title="创建Github仓库"></a>创建Github仓库</h4><p>   新建一个名为: 你的用户名.github.io的仓库,比如我的github用户名是wenni328,新建的仓库就为wenni328.github.io(<font color="red">这里必须是你的用户名</font>)<br><a id="more"></a></p>
<h4 id="配置ssh-key"><a href="#配置ssh-key" class="headerlink" title="配置ssh key"></a>配置ssh key</h4><p>在git命令窗口输入<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ <span class="built_in">cd</span> ~/. ssh <span class="comment">#检查本机已存在的ssh key</span></div></pre></td></tr></table></figure></p>
<p>如果提示：No such file or directory，说明你是第一次使用git，需要自动生成一下<br>输入如下命令，按三次回车键即可生成一份<font color="#CDAD00">.ssh\id_rsa.pub</font>文件<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ ssh-keygen -t rsa -C <span class="string">"邮件地址"</span></div></pre></td></tr></table></figure></p>
<p>用记事本打开这份生成的文件，ctrl+a复制里面内容，登录你的github找到SSH and GPG keys，选择New,然后将复制内容粘贴到内容框就行<br><img src="http://oufb2rqt9.bkt.clouddn.com/gitub.PNG" alt="步骤说明"><br>然后我们测试一下ssh key是否配置成功，git窗口输入<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ ssh -T git@github.com <span class="comment">#直接复制这句，不用改</span></div></pre></td></tr></table></figure></p>
<p>如果出现提示：<font color="#8B1A1A">Are you sure you want to continue connecting (yes/no)?</font>  ，输入yes，看到<br><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">....You<span class="string">'ve successfully authenticated, but GitHub does not provide shell access.</span></div></pre></td></tr></table></figure></p>
<p>这就说明已经配置成功了</p>
<h3 id="开始你的Hexo"><a href="#开始你的Hexo" class="headerlink" title="开始你的Hexo"></a>开始你的Hexo</h3><h4 id="Hexo安装"><a href="#Hexo安装" class="headerlink" title="Hexo安装"></a>Hexo安装</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ npm install -g hexo</div></pre></td></tr></table></figure>
<h4 id="Hexo初始化"><a href="#Hexo初始化" class="headerlink" title="Hexo初始化"></a>Hexo初始化</h4><p>新建一个文件夹用来存放Hexo主题以及代码的。比如我的是<font color="res">D:\javaSoft\hexo</font><br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">$ <span class="built_in">cd</span> /d/javaSoft/hexo</div><div class="line">$ hexo init</div></pre></td></tr></table></figure></p>
<p>等待一段时间，生成目录结构为<br><img src="http://oufb2rqt9.bkt.clouddn.com/hexo%E7%9B%AE%E5%BD%95.png" alt="目录结构"><br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">$ hexo g <span class="comment">#生成文件</span></div><div class="line">$ hexo s <span class="comment">#启动服务</span></div></pre></td></tr></table></figure></p>
<p>然后访问<a href="http://localhost:4000" target="_blank" rel="external">http://localhost:4000</a>可以看到你的博客（这是默认主题，hexo还有很多主题）。</p>
<h4 id="Hexo更换主题"><a href="#Hexo更换主题" class="headerlink" title="Hexo更换主题"></a>Hexo更换主题</h4><p>我比较喜欢next主题，大家可以换成你们喜欢的主题。<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">$ <span class="built_in">cd</span> /d/javaSoft/hexo</div><div class="line">$ git <span class="built_in">clone</span> https://github.com/iissnan/hexo-theme-next.git themes/Next</div></pre></td></tr></table></figure></p>
<p>下载后存放地址：<br><img src="http://oufb2rqt9.bkt.clouddn.com/%60V%29$B~GB2I%5DVYOB4Y0~OJGT.png" alt="主题存放"><br>然后找到hexo下的<font color="red">_config.yml</font>,打开,查找<font color="red">theme: landscape</font>改成<font color="red">theme: Next</font><br>然后执行hexo g重新生成一下，hexo s 启动服务，<br>至此，我们的博客就已经搭建好了。</p>
<h4 id="上传到你的githUb"><a href="#上传到你的githUb" class="headerlink" title="上传到你的githUb"></a>上传到你的githUb</h4><h5 id="ssh-key配置"><a href="#ssh-key配置" class="headerlink" title="ssh key配置"></a>ssh key配置</h5><p>我们要让github和hexo连接起来，进行hexo下的<font color="red">_config.yml</font>相关deploy配置<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">deploy:</div><div class="line">  type: git</div><div class="line">  repository: git@github.com:github用户名/github用户名.github.io.git</div><div class="line">  branch: master</div></pre></td></tr></table></figure></p>
<p>连接了github之后我们需要再安装一个插件<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">npm install hexo-deployer-git --save</div></pre></td></tr></table></figure></p>
<p>发布，将本地博客文件发布到网站博客上，命令比较简单<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ hexo d</div></pre></td></tr></table></figure></p>
<p>新建页面指令<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ hexo new page <span class="string">"页面名称"</span></div></pre></td></tr></table></figure></p>
<p>会自动生成在hexo主题下的source/_post文件夹下，然后就可以继续你的编写了<br>之后你就可以访问你的博客了：<a href="https://github账号.github.io/" target="_blank" rel="external">https://github账号.github.io/</a><br>当然这里设置的都是比较普通的博客，如果你想个性化定制自己的博客<br>推荐<a href="https://segmentfault.com/a/1190000009544924" target="_blank" rel="external">个性化设置Hexo</a></p>
]]></content>
    
    <summary type="html">
    
      &lt;h3 id=&quot;准备条件&quot;&gt;&lt;a href=&quot;#准备条件&quot; class=&quot;headerlink&quot; title=&quot;准备条件&quot;&gt;&lt;/a&gt;准备条件&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;首先你得有一个自己的&lt;a href=&quot;https://github.com/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;github&lt;/a&gt;账号，没有的话去注册一个吧。&lt;/li&gt;
&lt;li&gt;其次你的电脑上需要&lt;a href=&quot;http://www.runoob.com/nodejs/nodejs-install-setup.html&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;安装&lt;/a&gt;nodeJs和npm，这是前提条件。&lt;/li&gt;
&lt;li&gt;第三，作为一个开发者，git怎么能缺少呢，安装一个git for windows客户端吧。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;搭建你的博客&quot;&gt;&lt;a href=&quot;#搭建你的博客&quot; class=&quot;headerlink&quot; title=&quot;搭建你的博客&quot;&gt;&lt;/a&gt;搭建你的博客&lt;/h3&gt;&lt;h4 id=&quot;创建Github仓库&quot;&gt;&lt;a href=&quot;#创建Github仓库&quot; class=&quot;headerlink&quot; title=&quot;创建Github仓库&quot;&gt;&lt;/a&gt;创建Github仓库&lt;/h4&gt;&lt;p&gt;   新建一个名为: 你的用户名.github.io的仓库,比如我的github用户名是wenni328,新建的仓库就为wenni328.github.io(&lt;font color=&quot;red&quot;&gt;这里必须是你的用户名&lt;/font&gt;)&lt;br&gt;
    
    </summary>
    
    
  </entry>
  
  <entry>
    <title>Hello World</title>
    <link href="http://wenni328.github.io.com/2017/01/15/hello-world/"/>
    <id>http://wenni328.github.io.com/2017/01/15/hello-world/</id>
    <published>2017-01-15T13:54:48.000Z</published>
    <updated>2017-08-14T07:29:32.757Z</updated>
    
    <content type="html"><![CDATA[<p>Welcome to <a href="https://hexo.io/" target="_blank" rel="external">Hexo</a>! This is your very first post. Check <a href="https://hexo.io/docs/" target="_blank" rel="external">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a href="https://hexo.io/docs/troubleshooting.html" target="_blank" rel="external">troubleshooting</a> or you can ask me on <a href="https://github.com/hexojs/hexo/issues" target="_blank" rel="external">GitHub</a>.<br><a id="more"></a></p>
<h2 id="Quick-Start"><a href="#Quick-Start" class="headerlink" title="Quick Start"></a>Quick Start</h2><h3 id="Create-a-new-post"><a href="#Create-a-new-post" class="headerlink" title="Create a new post"></a>Create a new post</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ hexo new <span class="string">"My New Post"</span></div></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/writing.html" target="_blank" rel="external">Writing</a></p>
<h3 id="Run-server"><a href="#Run-server" class="headerlink" title="Run server"></a>Run server</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ hexo server</div></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/server.html" target="_blank" rel="external">Server</a></p>
<h3 id="Generate-static-files"><a href="#Generate-static-files" class="headerlink" title="Generate static files"></a>Generate static files</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ hexo generate</div></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/generating.html" target="_blank" rel="external">Generating</a></p>
<h3 id="Deploy-to-remote-sites"><a href="#Deploy-to-remote-sites" class="headerlink" title="Deploy to remote sites"></a>Deploy to remote sites</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ hexo deploy</div></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/deployment.html" target="_blank" rel="external">Deployment</a></p>
]]></content>
    
    <summary type="html">
    
      &lt;p&gt;Welcome to &lt;a href=&quot;https://hexo.io/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Hexo&lt;/a&gt;! This is your very first post. Check &lt;a href=&quot;https://hexo.io/docs/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;documentation&lt;/a&gt; for more info. If you get any problems when using Hexo, you can find the answer in &lt;a href=&quot;https://hexo.io/docs/troubleshooting.html&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;troubleshooting&lt;/a&gt; or you can ask me on &lt;a href=&quot;https://github.com/hexojs/hexo/issues&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;GitHub&lt;/a&gt;.&lt;br&gt;
    
    </summary>
    
    
  </entry>
  
</feed>
