Tomcat的官方文档查看方式: webapps/docs 保存的就是tomcat的文档,在启动tomcat之后,访问 http://localhost:8080/docs 即能查看文档。 ## HTTP GET 请求参数中文乱码 ### 两种解决方式 第1种:代码里转换 ```java String name = request.getParamter("name"); String nameUtf8 = new String(name.getBytes("ISO8859-1"), "UTF-8"); ``` 第2种:修改Tomcat配置 TOMCAT_HOME/conf/server.xml ```xml .... ``` **注意:** 百度到的结果一般都是上面这两种解决方法。 第一种方法太麻烦了,get请求里有十几个参数,难道都要一个一个的 `new String(name.getBytes("ISO8859-1"), "UTF-8");` 吗?这样的代码笨重,且修改时不小心就会出错。 第二种方法很好,但要注意:==**tomcat7 及以上版本默认都设置了 URIEncoding="UFT-8",不必再去手动设置。**==这一点,百度到的博客里一个说的都没有,全都是互相转载,不知多少年前的了。最好的办法就是看官方文档。 > 我本地和测试环境下get请求参数值中文都是正常的,一到生产就乱码了,查不到数据。花了两个多小时后才确定是开发和生产环境不同导致的 ### 查看当前tomcat版本 ```shell # 进入 TOMCAT_HOME/bin,执行 version.sh 查看当前tomcat版本 [root@jtdev bin]# sh version.sh /opt/tomcat9/logs/catalina.out Using CATALINA_BASE: /opt/tomcat9 Using CATALINA_HOME: /opt/tomcat9 Using CATALINA_TMPDIR: /opt/tomcat9/temp Using JRE_HOME: /usr/java8/jdk1.8.0_11/jre Using CLASSPATH: /opt/tomcat9/bin/bootstrap.jar:/opt/tomcat9/bin/tomcat-juli.jar Server version: Apache Tomcat/9.0.35 Server built: May 5 2020 20:36:20 UTC Server number: 9.0.35.0 OS Name: Linux OS Version: 2.6.32-504.el6.x86_64 Architecture: amd64 JVM Version: 1.8.0_11-b12 JVM Vendor: Oracle Corporation ``` ### 查看官方文档 TOMCAT_HOME/webapps/docs 目录下保存的就是当前版本的文档,当启动tomcat后,访问 http://host:port/docs 即可 1. 选择左侧Referance菜单栏下的 Configuration,进入配置项说明页面 2. 再选择左侧Connectors菜单栏下的 HTTP/1.X ,进入Connector元素配置项说明 3. 全局搜索 URIEncoding | URIEncoding | This specifies the character encoding used to decode the URI bytes, after %xx decoding the URL. The default value is UTF-8. | | ----------- | ------------------------------------------------------------ | ## 关闭Tomcat 下面这段linux脚本是检测指定目录的tomcat是否启动,如果启动则关闭(暂时还看不懂) ```shell status() { PID=`ps --no-heading -C java -f --width 1000 | grep /opt/tomcat9 |awk '{print $2}'` if [[ ! -x /proc/${PID} || -z $PID ]]; then return 1 else return 0 fi } status RETVAL=$? if [ $RETVAL -eq 0 ]; then echo "Shutting down tomcat" PID=`ps --no-heading -C java -f --width 1000 | grep /opt/tomcat9 |awk '{print $2}'` kill -9 $PID > /dev/null 2>&1 RETVAL=$? if [ $RETVAL -eq 0 ]; then echo "tomcat is stoped" fi fi ```