__fingerprint.java
来自「《J2EE企业级应用开发》一书的配套源代码」· Java 代码 · 共 353 行 · 第 1/2 页
JAVA
353 行
/* compiled from JSP: /fingerprint.jsp
*
* This code was automatically generated at 23:38:12 on 2001-4-14
* by weblogic.servlet.jsp.Jsp2Java -- do not edit.
*/
package jsp_servlet;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
// User imports
import java.io.File; //[ /fingerprint.jsp; Line: 4]import java.io.IOException; //[ /fingerprint.jsp; Line: 4]import java.util.Date; //[ /fingerprint.jsp; Line: 4]
// built-in init parameters:
// boolean _verbose -- wants debugging
// Well-known variables:
// JspWriter out -- to write to the browser
// HttpServletRequest request -- the request object.
// HttpServletResponse response -- the response object.
// PageContext pageContext -- the page context for this JSP
// HttpSession session -- the session object for the client (if any)
// ServletContext application -- The servlet (application) context
// ServletConfig config -- The ServletConfig for this JSP
// Object page -- the instance of this page's implementation class (i.e., 'this')
/**
* This code was automatically generated at 23:38:12 on 2001-4-14
* by weblogic.servlet.jsp.Jsp2Java -- do not edit.
*
* Copyright (c) 2001 by BEA Systems, Inc. All Rights Reserved.
*/
public final class __fingerprint
extends
weblogic.servlet.jsp.JspBase
implements weblogic.servlet.jsp.StaleIndicator
{
//[ /fingerprint.jsp; Line: 10] //[ /fingerprint.jsp; Line: 11] /* //[ /fingerprint.jsp; Line: 12] * Fingerprint the users system. This is mainly for use in //[ /fingerprint.jsp; Line: 13] * diagnosing classpath problems. It is intended to dump out //[ /fingerprint.jsp; Line: 14] * a copy of the environment this webapp is running in, //[ /fingerprint.jsp; Line: 15] * and additionally attempt to identify versions of each jar //[ /fingerprint.jsp; Line: 16] * in the classpath. //[ /fingerprint.jsp; Line: 17] * //[ /fingerprint.jsp; Line: 18] * @author Brian Ewins //[ /fingerprint.jsp; Line: 19] */ //[ /fingerprint.jsp; Line: 20] //[ /fingerprint.jsp; Line: 21] private java.util.Properties versionProps=new java.util.Properties(); //[ /fingerprint.jsp; Line: 22] //[ /fingerprint.jsp; Line: 23] /** //[ /fingerprint.jsp; Line: 24] * Identify the version of a jar file. This uses a properties file //[ /fingerprint.jsp; Line: 25] * containing known names and sizes in the format //[ /fingerprint.jsp; Line: 26] * 'name(size)=version'. Version strings should be like 'xerces-1.4' //[ /fingerprint.jsp; Line: 27] * ie they should include the name of the library. //[ /fingerprint.jsp; Line: 28] */ //[ /fingerprint.jsp; Line: 29] public String getFileVersion(File file) throws IOException { //[ /fingerprint.jsp; Line: 30] String key="<td>"+file.getName()+"</td>"; //[ /fingerprint.jsp; Line: 31] key+= "<td>"+file.length()+"</td>"; //[ /fingerprint.jsp; Line: 32] Date timestamp=new Date(file.lastModified()); //[ /fingerprint.jsp; Line: 33] key+= "<td>"+timestamp.toString()+"</td>"; //[ /fingerprint.jsp; Line: 34] return key; //[ /fingerprint.jsp; Line: 35] //[ /fingerprint.jsp; Line: 36] /* TODO: implement //[ /fingerprint.jsp; Line: 37] String value=versionProps.getProperty(key); //[ /fingerprint.jsp; Line: 38] if (value==null) { //[ /fingerprint.jsp; Line: 39] // make it possible to have jars without version nos //[ /fingerprint.jsp; Line: 40] value=versionProps.getProperty(file.getName()); //[ /fingerprint.jsp; Line: 41] } //[ /fingerprint.jsp; Line: 42] if (value==null) { //[ /fingerprint.jsp; Line: 43] // fall back on something obvious //[ /fingerprint.jsp; Line: 44] value=key; //[ /fingerprint.jsp; Line: 45] Date timestamp=new Date(file.lastModified()); //[ /fingerprint.jsp; Line: 46] value+=" / "+timestamp.toString(); //[ /fingerprint.jsp; Line: 47] } //[ /fingerprint.jsp; Line: 48] return value; //[ /fingerprint.jsp; Line: 49] */ //[ /fingerprint.jsp; Line: 50] } //[ /fingerprint.jsp; Line: 51] //[ /fingerprint.jsp; Line: 52] /** //[ /fingerprint.jsp; Line: 53] * Split up a classpath-like variable. Returns a list of files. //[ /fingerprint.jsp; Line: 54] * TODO: this can't cope with relative paths. I think theres code in BCEL that //[ /fingerprint.jsp; Line: 55] * can be used for this? //[ /fingerprint.jsp; Line: 56] */ //[ /fingerprint.jsp; Line: 57] File[] splitClasspath(String path) throws IOException { //[ /fingerprint.jsp; Line: 58] java.util.StringTokenizer st= //[ /fingerprint.jsp; Line: 59] new java.util.StringTokenizer(path, //[ /fingerprint.jsp; Line: 60] System.getProperty("path.separator")); //[ /fingerprint.jsp; Line: 61] int toks=st.countTokens(); //[ /fingerprint.jsp; Line: 62] File[] files=new File[toks]; //[ /fingerprint.jsp; Line: 63] for(int i=0;i<toks;i++) { //[ /fingerprint.jsp; Line: 64] files[i]=new File(st.nextToken()); //[ /fingerprint.jsp; Line: 65] } //[ /fingerprint.jsp; Line: 66] return files; //[ /fingerprint.jsp; Line: 67] } //[ /fingerprint.jsp; Line: 68] //[ /fingerprint.jsp; Line: 69] /** given a list of files, return a list of jars which actually exist */ //[ /fingerprint.jsp; Line: 70] File[] scanFiles(File[] files) throws IOException { //[ /fingerprint.jsp; Line: 71] File[] jars=new File[files.length]; //[ /fingerprint.jsp; Line: 72] int found=0; //[ /fingerprint.jsp; Line: 73] for (int i=0; i<files.length; i++) { //[ /fingerprint.jsp; Line: 74] if (files[i].getName().toLowerCase().endsWith(".jar") //[ /fingerprint.jsp; Line: 75] && files[i].exists()) { //[ /fingerprint.jsp; Line: 76] jars[found]=files[i]; //[ /fingerprint.jsp; Line: 77] found++; //[ /fingerprint.jsp; Line: 78] } //[ /fingerprint.jsp; Line: 79] } //[ /fingerprint.jsp; Line: 80] if (found<files.length) { //[ /fingerprint.jsp; Line: 81] File[] temp=new File[found]; //[ /fingerprint.jsp; Line: 82] System.arraycopy(jars,0,temp,0,found); //[ /fingerprint.jsp; Line: 83] jars=temp; //[ /fingerprint.jsp; Line: 84] } //[ /fingerprint.jsp; Line: 85] return jars; //[ /fingerprint.jsp; Line: 86] } //[ /fingerprint.jsp; Line: 87] //[ /fingerprint.jsp; Line: 88] private static final File[] NO_FILES=new File[0]; //[ /fingerprint.jsp; Line: 89] //[ /fingerprint.jsp; Line: 90] /** scan a directory for jars */ //[ /fingerprint.jsp; Line: 91] public File[] scanDir(String dir) throws IOException //[ /fingerprint.jsp; Line: 92] { //[ /fingerprint.jsp; Line: 93] return scanDir(new File(dir)); //[ /fingerprint.jsp; Line: 94] } //[ /fingerprint.jsp; Line: 95] //[ /fingerprint.jsp; Line: 96] public File[] scanDir(File dir) throws IOException { //[ /fingerprint.jsp; Line: 97] if (!dir.exists() || !dir.isDirectory()) { //[ /fingerprint.jsp; Line: 98] return NO_FILES; //[ /fingerprint.jsp; Line: 99] } //[ /fingerprint.jsp; Line: 100] return scanFiles(dir.listFiles()); //[ /fingerprint.jsp; Line: 101] } //[ /fingerprint.jsp; Line: 102] //[ /fingerprint.jsp; Line: 103] /** scan a classpath for jars */ //[ /fingerprint.jsp; Line: 104] public File[] scanClasspath(String path) throws IOException { //[ /fingerprint.jsp; Line: 105] if (path==null) { //[ /fingerprint.jsp; Line: 106] return NO_FILES; //[ /fingerprint.jsp; Line: 107] } //[ /fingerprint.jsp; Line: 108] return scanFiles(splitClasspath(path)); //[ /fingerprint.jsp; Line: 109] } //[ /fingerprint.jsp; Line: 110] //[ /fingerprint.jsp; Line: 111] /** //[ /fingerprint.jsp; Line: 112] * scan a 'dirpath' (like the java.ext.dirs system property) for jars //[ /fingerprint.jsp; Line: 113] */ //[ /fingerprint.jsp; Line: 114] public File[] scanDirpath(String path) throws IOException { //[ /fingerprint.jsp; Line: 115] if (path==null) { //[ /fingerprint.jsp; Line: 116] return NO_FILES; //[ /fingerprint.jsp; Line: 117] } //[ /fingerprint.jsp; Line: 118] File[] current=new File[0]; //[ /fingerprint.jsp; Line: 119] File[] dirs=splitClasspath(path); //[ /fingerprint.jsp; Line: 120] for(int i=0; i<dirs.length; i++) { //[ /fingerprint.jsp; Line: 121] File[] jars=scanDir(dirs[i]); //[ /fingerprint.jsp; Line: 122] File[] temp=new File[current.length+jars.length]; //[ /fingerprint.jsp; Line: 123] System.arraycopy(current,0,temp,0,current.length); //[ /fingerprint.jsp; Line: 124] System.arraycopy(jars,0,temp,current.length,jars.length); //[ /fingerprint.jsp; Line: 125] current=temp; //[ /fingerprint.jsp; Line: 126] } //[ /fingerprint.jsp; Line: 127] return scanFiles(current); //[ /fingerprint.jsp; Line: 128] } //[ /fingerprint.jsp; Line: 129] //[ /fingerprint.jsp; Line: 130] /** print out the jar versions for a directory */ //[ /fingerprint.jsp; Line: 131] public void listDirectory(String title, JspWriter out,String dir, String comment) throws IOException { //[ /fingerprint.jsp; Line: 132] listVersions(title, out,scanDir(dir), comment); //[ /fingerprint.jsp; Line: 133] } //[ /fingerprint.jsp; Line: 134] //[ /fingerprint.jsp; Line: 135] /** print out the jar versions for a directory-like system property */ //[ /fingerprint.jsp; Line: 136] public void listDirProperty(String title, JspWriter out,String key, String comment) throws IOException { //[ /fingerprint.jsp; Line: 137] listVersions(title, out,scanDir(System.getProperty(key)), comment); //[ /fingerprint.jsp; Line: 138] } //[ /fingerprint.jsp; Line: 139] //[ /fingerprint.jsp; Line: 140]
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?