Skip to content

Commit 588ca45

Browse files
committed
Site updated: 2024-11-29 11:28:36
1 parent 86cef95 commit 588ca45

6 files changed

Lines changed: 299 additions & 223 deletions

File tree

ComputerScience/笔记/Web笔记/index.html

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
<meta property="og:description" content="Tomcat JRE报错 一般教程会让我们配置JAVA_HOME和JRE_HOME,然后启动Tomcat; 然而,在JDK9以后,就不默认包含JRE了。 此时,我们使用命令 jlink --module-path jmods --add-modules java.desktop --output jre 生成一个JRE后,启动Tomcat,就会报错: WARNING: Unknown modu">
2929
<meta property="og:locale" content="zh_CN">
3030
<meta property="article:published_time" content="2024-11-27T16:00:00.000Z">
31-
<meta property="article:modified_time" content="2024-11-28T02:36:02.369Z">
31+
<meta property="article:modified_time" content="2024-11-29T03:19:54.427Z">
3232
<meta property="article:author" content="SIMULEITE">
3333
<meta property="article:tag" content="笔记">
3434
<meta name="twitter:card" content="summary">
@@ -138,7 +138,7 @@
138138
<div class="sidebar-panel-container">
139139
<!--noindex-->
140140
<div class="post-toc-wrap sidebar-panel">
141-
<div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#tomcat"><span class="nav-text"> Tomcat</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#jre%E6%8A%A5%E9%94%99"><span class="nav-text"> JRE报错</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#cookies"><span class="nav-text"> Cookies</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#remember-me"><span class="nav-text"> Remember-me</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#session"><span class="nav-text"> Session</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#servlet"><span class="nav-text"> Servlet</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6"><span class="nav-text"> 上传文件</span></a></li></ol></li></ol></div>
141+
<div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#tomcat"><span class="nav-text"> Tomcat</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#jre%E6%8A%A5%E9%94%99"><span class="nav-text"> JRE报错</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#cookies"><span class="nav-text"> Cookies</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#remember-me"><span class="nav-text"> Remember-me</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#session"><span class="nav-text"> Session</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#servlet"><span class="nav-text"> Servlet</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6"><span class="nav-text"> 上传文件</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#context"><span class="nav-text"> Context</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#filter"><span class="nav-text"> Filter</span></a></li></ol></div>
142142
</div>
143143
<!--/noindex-->
144144

@@ -223,9 +223,15 @@ <h1 class="post-title" itemprop="name headline">
223223
<i class="far fa-calendar"></i>
224224
</span>
225225
<span class="post-meta-item-text">发表于</span>
226-
227226

228-
<time title="创建时间:2024-11-28 00:00:00 / 修改时间:10:36:02" itemprop="dateCreated datePublished" datetime="2024-11-28T00:00:00+08:00">2024-11-28</time>
227+
<time title="创建时间:2024-11-28 00:00:00" itemprop="dateCreated datePublished" datetime="2024-11-28T00:00:00+08:00">2024-11-28</time>
228+
</span>
229+
<span class="post-meta-item">
230+
<span class="post-meta-item-icon">
231+
<i class="far fa-calendar-check"></i>
232+
</span>
233+
<span class="post-meta-item-text">更新于</span>
234+
<time title="修改时间:2024-11-29 11:19:54" itemprop="dateModified" datetime="2024-11-29T11:19:54+08:00">2024-11-29</time>
229235
</span>
230236

231237

