Tomcat服务器启动不了的原因
- java的环境变量没配置好。
- Tomcat服务器要用的端口号被占用了,服务管理器删掉占用端口的程序或者在我的电脑的管理上停止占用端口的服务。
- Catalina_home环境变量,配了该变量,任意的服务器启动程序都会启动该变量下的服务器。
Tomcat的目录结构
- bin:存放启动和关闭Tomcat的脚本文件。
- conf:存放Tomcat服务器的各种配置文件。
- lib:存放Tomcat服务器的支撑jar包。
- logs:存放Tomcat的日志文件。
- temp:存放Tomcat运行时产生的临时文件。
- webapps:web应用所在目录,即供外界访问的web资源的存放目录。
- work:Tomcat的工作目录。
WAR包
把web应用打成war包:cmd进入到应用所在的目录:jar -cvf 应用名称.war 应用名称
虚拟目录的映射
web应用开发好后,若想提供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚拟目录的映射。
在Tomcat的server.xml文件中配置context元素。如:
<Context path="/itcast" docBase="c:\news"/>
,配置web应用程序到服务器上后,需要重启服务器。配置元素中的reloadable属性能让web应用自动被服务器加载。把web应用放到tomcat服务器下的webapps目录,tomcat服务器会自动映射该目录下的所有web应用。
配置虚拟主机
在一个tomcat服务器中可以放置多个网站,所谓配置虚拟主机,就是在tomcat服务器中配置一个网站。
如:在server.xml中设置:<Host name="fjh" appBase="c:\app"></Host>
配置的主机(网站)要想被外部访问,必须在DNS服务器或windows系统中注册。
IE浏览器访问网站时,先查看本地系统的Hosts文件,再去查看DNS服务器,找到域名对应的IP地址。
Web应用的目录结构
开发web应用时,不同类型的文件有严格的存放规则,否则不仅可能会使web应用无法访问,还会导致web服务器启动报错。
- html、jsp、css、js等这些文件一般存在web应用根目录,根目录下的文件外界可以直接访问。
- WEB-INF目录:该目录下的文件外界无法非法直接访问,由web服务器负责调用。
- classes目录:存放java源码编译后的字节码文件(class文件)。
- lib目录:java类运行所需的jar包。
- web.xml文件:web应用的配置文件。
web.xml文件是整个web应用中最重要的配置文件,它必须放在WEB-INF目录中。在开发web应用时,但凡涉及到对web应用中的web资源进行配置,通通是在web.xml文件进行设置。
例如:把某个web资源配置为网站首页。
1. 将servlet程序映射到某个url地址上。
2. 为web应用配置监听器。
3. 为web应用配置过滤器。
web资源访问流程
- 查询windows,获取主机名对应的ip。
- 查询dns,获取主机名对应的ip。
- 用查询的ip连上目标服务器。
- 发送http请求。
- 从请求信息中获得客户机想访问的主机名。
- 从请求信息中获得客户机想访问的web应用。
- 从请求信息中获得客户机想访问的web资源。
- 读取相应主机下的、web应用下的web资源。
- 用读取到的web资源的数据,创建出一个http响应。
- 服务器回送http响应。
- 浏览器收到http响应,解析出资源数据显示。
web相关的概念
web:表示Internet主机上提供外界访问的资源。
web应用程序:供浏览器访问的程序。
Internet上提供访问的web资源分为静态资源和动态资源。
- 静态资源:指WEB页面中供人们浏览的数据始终是不变。静态WEB资源开发技术:HTML
- 动态WEB资源:指WEB页面中供人们浏览的数据是由程序产生的,不同时间点访问WEB页面看到的内容各不相同。动态WEB资源开发技术:JSP/Servlet,ASP,PHP
在JAVA中,动态WEB资源开发技术统称为JavaWeb。
//简单的服务器程序
import java.net.*;
import java.io.*;
public class Server{
public static void main(String args[]) throws Exception{
ServerSocket server=new ServerSocket(6666);
Socker socket=server.accept();
FileInputStream in=new FileInputStream("c:\\1.html");
OutputStream out=socket.getOutputStream();
int len=0;
byte buffer[] =new byte[1024];
while((len=in.read(buffer))>0){
out.write(buffer,0,len);
}
in.close();
out.close();
socket.close();
server.close();
}
}
配置https连接器
软件密码学
- 对称加密:用同一个密钥加密;
- 非对称加密:用公钥和私钥加密,公钥加密的数据只能私钥解,私钥加密的数据只能公钥解;
- CA(第三方机构):数字证书—公钥;数字签名—私钥;
java命令:keytool -genkey -alias tomcat -keyalg RSA
—生成密钥库(keystore),需要自己设置密钥库的密码。
在server.xml中配置加密的https连接器
<Connector
port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https"
secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="conf/.keystore" keystorePass="123456"/>
此处配置的只是单向加密连接器。实际开发中应配置https双向加密连接器。
https://localhost:8443—连接加密了的连接器。