配置Tomcat服务器信息:
在Tomcat的安装目录下有一个conf目录,里面存放着Tomcat服务器的配置文件,其中最为核心的配置文件是server.xml,在这个文件里我们可以配置服务器的各种参数,例如超时时间、连接数量、端口配置等等。
下面介绍一些日常中可能会去server.xml里进行配置的参数:
超时时间
最大连接数
上图中的:
maxThreads="150" minSpareThreads="4" />
这是一个Executor 元素标签,Executor 用来配置共享线程池的,其实最大连接数就取决于线程池里的线程数量,所有的Connector都能共享这个线程池,要注意的是:这个标签要写在Connector之前。
关于以上Executor里声明的属性解释:
name 此属性是定义这个线程池的名字,这个名字必须唯一。
namePrefix 此属性是给每个线程池中的线程的name字符串设置一个前缀,这个前缀就是namePrefix 的值,而所谓的name字符串就是线程的线程号,默认值为tomcat-exec。
maxThreads 此属性定义好线程池的最大线程数量,也就是最大连接数量,默认值为200。
minSpareThreads 此属性定义Tomcat始终打开的最小线程数,也就是说无论如何Tomcat中的线程数量都不会小于这个属性定义的数量,默认值为25。
除了以上用到的四种属性之外,还有一个maxIdleTime属性也比较经常会用到,这个属性用来定义在Tomcat关闭一个空闲线程之前,允许空闲线程持续的时间,单位是毫秒,默认值为60000(一分钟)。
端口
端口也就是Tomcat服务器的通信端口,默认为8080。所有的用户都是通过这个端口来访问Tomcat服务器,这个端口是可以自定义的,在Connector标签的port属性中定义:
我们在开发实验的过程中使用的默认8080端口,如果发布上线的话,需要改为80端口,80端口是http协议的默认端口号。
常见的默认端口号如下:
⑴. HTTP协议代理服务器常用端口号:80/8080/3128/8081/9080
⑵. SOCKS代理协议服务器常用端口号:1080
⑶. FTP(文件传输)协议代理服务器常用端口号:21
⑷. Telnet(远程登录)协议代理服务器常用端口:23
HTTP服务器,默认的端口号为80/tcp
HTTPS(securely transferring web pages)服务器,默认的端口号为443/tcp 443/udp;
Telnet(不安全的文本传送),默认端口号为23/tcp(***Tiny Telnet Server所开放的端口);
FTP,默认的端口号为21/tcp(***Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所开放的端口);
TFTP(Trivial File Transfer Protocol),默认的端口号为69/udp;
SSH(安全登录)、SCP(文件传输)、端口重定向,默认的端口号为22/tcp;
SMTP Simple Mail Transfer Protocol (E-mail),默认的端口号为25/tcp(***Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口);
POP3 Post Office Protocol (E-mail) ,默认的端口号为110/tcp;
WebLogic,默认的端口号为7001;
Webshpere应用程序,默认的端口号为9080;
webshpere管理工具,默认的端口号为9090;
JBOSS,默认的端口号为8080;
TOMCAT,默认的端口号为8080;
WIN2003远程登陆,默认的端口号为3389;
Symantec AV/Filter for MSE,默认端口号为 8081;
Oracle 数据库,默认的端口号为1521;
ORACLE EMCTL,默认的端口号为1158;
Oracle XDB(XML 数据库),默认的端口号为8080;
Oracle XDB FTP服务,默认的端口号为2100;
MS SQL*SERVER数据库server,默认的端口号为1433/tcp 1433/udp;
MS SQL*SERVER数据库monitor,默认的端口号为1434/tcp 1434/udp;
MySQL 数据库,默认的端口号为3306/tcp;
发送关闭信息端口
这个端口在Server标签上定义:
Server标签包含的是整个Tomcat服务器。它有三个属性:
className 此属性定义服务器容器实现要使用的完全限定类名。
port 此属性定义接收关闭Tomcat请求的端口,这个端口只能从本地访问,所以能够阻止有人通过网络来关闭你的服务器。
shutdown 用来向port 定义的端口发送关闭服务器的命令字符串。如上图就是会向8005发送SHUTDOWN命令。
https加密协议端口
同样的如果是发布上线的话就要把8443改为443,因为https协议的默认端口号是443。
关于https协议:
https就是使用ssl加密的http协议,是一种加密的超文本传输协议。如果http不加密的话,被人抓包或监听了数据包,就能很轻易地看到数据包里面的数据内容,那样的话你的信息就泄露了。
如果使用的是https协议,那么你的数据包上传和下载时都会被加密,即便被人抓包了,也没有那么轻易破解加密算法,因为数据包是被公钥加密的只能使用服务器上的私钥解密,而服务器根本不会在任何情况下发送私钥,想要不通过私钥来直接破解数据包几乎是不可能的。
具体流程如图:
https协议是需要一个受信任的证书才能实现的,这个证书实际上就是一对密钥(公/私)。而我们自己也可以通过一些工具来生成这对密钥,这就叫做颁发证书。
自己颁发的证书是不受信任的,通过浏览器访问时就会有一个警告,受信任的证书需要去一些注册了的证书公司、网站上去购买,但是为什么自己颁发的证书就不受信任呢?是因为不安全吗?实际上不是的,这是因为我们自己制作的证书没有去进行相关的信任注册,没有去和浏览器厂商挂钩,而那些售卖的受信任证书就是去注册了并且和浏览器厂商挂钩了,所以浏览器才会认为是受信任的。
例如去访问12306网站的https协议时浏览器也是会显示不安全的连接:
https://www.12306.cn
这不是因为天朝没钱买证书,而是不信任那些外部购买过来的证书,所以才使用自己内部颁发的证书。
因此可以知道,显示这个警告的原因仅仅是因为浏览器没有认可这个证书,并非是真的不安全。
https原理详细可以参考以下两篇文章:
http://www.cnblogs.com/zery/p/5164795.html
http://www.jianshu.com/p/650ad90bf563
手动创建web工程
以上介绍了许多Tomcat服务器的相关配置,现在尝试手动创建一个web工程吧:
首先在Tomcat的webapps目录中创建一个工程文件夹,例如我创建一个名为myweb的一个文件夹:
在myweb目录下,创建一个WEB-INF文件夹
然后在WEB-INF目录下,分别创建classes和lib文件夹:
classes是用来存放编译后的java类文件的。
lib 里面则是存储jar包文件,也就是库文件
除了classes和lib文件夹外,你还可以创建一个web.xml文件,这个web.xml文件在以前的web工程中是必须的,但是现在则是可选的,你可以创建一个也可以选择不创建,为了简单我这里就不创建了,除了web.xml文件外这个WEB-INF目录下也可以存放JSP文件。
然后返回到myweb目录下,你站点的索引页可以放在这个目录下,所谓索引页就是index.html或者.jsp文件,当用户访问该web工程目录时不指定要访问的页面的话,就会默认访问这个索引页,所以要创建一个索引页文件,示例:
然后往这个html文件中写上一些内容:
到目前为止,我们的一个简单的web工程就构建好了,现在打开Tomcat服务器,然后使用浏览器访问这个web工程,就会默认访问index.html文件,然后根据里面的内容就会显示Hello My Web:
工程目录的结构的思维导图:
如果你不创建这个index.html索引页文件的话,就会出现404状态码,例如我现在把index.html给删掉再访问:
这个404状态码意思是找不到文件,这种情况出现于你访问一个不存在的文件时,就会出现这个状态码。
关于http状态码可参考以下教程:
http://www.runoob.com/http/http-status-codes.html
除此之外我们还可以把web工程打包成war包放在webapps目录下,这样也是发布工程的方式一种,所谓war包其实就是一个zip格式的压缩包,只不过后缀名改为了war罢了。现在就可以把刚刚构建的工程打成war包:
手动打war包的时候要注意一点,不要打包myweb这个目录,而是打包它里面的WEB-INF和index.html:
因为Tomcat是支持热部署的,所以需要先把Tomcat关掉,然后把war包剪切出来把原本的工程删掉,这时候就相当于发布了这个war包,接下来再把Tomcat启动,会发现war包被解压缩了:
这时候使用浏览器去访问myweb,依旧是显示Hello My Web:
如图代表发布成功。
除了手动构建工程和使用war包的方式发布工程外,还可以发布外部工程,也就是说发布不存放在webapps目录下的工程,这种叫做外部发布,例如我现在把war包剪切到E盘根目录下,并解压:
然后就是去server.xml中配置一段内容:
Context中的属性:
path 定义在浏览器URL上填写的访问工程名称
reloadable 定义是否支持热部署,所谓热部署也就是说只要某个文件的源码发生更改,服务器就会自动重新加载该web应用。
docBase 定义外部工程的路径
修改完配置文件后,通过浏览器访问myweb看看是否成功:
思维导图:
在Eclipse中创建Web工程
介绍完如何手动创建和发布web工程后,当然得试一下在Eclipse中创建并发布web工程,因为在实际的日常开发环境中一般极少会使用手动的方式去创建和发布web工程,都是通过工具来进行创建和发布,比如通过Eclipse(这里的Eclipse必须是for JavaEE版本)。
创建web工程之前我们首先得配置Tomcat到Eclipse中,打开Servers控制台:
打开后在下方可以看到Servers控制台:
然后点击上图中的那段文字,进入到以下界面:
开始配置:
现在Tomcat就配置好了,下方的Servers控制台也出现了Tomcat:
然后工程目录下也出现了Tomcat服务器的目录:
配置完Tomcat了,现在就可以创建一个web工程了,右键点击选择动态工程:
现在就创建好了这样的一个web工程:
现在我们在WEB-INF目录下,创建一个索引页文件(index.html):
编辑文件内容如下:
创建完成:
好了,web工程算是构建完成了,接下来就是进行发布到Tomcat服务器上了,右键点击Tomcat:
将工程添加进去:
现在打开Tomcat目录可以看到工程已经发布进去了:
接下来就是启动Tomcat并使用浏览器访问了:
启动成功,并且控制台上会打印很多日志信息:
通过浏览器访问:
成功访问
在Eclipse上虽然是发布工程到Tomcat,但是却不是发布到Tomcat主目录下的webapps目录中,现在打开webapps目录是找不到myweb工程的:
那么如何找到这个工程发布的路径呢?查看Tomcat启动时在控制台中打印的日志信息就可以找到:
复制路径,然后粘贴到“我的电脑”中的地址栏上,回车就可以进入到该目录:
这一点要注意:这是因为在Eclipse中运行的Tomcat是一个副本而不是原本,所以如果在Eclipse中修改server.xml配置文件时出现配置不生效的情况,可以去修改原本的server.xml文件试一下。