1, 传说中 java 的 class 文件可以一次编译到处运行, 那么源代码采用 GBK 还是 UTF-8 会有影响么?
不会有影响.
因为 Java 源代码通过编译后, 生成的 class 文件为字节码. 它可以被看作是包含一个执行程序的二进制文件, 需要在 JVM 进行执行.
而 GBK,UTF-8 等为字符编码格式, 针对的是字符, 如 Java 源代码.
2, 如果 lib 有 2 个不同版本的 jar, 例如 spring2.5,spring3, 还能安心干活么?
可能会引起 jar 包冲突.
Tomcat 下 Jar 包加载顺序:
1. $java_home/lib 目录下的 java 核心 API
2. $java_home/lib/ext 目录下的 java 扩展 jar 包
3. java -classpath/-Djava.class.path 所指的目录下的类与 jar 包
4. $CATALINA_HOME/common 目录下按照文件夹的顺序从上往下依次加载
5. $CATALINA_HOME/server 目录下按照文件夹的顺序从上往下依次加载
6. $CATALINA_BASE/shared 目录下按照文件夹的顺序从上往下依次加载
7. 我们的项目路径 / web-INF/classes 下的 class 文件
8. 我们的项目路径 / Web-INF/lib 下的 jar 文件
在同一个文件夹下, jar 包是按顺序从上到下依次加载
由 ClassLoader 的双亲委托模式加载机制我们可以知道, 假设两个包名和类名完全相同的 class 文件不再同一个
jar 包, 如果一个 class 文件已经被加载 java 虚拟机里了, 那么后面的相同的 class 文件就不会被加载了.
3, 如果 classes 有个 class 文件不小心被打到 jar 包去, 遗忘在 lib 目录, 以后更新 classes 会不会炸了?
不会有影响, 因为 class 文件会先加载. 当新的 class 文件更新至 classes 文件夹内以后会被先读取.
4,log4j.xml 放到 conf 目录会有问题么? 有什么区别没有?
log4j 启动时, 默认会寻找 source folder 下的 log4j.xml 配置文件, 若没有, 会寻找 log4j.properties 文件, 加载配置. 配置文件放置位置正确, 不用在程序中手动加载 log4j 配置文件. 如果将配置文件放到了 config 文件夹下, 在 build Path 中设置下就好了.
读取路径改为:
PropertyConfigurator.configure("config/log4j.properties");
5, 有人写了个 Niubility 的类放在 yy.war, 为什么我就调用不到呢, 明明同一个猫上跑的?
Tomcat 不支持跨应用调用类, 但是允许跨应用访问数据. 在 tomcat 下, context 元素有一个 crossContext 属性, 如果配置为 true, 则可以实现在同一个 tomcat 下的多个 Web 应用之间实现 ServletContext 对象访问.
6, 听说有 servlet3 支持异步可厉害了, 但放个 demo 到 tomcat6 会挂了, 我 lib 明明有高大上的 servlet-API.jar?
7, 听说 Web.xml 里边可以配置监听器 listener, 但它监听什么?
Servlet 的监听器 Listener, 它实现了 javax.servlet.ServletContextListener 接口, 由服务器端程序实现相关业务逻辑, 包括做一些初始化的内容添加工作, 设置一些基本的内容, 比如一些参数或者是一些固定的对象等等.
随 Web 应用的启动而启动, 只初始化一次, 随 Web 应用的停止而销毁. 也就是说, 它能捕捉到服务器的启动和停止, 在启动和停止触发里面的方法做相应的操作!
它必须在 Web.xml 中配置才能使用.
Web.xml 的加载顺序是: context-param -> listener -> filter -> servlet
8, 为什么不建议把 jsp 放在 war 的根目录下?
因为 war 的根目录下文件可以直接通过 url 直接进行访问. 那么用户可以在不具备权限的情况下, 可以对 jsp 文件进行访问, 看到部分相关内容.
来源: http://www.bubuko.com/infodetail-2912576.html