一、testclassloader.jar包在哪
深刻理解java的配置环境以及java的执行过程对做好开发是十分重要的。 类加载器ClassLoader 便是其中非常重要的概念。 本文简单并演示Java类加载器的一些特点,不妥之处,敬请指出。 背景: A.java 引用 了B.jar 中的一个文件,B.jar 包中的C.class 使用了C.class.getResourceAsStream(/jdbc.xml)获取资源文件。 B.jar 做一个独立的功能的工具,使用方只要提供对应的jdbc.xml 配置文件即可在dev qa prod 各个环境使用啦。 但是问题来了,在web下和java命令行情况下,jdbc.xml 文件放置的位置大不相同,因为web 和java命令下 B.jar 中加载C.class的类加载器不同! 类加载器的分类: 1、启动类加载器(Bootstrap ClassLoader) 这个类有c++语言实现,是虚拟机的一部分。 2、所有其他类加载器。其他类加载器都继承抽象类java.lang.ClassLoader。 做为java的大部分项目,都是有以下三类类加载器加载的: 1、启动类加载器。加载的内容为:<JAVA_HOME/lib 目录中的jar包。 2、扩展类加载器。加载的内容为:java.ext.dirs 系统变量指定的路径中所有类库。实现为:sun.misc.Launcher$ExtClassLoader 实现。 3、应用类加载器。实现为:sun.misc.Launcher$AppClassLoader。负责加载用户类路径上指定的类库。 下面我们看个例子:
Java代码
package org.job.user;
import org.apache.commons.lang.StringUtils;
public class Test {
public static void main(String[] args) {
System.out.println(Thread.currentThread().getContextClassLoader());
System.out.println(StringUtils.class.getClassLoader());
System.out.println(StringUtils.class.getResource(/));
System.out.println(Test.class.getResource(/));
System.out.println(StringUtils.class.getResourceAsStream(/jdbc.xml));
System.out.println(Test.class.getResourceAsStream(/jdbc.xml));
}
}
二、java 某个类型是属于哪个包,用什么查看
在eclipse中,在类型上按f2看信息、F3跳转到、 F4看继承关系
~
三、StringUtils.java 工具类是不是在JDK1.6版本中取消了
在linux下用jdk1.6写了个程序,编译打包后,一切正常,拿到win下,同样是1.6的jdk,居然说什么不兼容的编译类型,非法的magicnumber.只好在linux下用jdk1.4.2这个经典的版本重新编译一下,结果就发现了下面两个不同:1.在1.4.2中,assert是keyword,不可以assert(booleanexpression):(String)这样来用,考试.大提示在1.6中是可以的。在1.4.2下编译时,会给出warning:asofrelease1.4,assertisakeyword,andmaynotbeusedasanidentifier,并且会报错,说是分号的错误(其实是编译器把assert当作identifier来处理报的错)。2.在1.4.2中,不可以如下这样来overrideclone()方法publicNewClassclone(){returnNewClass;}这在1.6中是允许的,也是方便的。在1.4.2中只能publicObjectclone(){return;}于是就有了N多的强制类型转换。
四、stringutils.isblank 在哪个包里
StringUtils在commons-lang-2.2.jar包中:org.apache.commons.lang.StringUtils ;
五、stringutils.hastext 在哪个包
过滤器(Filter)这个只和web.xml有关系, 和IDE无关
你的web文件下/WEB-INF/web.xml 这个文件
比如说有这e799bee5baa6e59b9ee7ad样一个Filter 类文件
//====
package net.coldsky.common.webapp.filter;
import net.coldsky.common.util.StringUtils;
import java.io.IOException;
import javax.servlet.*;
/**
* 字体编码转换过滤器
* */
public class EncodingFilter implements Filter{
private static final String ENCODING = encoding;
private static final String IGNORE_EXIST_ENCODING = ignoreExistEncoding;
private String encoding = ServerConfig.getCharacterEncoding();//默认编码
private boolean ignoreExistEncoding = true; //忽略已存在的编码
public void init(FilterConfig config) throws ServletException {
if(StringUtils.hasText(config.getInitParameter(ENCODING))){
encoding = config.getInitParameter(ENCODING);
}
String value = config.getInitParameter(IGNORE_EXIST_ENCODING);
if (value == null || value.equalsIgnoreCase(true)
|| value.equalsIgnoreCase(yes)) {
this.ignoreExistEncoding = true;
} else {
this.ignoreExistEncoding = false;
}
}
public synchronized void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (ignoreExistEncoding || request.getCharacterEncoding() == null) {
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
request.getAttribute();
response.getCharacterEncoding();
}
chain.doFilter(request, response);
}
public void destroy() {}
}
//====
这样配置web.xml
encodingFilter
net.coldsky.webapp.filter.EncodingFilter
encoding
utf-8
ignoreExistEncoding
true
encodingFilter
*.do