@@ -246,6 +252,7 @@ <h2 id="jre报错"><a class="markdownIt-Anchor" href="#jre报错"></a> JRE报错
246252
<p>生成一个JRE后,启动Tomcat,就会报错:</p>
247253
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">WARNING: Unknown module: java.rmi specified to --add-opens</span><br><span class="line">Exception in thread &quot;main&quot; java.lang.NoClassDefFoundError: java/util/logging/Logger</span><br><span class="line"> at org.apache.juli.logging.DirectJDKLog.&lt;init&gt;(DirectJDKLog.java:61)</span><br><span class="line"> at org.apache.juli.logging.DirectJDKLog.getInstance(DirectJDKLog.java:181)</span><br><span class="line"> at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:133)</span><br><span class="line"> at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:156)</span><br><span class="line"> at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:211)</span><br><span class="line"> at org.apache.catalina.startup.Bootstrap.&lt;clinit&gt;(Bootstrap.java:49)</span><br><span class="line">Caused by: java.lang.ClassNotFoundException: java.util.logging.Logger</span><br><span class="line"> at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)</span><br><span class="line"> at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)</span><br><span class="line"> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)</span><br><span class="line"> ... 6 more</span><br></pre></td></tr></table></figure>
248254
<p>这时候,只需要把jre文件和<code>JRE_HOME</code>环境变量删除,Tomcat就能正常启动</p>
255+
<span id="more"></span>
249256
<h1 id="cookies"><a class="markdownIt-Anchor" href="#cookies"></a> Cookies</h1>
250257
<h2 id="remember-me"><a class="markdownIt-Anchor" href="#remember-me"></a> Remember-me</h2>
251258
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">label</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;checkbox&quot;</span> <span class="attr">placeholder</span>=<span class="string">&quot;记住密码&quot;</span> <span class="attr">name</span>=<span class="string">&quot;remember-me&quot;</span>&gt;</span></span><br><span class="line"> 记住密码</span><br><span class="line"> <span class="tag">&lt;/<span class="name">label</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure>
@@ -276,6 +283,17 @@ <h2 id="上传文件"><a class="markdownIt-Anchor" href="#上传文件"></a> 上
276283
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="comment">&lt;!-- multipart 传文件 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">form</span> <span class="attr">method</span>=<span class="string">&quot;post&quot;</span> <span class="attr">action</span>=<span class="string">&quot;file&quot;</span> <span class="attr">enctype</span>=<span class="string">&quot;multipart/form-data&quot;</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">div</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;file&quot;</span> <span class="attr">name</span>=<span class="string">&quot;test-file&quot;</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">div</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">button</span>&gt;</span>上传文件<span class="tag">&lt;/<span class="name">button</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">form</span>&gt;</span></span><br></pre></td></tr></table></figure>
277284
<p>后端定义Post方法</p>
278285
<figure class="highlight java"><table><tr><td class="code"><pre><span class="line"><span class="meta">@MultipartConfig</span> <span class="comment">// 文件传输注解</span></span><br><span class="line"><span class="meta">@WebServlet(&quot;/file&quot;)</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">FileServlet</span> <span class="keyword">extends</span> <span class="title class_">HttpServlet</span> &#123;</span><br><span class="line"></span><br><span class="line"> <span class="meta">@Override</span></span><br><span class="line"> <span class="keyword">protected</span> <span class="keyword">void</span> <span class="title function_">doPost</span><span class="params">(HttpServletRequest req, HttpServletResponse resp)</span> <span class="keyword">throws</span> ServletException, IOException &#123;</span><br><span class="line"> <span class="keyword">try</span>(<span class="type">FileOutputStream</span> <span class="variable">stream</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">FileOutputStream</span>(<span class="string">&quot;/Users/nagocoler/Documents/IdeaProjects/WebTest/test.png&quot;</span>))&#123;</span><br><span class="line"> <span class="type">Part</span> <span class="variable">part</span> <span class="operator">=</span> req.getPart(<span class="string">&quot;test-file&quot;</span>);</span><br><span class="line"> IOUtils.copy(part.getInputStream(), stream);</span><br><span class="line"> resp.setContentType(<span class="string">&quot;text/html;charset=UTF-8&quot;</span>);</span><br><span class="line"> resp.getWriter().write(<span class="string">&quot;文件上传成功!&quot;</span>);</span><br><span class="line"> &#125;</span><br><span class="line"> &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
286+
<h2 id="context"><a class="markdownIt-Anchor" href="#context"></a> Context</h2>
287+
<blockquote>
288+
<p>ServeletContext属于整个Web应用程序,全局唯一</p>
289+
</blockquote>
290+
<figure class="highlight java"><table><tr><td class="code"><pre><span class="line"><span class="type">ServeltContext</span> <span class="variable">context</span> <span class="operator">=</span> getServletContext();</span><br><span class="line">context.setAttribute(<span class="string">&quot;key&quot;</span>, <span class="string">&quot;value&quot;</span>);</span><br></pre></td></tr></table></figure>
291+
<h1 id="filter"><a class="markdownIt-Anchor" href="#filter"></a> Filter</h1>
292+
<blockquote>
293+
<p>Filter相当于在所有访问前加了一堵墙,来自浏览器的所有访问请求都会首先经过Filter。</p>
294+
</blockquote>
295+
<p>只有Filter允许通过的请求,才可以顺利到达Servlet。</p>
296+
<figure class="highlight java"><table><tr><td class="code"><pre><span class="line"><span class="meta">@WebFileter(&quot;/*&quot;)</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">MyFilter</span> <span class="keyword">implements</span> <span class="title class_">Filter</span> &#123;</span><br><span class="line"> <span class="meta">@Override</span></span><br><span class="line"> <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">doFilter</span><span class="params">(req, resp, chain)</span> &#123;</span><br><span class="line"> ...</span><br><span class="line"> chain.doFilter(req, res);</span><br><span class="line"> &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
279297
</div>
280298

281299

0 commit comments

Comments
 (0)