日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IDEA运行Tomcat8.5.73源码

發布時間:2025/6/15 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IDEA运行Tomcat8.5.73源码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. 下載 8.5.73源碼

https://tomcat.apache.org/download-80.cgi

二.解壓源碼


指定catalina-home
新建catalina-home目錄,并將conf和webapps目錄拷貝到catalina-home目錄中。并新建logs、work、temp、lib目錄,初始都為空。如下圖

缺失文件引入 新建pom.xml

<?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.apache.tomcat</groupId><artifactId>Tomcat8.5</artifactId><name>Tomcat8.5</name><version>8.5</version><build><finalName>Tomcat8.0</finalName><!-- 指定源文件為java 、test --><sourceDirectory>java</sourceDirectory><testSourceDirectory>test</testSourceDirectory><resources><resource><directory>java</directory></resource></resources><testResources><testResource><directory>test</directory></testResource></testResources><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3</version><configuration><encoding>UTF-8</encoding><!-- 指定jdk 編譯 版本 ,沒裝jdk 1.7的可以變更為1.6 --><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build><!-- 添加tomcat8 所需jar包依賴 --><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>ant</groupId><artifactId>ant</artifactId><version>1.7.0</version></dependency><dependency><groupId>wsdl4j</groupId><artifactId>wsdl4j</artifactId><version>1.6.2</version></dependency><dependency><groupId>javax.xml</groupId><artifactId>jaxrpc</artifactId><version>1.1</version></dependency><dependency><groupId>org.easymock</groupId><artifactId>easymock</artifactId><version>4.0</version></dependency><dependency><groupId>org.eclipse.jdt.core.compiler</groupId><artifactId>ecj</artifactId><version>4.6.1</version></dependency><dependency><groupId>com.unboundid</groupId><artifactId>unboundid-ldapsdk</artifactId><version>3.2.0</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies> </project>

三 新建CookieFilter.java文件

因為具體編譯階段,會提示找不到此java文件,所以需要在test\util目錄下新建CookieFilter.java文件,并將以下內容復制粘貼到文件中。

/** Licensed to the Apache Software Foundation (ASF) under one or more* contributor license agreements. See the NOTICE file distributed with* this work for additional information regarding copyright ownership.* The ASF licenses this file to You under the Apache License, Version 2.0* (the "License"); you may not use this file except in compliance with* the License. You may obtain a copy of the License at** http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/ package util;import java.util.Locale; import java.util.StringTokenizer;/*** Processes a cookie header and attempts to obfuscate any cookie values that* represent session IDs from other web applications. Since session cookie names* are configurable, as are session ID lengths, this filter is not expected to* be 100% effective.** It is required that the examples web application is removed in security* conscious environments as documented in the Security How-To. This filter is* intended to reduce the impact of failing to follow that advice. A failure by* this filter to obfuscate a session ID or similar value is not a security* vulnerability. In such instances the vulnerability is the failure to remove* the examples web application.*/ public class CookieFilter {private static final String OBFUSCATED = "[obfuscated]";private CookieFilter() {// Hide default constructor}public static String filter(String cookieHeader, String sessionId) {StringBuilder sb = new StringBuilder(cookieHeader.length());// Cookie name value pairs are ';' separated.// Session IDs don't use ; in the value so don't worry about quoted// values that contain ;StringTokenizer st = new StringTokenizer(cookieHeader, ";");boolean first = true;while (st.hasMoreTokens()) {if (first) {first = false;} else {sb.append(';');}sb.append(filterNameValuePair(st.nextToken(), sessionId));}return sb.toString();}private static String filterNameValuePair(String input, String sessionId) {int i = input.indexOf('=');if (i == -1) {return input;}String name = input.substring(0, i);String value = input.substring(i + 1, input.length());return name + "=" + filter(name, value, sessionId);}public static String filter(String cookieName, String cookieValue, String sessionId) {if (cookieName.toLowerCase(Locale.ENGLISH).contains("jsessionid") &&(sessionId == null || !cookieValue.contains(sessionId))) {cookieValue = OBFUSCATED;}return cookieValue;} }

四 構建項目

Main class設置為org.apache.catalina.startup.Bootstrap

添加VM options (不要有回車換行,如直接拷貝,請仔細檢查)

-Dcatalina.home=catalina-home
-Dcatalina.base=catalina-home
-Djava.endorsed.dirs=catalina-home/endorsed
-Djava.io.tmpdir=catalina-home/temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=catalina-home/conf/logging.properties

// 控制臺啟動中文亂碼,簡單處理使用默認使用英文模式。
-Duser.language=en

五、啟動項目

上面工作完成后,點擊run或debug進行啟動。
項目啟動完畢我們可以測試了,在瀏覽器訪問http://localhost:8080/ 發現打不開我們看到的經典歡迎頁面了,頁面報了一個錯。

原因是我們直接啟動org.apache.catalina.startup.Bootstrap的時候沒有加載org.apache.jasper.servlet.JasperInitializer,從而無法編譯JSP。解決辦法是在tomcat的源碼org.apache.catalina.startup.ContextConfig中手動將JSP解析器初始化:

context.addServletContainerInitializer(new JasperInitializer(), null);


修改完后,項目再啟動,我們再在瀏覽器訪問http://localhost:8080/ ,就可以看到我們所熟悉的經典歡迎頁面了

啟動成功后,會出現訪問具體app時出現中文亂碼,可以參考如下文章解決:
記一次tomcat源碼啟動控制臺中文亂碼問題調試過程

總結

以上是生活随笔為你收集整理的IDEA运行Tomcat8.5.73源码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。