我和Tomcat的相爱相杀

今天写这片博客,记录一下我使用Tomcat遇到的一些问题,虽然现在的技术发展到spring boot、spring cloud等技术时代,可能使用Tomcat 做服务器部署项目的时代要过去了,但是也有一些需要维护的项目可能使用tomcat,或者在一些学校教学或者个人开发一些小项目可能或用到,所以记录一下,希望能解决您的问题。同时,文章中若有不正之处或者没有涉及到的问题,欢迎大家留言评论指正。

1.刚装上Tomcat,startup.bat启动闪退什么鬼?

问题描述:tomcat解压路径/bin/stratup.bat(windows环境下)启动tomcat,出现黑窗口闪退情况.

这种情况一般是是解压版的tomcat,此时需要在startup.bat文件的头部加上jdk和tomcat的环境变量。(别忘了在shutdown.bat文件里面也加上哦)

SET TOMCAT_HOME=E:\tomcat-7.0 (解压后的tomcat文件目录)
SET JAVA_HOME=D:\Java\jdk1.7 (java jdk目录)

2.tomcat启动成功欢迎页面出来了,我扔了一个静态页面,为什么不显示?

3.表单填完数据,后台为何获取到是中文乱码?

问题2,3,可能都是编码格式惹的祸

<!-- 修改编码问题 -->
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />

4.web项目Run As发布了,为何访问不了?

你修改项目的发布路径了吗?

在这里插入图片描述

5.编码改成UTF-8了,中文怎么还是乱码?

server.xml文件改了编码格式,改的只是get请求的编码格式。对于post请求的编码格式你注意了吗?

一、在HTML页面中使用meta标记可以确保浏览器按照指定的字符集进行解码页面,并限定表单提交时的数据编码方式
<meta http-equiv="content-type" content="text/html;charset=utf-8">
★在服务器端需要在调用getParameter()方法读取参数之前,告诉浏览器如何解码,使用如下代码即可完成该设置:
request.setCharacterEncoding("utf-8");
★注意该方法一定要要放在所有request.getParameter()方法之前。
★这种方式只针对POST请求有效。
二、也可以使用转码:String username = request.getParameter("username");
username = new String(username.getBytes("iso-8859-1"),"UTF-8");

对于项目中使用了spring这样的框架的项目,在项目的web.xml配置字符过滤器就可以了。

<!-- 设置servlet编码开始 -->
	<filter>
		<filter-name>Set Character Encoding</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<async-supported>true</async-supported>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>Set Character Encoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- 设置servlet编码结束 -->

6.ajax明明传值了,可contorller里的参数会是null?

先说一下出现这个问题的需求,首先页面加载一张后台的图片,然后使用canvas在图片上做一些绘制,然后再把图片保存回服务器。

在图片绘制完成后,我是用的base64将图片转成字符串保存到传到后台,然鹅在后台却接到的参数都是null,打开浏览器的network里面显示请求request heards里面参数是有的可把我纳闷死了。后来发现是图片转成字符串导致参数数据过大,被tomcat给屏蔽掉了。

解决方案:tomcat/conf/server.xml

<Connector port="2018" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxPostSize="-1"/>

在这里插入图片描述

7.webapps下的war包删除?

首先运行的时候是不能删除的,tomcat在运行的时候是会实时监控webapps下的war包的,又增加的时候就会自动解压部署项目,所以删除war包,也就会跟着把项目自动删除掉了。
如想删除但又不想删除工程的话,可以先将tomcat停止运行后,再删掉war包,然后重启tomcat就可以了。
另外,tomcat的war在启东市自动解压,默认是执行一次的,以后再次重新启动的时候,tomcat是不会解压覆盖的
规则就是abc.war,如果存在abc文件夹就不会解压。不存在abc文件夹才会自动解压

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张二狗和苗翠花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值