Java开发环境系列:一篇能解决你99%问题的排雷日记
安装
https://archive.apache.org/dist/tomcat/
推荐使用免安装版的Tomcat(放在没有中文和空格的目录下),前提是已经安装了JDK并配置了环境变量。
Linux环境下解压:
测试
双击startup.bat,浏览器输入url:localhost:8080,若弹出Tomcat主页(黑框不能关)则安装成功。
查看catalina.out日志文件, 如果有如下错误,找到conf\Catalina\localhost文件夹,里面有两个xml文件host-manager.xml、manager.xml,删掉他们在启动Tomcat就没问题了。
如何查看当前版本?
linux 下进入tomcat安装文件夹的bin目录下 执行./version.sh
windows下进入tomcat安装文件夹的bin目录下 执行./version.bat
如何配置管理员?
配置文件:/conf/tomcat-users.xml
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users>
<role rolename="manager"/>
<role rolename="admin"/>
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="admin" password="admin" roles="admin-gui,admin,manager-gui,manager"/>
</tomcat-users>
注意:如果Eclipse中设置的“Server Locations”是“Use Tomcat installation(takes control of Tomcat installation)”,则不能直接修改tomcat安装目录/conf下的tomcat-users.xml,需要在Eclipse中修改该文件,且在启动tomcat时才会生效,生效时会自动更新tomcat安装目录下的tomcat-users.xml
如何解决端口冲突问题?
配置文件:/conf/server.xml
注意:8080为默认端口,可以将其修改为任意的端口,建议使用1024以上的端口,避免与公用端口冲突。
修改:重启应用。
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
端口冲突
在cmd窗口下,netstat -ano,找到端口号对应的PID,在任务管理器中→进程→找到对应的进程,结束进程即可。
如何修改最大线程数?
server.xml
<Connector port="8880" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" maxThreads="1500" maxProcessors="450"
URIEncoding="UTF-8"/>
如何解决关闭一个Tomcat会将其他Tomcat同时关掉的问题?
其实:使用startup.bat启动一个Tomcat,却发现别的Tomcat也一起被启动了,是同样的原理。
原因:
shutdown.bat文件有一句:if not "%CATALINA_HOME%" == "" goto gotHome,执行关闭命令的时候,程序会根据CATALINA_HOME去查找,这句话的意思是如果环境变量配置的这个路径不为空,就执行这个,否则就“set CATALINA_HOME=%CURRENT_DIR%”,也就是将当前的路径赋值给它。
解决办法就是在if not "%CATALINA_HOME%" == "" goto gotHome
前面加上rem,将它给注释掉,这样每次执行命令的时候就只会对当前路径进行操作了。
即:
rem if not "%CATALINA_HOME%" == "" goto gotHome
同理,如果启动tomcat端口配置无效(address already in use),就在startup.bat中这个地方加上rem。
如图:
运行多个服务
如果需要让一个Tomcat运行多个服务,只需要复制server.xml文件中的<Service>元素,并修改相应的参数,便可以实现一个Tomcat运行多个服务,当然必须在不同的端口提供服务。
设置WEB容器位置(针对eclipse)
如果为灰色,需要把tomcat下的所有項目移除。并右击,clean...之后方可設置,启动后将又变为黑色。(Eclipse默认把部署的项目放在workspace工作空间中,MyEclipse默认放在Tomcat安装路径下)
选择第二个,这样在Eclipse启动了tomcat服务器,我们也能访问到tomcat本地管理首页。否則只能在DOS下使用Tomcat的启动命令才能访问Tomcat本地管理首页。
Tomcat目录结构
bin: 启动和关闭tomcat的服务器.
conf: 这个路径比较重要.放的是tomcat服务器的配置文件.
lib: tomcat支持的jar包
存放Tomcat服务器的核心类库(JAR文件);
如需扩展Tomcat,可将第三方类库复制到这个目录下。
logs: tomcat的日志记录.
temp: tomcat的临时文件的路径.
webapps:存放开发的项目的.一般情况下 一个项目会是一个文件夹.
该目录用于自动部署web应用;
将Web应用复制在该目录下,Tomcat会将该应用自动部署在容器中。
work: JSP被编译后文件存放的路径.(若发布新版本后页面仍显示老版本内容,可以将work目录下的文件清空,重新启动Tomcat),保存Web应用运行过程中编译生成的.class文件;该文件可以删除,但是每次启动Tomcat服务器时系统将再次建立该目录。
WEB工程/项目的目录结构
web工程
|--存放html 、css、js、img
|--WEB-INF
|-- web.xml (当前项目配置文件)
|-- classes 存放java类编译后的文件.
|-- lib 需要使用的第三方的jar包.
内存溢出问题如何解决?
在Eclipse中,内存溢出(报不能创建JAVA虚拟机错时,也可能是这里配错了。)
1、双击Tomcat,点击Open launch configuration,Arguments,
2、在VM arguments文本域最后边加:
-Xms256m -Xmx1024m -XX:MaxPermSize=256m
MyEclipse中
1、依次选择Preferences,Servers,Tomcat,Tomcat 6.x
2、在Optional program arguments后面加上:
-Xms256m -Xmx1024m -XX:MaxPermSize=256m
Linux系统下
1、在Tomcat安装目录下的/bin目录下:修改catalina.sh,加入:
JAVA_OPTS='-server -XX:PermSize=256M -XX:MaxPermSize=512m -Xmx15360m'
2、使用【chmod 777 catalina.sh】给catalina.sh赋权。
JSP页面乱码问题如何排查和解决?
JSP页面中告诉浏览器使用什么编码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
HTML中设置:
<meta http-equiv="content-type" content="text/html;charset=utf-8">
Servlet中设置:
response.setContentType("text/html;charset=utf-8");
response.getWriter().print(str);
服务器接收浏览器传递的中文参数:
如果是POST请求:
request.setCharacterEncoding("utf-8");
String userName = request.getParameter();
注:getParameter()获取POST请求参数默认使用ISO-8859-1编码,setCharacterEncoding()方法仅对POST请求有效。
如果是GET请求:
String name = request.getParameter("username");
name = new String(name.getBytes("iso-8859-1"),"utf-8");
在Tomcat容器的server.xml中配置URIEncoding:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8" />
浏览器地址栏编码
http://localhost:8080/servlet/regist?name="张三"
如果在浏览器地址栏中直接给出带参数的URL,不是通过超链接方法访问服务器,那么这个参数是GBK编码的。没有办法处理这问题,因为在页面使用UTF-8编码,Servlet需要用UTF-8来解码,而此时URL中编码是GBK。但直接在地址栏中根本就不应该直接输入带有参数的URL,只有超链接中的URL是受页面的编码控制的。
IE6对UTF-8不友好(使用JS处理)
IE6对UTF-8不是很友好!它会把两个字节当成一个中文来处理,当字节数为奇数时,那么就最后一个字节就会丢失。例如我们的GET参数是“大家好”,对于UTF-8编码而言,它就是9个字节,因为中文在UTF-8编码中3个字节,三个汉字对应9个字节。IE6认为2个字节是一个汉字,那么最后一个字节不会发送到服务器端,IE6很不安全。
处理这个问题的办法是把GET请求中的参数使用JavaScript做URL编码,URL编码后的内容就不再是中文了,这样IE6也就不会丢失字节了。
<a href='javascript:_go()'>Encoding</a>
<script type="text/javascript">
function _go() {
location.href = encodeURI("EncodingServlet?name=大家好");
}
</script>
http://localhost/encoding/EncodingServlet?name=%E5%A4%A7%E5%AE%B6%E5%A5%BD
在使用URL编码后,大家好已经变成了%E5%A4%A7%E5%AE%B6%E5%A5%BD。这样就不会再丢失字节了。
Java开发环境系列:一篇能解决你99%问题的排雷日记的更多相关文章
- 从零开始搭建Java开发环境第三篇:最新版IDEA常用配置指南,打造你的最酷IDE
刚刚使用IntelliJ IDEA 编辑器的时候,会有很多设置,会方便以后的开发,工欲善其事必先利其器. 比如:设置文件字体大小,代码自动完成提示,版本管理,本地代码历史,自动导入包,修改注释,修改t ...
- 从零开始搭建Java开发环境第四篇:精选IDEA中十大提高开发效率的插件!
Lombok 知名的插件,无需再写那么多冗余的get/set代码 JRebel 热部署插件 alibaba java coding guide 阿里巴巴代码规范插件,自动检查代码规范问题 [在这里插入 ...
- 【java系列】java开发环境搭建
描述 本篇文章主要讲解基于windows 10系统搭建java开发环境,主要内容包括如下: (1)安装资料准备 (2)安装过程讲解 (3)测试是否安装成功 (4)Hello Word测试 1 安装 ...
- Java开发环境的搭建01——Eclipse篇(Windows)
搭建环境是换项目组和新入职的开发入项都必须面临的一件事情,搭搭环境,一天就过去了...本着不浪费生命不做重复的无用功,在这里写写环境搭建的基本功,这篇是介绍Java环境搭建,常见的开发IDE无非就两种 ...
- Java开发环境的搭建02——IntelliJ IDEA篇(Windows)
1.IntelliJ IDEA的下载与安装 IntelliJ IDEA简称IDEA,由JetBrains公司开发,是java语言开发的集成环境,也是目前业界被公认的最好的java开发工具之一.尤其在智 ...
- 2018 完美搭建VS Code 的JAVA开发环境并解决print乱码问题
出自微软的Visual Studio Code 并不是一个 IDE,它是个有理想,有前途的编辑器,通过相应语言的插件,可以将其包装成一个 轻量级的功能完善的IDE. 自从遇见了她,真的是对她一见钟情不 ...
- 超全详解Java开发环境搭建
摘自:https://www.cnblogs.com/wangjiming/p/11278577.html 超全详解Java开发环境搭建 在项目产品开发中,开发环境搭建是软件开发的首要阶段,也是必 ...
- 打造Linux三流娱乐环境,二流办公环境,一流Java开发环境
写这篇文章的目的首先是为让自己以后再装linux环境时候,不用再通宵google+百度,做个备忘录,其次,给新入Linux环境的同学分享一点个人经验,再高尚点的动机也算是想做为开源技术的传播布道者.我 ...
- Java开发环境的基本设置
作为Java的刚開始学习的人,不知道其它的刚開始学习的人有没有和我一样的感受:用Java开发须要配置这么复杂 的环境.太难了.第一次配置时,一团混乱.Oracle监听服务打不开了,PLSql连接不上O ...
随机推荐
- ASIO库使用注意事项
1. 使用 io_service::work 实现 io_service 无任务时不退出 正常情况下向io_service抛任务,它执行完成后就会自动退出,而要实现那种chromium那种的循环队列, ...
- JS高阶---对象创建模式(5种)
[前言] 函数高级部分先看到这里,接下里看下面向对象高级部分 .对象创建模式 .继承模式 [主体] (1)Object构造函数模式 案例如下: 测试结果如右图所示 (2)对象字面量形式创建 案例如下: ...
- luoguP2882Face The Right Way
https://www.luogu.org/problem/P2882 题意 你有n头牛,每头牛有个朝向,你每次可以选择连续k头牛翻转,求k为多少时可以用最少的步骤将所有牛朝向变为正向 n≤5000 ...
- 201871010134-周英杰《面向对象程序设计(java)》第七周学习总结
201871010134-周英杰<面向对象程序设计(java)>第七周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这 ...
- jenkins部署报404错误
环境:tomcat 7+jdk1.7+win10 64 jenkins_1.5.23 部署完成后服务器启动输入网址:http://192.168.3.100:8080/jenkins打开无法访问报40 ...
- 03-人脸识别-基于MTCNN,显示5个人脸特征
import tensorflow as tf import numpy as np import cv2 import detect_face import matplotlib.pyplot as ...
- 【问题篇四】SpringBoot的properties文件不能自动提示解决方法(1)
一.Eclipse 解决方法:Eclipse中安装Spring Tools Suite(STS). 这里采用离线安装的方式. 1. 官网:https://spring.io/tools3/sts/al ...
- TCP协议的粘包问题(八)
一.什么是粘包 在socket缓冲区和数据的传递过程介绍中,可以看到数据的接收和发送是无关的,read()/recv() 函数不管数据发送了多少次,都会尽可能多的接收数据.也就是说,read()/re ...
- 清理C盘临时文件脚本
@echo off echo 正在清除系统垃圾文件,请稍等...... del /f /s /q %systemdrive%\*.tmp del /f /s /q %systemdrive%\*._m ...
- 手机爬虫--appium
adb 安装:下载android-sdk压缩包,解压后其中有adb.exe,配置环境变量后即可 cmd下'adb'即可启动adb客户端 adb devices –l 查看已连接的模拟器 adb co ...