发表于: 2025-06-26 20:48:17
0 4
今天的计划:学习深度思考。
48.War包是什么,为什么WEB服务通常打出来的都是War包?除了War包,还有几种打包格式,他们之间的区别呢?
1.背景介绍
WAR是Sun提出的一种Web应用程序格式,是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类。
2.知识剖析
一个war包有什么样的结构?
war包就是一个web应用的打包格式,一个web应用,需要一个用户交互的界面,负责给用户提供信息输入的地方,即jsp页面。数据需要保存下来,jsp把网页上的数据穿送给后台的java类,java类在得到这些数据之后再进行数据相关的工作,如存入数据库,给出相关统计数据等等。
3.常见问题
为什么WEB服务通常打出来的都是War包?
Java web工程,都是打成war包,进行发布,打成war包的好处是不会缺少目录,并且只管理好一个发布文件就好,并且tomcat服务器能够自动识别,将war包放在tomcat容器的webapps下,启动服务,即可运行该项目,该war包会自动解压出一个同名的文件夹。
除了War包,还有几种打包格式,他们之间的区别呢?
49.Put请求在Linux下的Tomcat或者是Resin中会收不到数据,怎么解决这个问题,原因是什么?为什么本地使用Jetty的时候往往是正常的?
tomcat 默认就是不允许PUT和DELETE的
AJAX
Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。
Ajax = 异步 JavaScript 和 XML(标准通用标记语言的子集)。
Ajax 是一种用于创建快速动态网页的技术。
Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。
为什么会收不到PUT请求
下载Tomcat源码,打开如下路径
\apache-tomcat-9.0.0.M10-src\java\org\apache\catalina\connector
找到Request.java
在3121行有处理请求类型的方法
protected void parseParameters() {
下面有一个判断,否则返回,是则继续
if( !getConnector().isParseBodyMethod(getMethod()) ) {
success = true;
return;
}
继续的内容大概是获取form表单的内容,打包成Map格式返回
查找getConnector,看到
public Connector getConnector() {
return this.connector;
}
打开Connector.java
查找isParseBodyMethod,得到
protected boolean isParseBodyMethod(String method) {
return parseBodyMethodsSet.contains(method);
}
查找parseBodyMethodsSet,找到如下语句:
this.parseBodyMethods = methods;
this.parseBodyMethodsSet = methodSet;
setProperty("parseBodyMethods", methods);
}
查找parseBodyMethods,会看到
protected String parseBodyMethods = "POST";
回到if( !getConnector().isParseBodyMethod(getMethod()) ) {
这个判断,也就是说,如果非POST则返回,是POST就继续执行
所以我们使用PUT返回的是空值
明天的计划:把深度思考学习完,开始任务三。
评论