上节课讲了tomcat的多端口访问方式,以及server.xml的配置文件修改方法
那么我们的web.xml是干什么的?
这节课我们首先学下war包
image.png
war包 是一个非常方便的部署方式 可以把我们的网站通过压缩的方式打一个包 直接部署到我们的服务器上(tomcat)
tomcat启动后 会自动进行解压
下面演示一下 使用静态的方式进行打包
首先在下面的目录创建个test文件夹 里面创建个index.html文件
如下
image.png
那么如何对里面的内容进行打包
我们来到cmd
image.png
来到想要打包目录 执行jar -cvf test.war . 其中test.war是随便起的名字 后面的空格和点代表的是当前目录下所有文件进行打包
执行命令后可以发现
test目录中出现了test.war包
image.png
当我们做完网站直接打成war包 发送给队友
那么队友如何操作呢
首先拷贝test.war包到tomcat的webapps网站默认目录下
image.png
在linux环境下确保这个文件夹是有权限来生成的 因为启动tomcat时候会自动解压这个war包 会在webapps目录下自动创建个文件夹名为test
接下来启动下tomcat
可以发现出现了test文件夹
image.png
浏览器访问localhost:8080/test
结果如下
image.png
可以非常方便的访问我们做的应用
以上就是最简单的war包打包 和解压方式 我们都是通过静态文件的方式访问的
那么如果我们在webapps的test目录下创建个index.jsp 不要index.html文件了
内容如下
image.png
再次浏览器访问
image.png
出现了index.jsp 因为index.jsp是默认的地址 在我们的配置文件中默认有几个文件是存在的 起始首页
为什么输入localhost:8080/test/index.jsp可以访问?
image.png
而index.asp不能访问
image.png
接下来看下基本的过程
image.png
当我们使用浏览器去访问tomcat的时候 我们可以发现html jsp没有问题 如果写成asp或者abc则会出现问题
实际上在tomcat里 不管访问后缀是html还是jsp tomcat本身并不会识别 它需要把识别的过程交给一个程序 程序处理好了之后 把内容变为html 我们http协议能理解的内容还给tomcat。tomcat把内容输出给浏览器 这里面会有个http传输的过程 浏览器和tomcat传输的是http协议 tomcat和程序之间 tomcat只作为一个传输的工具 并不知道如何去解析jsp或者html
这个程序有两个层面
一种是tomcat自带的一些解析程序来解析我们后缀为html或者jsp这样的内容
还有一部分程序是我们自己可以去写的
接下来我们学习下servlet
image.png
tomcat里面内置了一些servlet 可以帮我们处理一些后缀为jsp的文件
servlet容器在tomcat中有两大方面
image.png
功能一 当我们浏览器访问tomcat时候 根据http协议返回相应的内容
功能二 tomcat中有一个内置的servlet 处理和交互的过程 当我们内置的servlet搞不定时候 需要自己写servlet
image.png
来到tomcat目录 打开conf
里面的web.xml 这是我们网站的配置文件
其中tomcat有两大功能
server.xml 就是为功能一使用的 (充当socket服务端)
web.xml就是为功能二使用的(servlet于tomcat进行交互)
打开web.xml
image.png
image.png
image.png
可以发现servlet和servlet-mapping配置节点是成对出现的
其中servlet 节点里的servlet-class节点对应的包名一定存在于tomcat里
而servlet-mapping中的url-pattern为访问地址的规则
根据url匹配规则的后缀找到处理程序的控制权(即哪个servlet)
默认首页的配置后缀
image.png
当浏览器访问域名加端口后面带/时 会寻找目录下面的index.html 或者index.jsp如果都找不到则报错
那么是否可以自定义配置 将后缀改为abc使其可以访问呢?
下面演示一下
首先在webapps的test目录下创建个bhc.abc文件
里面如下
image.png
浏览器访问
image.png
服务器把这个文件当做普通文件进行了输出
下面写段测试代码
在index.jsp里写入一段java代码
image.png
修改bhc.abc
image.png
浏览器访问
localhost:8080/test
image.png
localhost:8080/test/bhc.abc
image.png
可以发现bhc.abc里面的内容原样输出了 而index.jsp解析了代码
因为没有把后缀为abc的程序交给我们的 jsp servlet处理
接下来修改下配置文件使其支持访问后缀abc的文件
来到web.xml
image.png
添加上面内容 表示把我们的后缀为abc的文件也交给jsp servlet处理
重启tomcat
再次运行localhost:8080/test/bhc.abc
image.png
可以发现我们后缀为abc的文件也被jsp servlet解析了。