diff --git a/README.html b/README.html new file mode 100644 index 0000000..76af65b --- /dev/null +++ b/README.html @@ -0,0 +1,210 @@ +

KIFT——快捷、强大、小巧的开源网盘系统

+ +

【青阳网络文件系统自述文档】

+ +
+ +

简介

+

本应用是一款快捷的网络文件分享工具——您可以把它看成是一款简化的“网盘”,它可以运行在普通的家用PC上,而且即使是没有什么经验的用户也能成功安装并使用它。它具备很多高级功能,例如视频的在线播放,而且还在不断地添加新功能。

+

本应用的作者相信,不仅仅是他本人,还有很多人需要在局域网内搭建起一个简便的网盘系统以便让所有在同一局域网内的同事或同学都能够使用随处可见的浏览器去访问、上传或下载若干文件——无论是不足1MB的文本,还是超过4GB的1080p视频,而且它最好安装简单,界面便捷,还要有必备的管理功能。实际上,kiftd的设计初衷正是为了满足这一需求。作者最初编写它的目的是能够在办公室和教室内将自己的资料快速分发给学生或其他老师,在作者成功弄丢了几次U盘之后,便萌生了设计这样一款应用的想法。 本应用使用java开发,因此可以部署在windows/Linux/Unix(包括Mac os X)之中的任意系统上,只要安装java 8及以上环境。

+ +

kift有哪些亮点?

+ +
+

资源导航

+立即搭建一个网盘:您可以阅读github上的快速开始:https://github.com/KOHGYLW/kiftd/wiki。 +

如果您无法访问互联网,也可以阅读下面的现在开始使用!一章。 +

+

如果需要查看各项设置的设置方式,请参阅基本设置一章。

+作为开发者:下载源代码请前往这个地址:https://github.com/KOHGYLW/KohgylwIFT +
+ +

现在开始使用!

+

+ 如果您使用本应用,即视为同意下列条款: +

+

+ +

1分钟快速部署:

+ +

第一步:首先,您需要在您的计算机上安装java 8或以上版本的java环境,这是本应用运行的先决条件。java的安装并不麻烦,您可以很快完成它。

+ +

第二步:按照下列操作启动您的服务器: +

    +
  1. 首先,进入本应用的主目录。
  2. +
  3. 进入bin目录,以管理员权限运行startup.bat文件(适用于windows用户)/在终端执行命令:$ sudo ./startup.sh (适用于Linux、Unix、Mac OS X用户)。这一步会启动服务器。
  4. +
  5. 如果服务器启动成功,则可以使用浏览器(推荐使用Chrome或FireFox或其内核的浏览器)访问127.0.0.1进入到本应用主页。(如果您用的是360安全浏览器,那么您应该使用“极速模式”访问本应用)
  6. +
+ 注:部署过程毫无难度,而且即使失败了也不会对您的系统产生任何负面影响,您可以放心大胆地多次尝试。 +

+

如果您访问成功,会看到如下效果:

+
+

现在,您已经可以让他人访问您的网盘了。就是这么简单。

+

*如何让他人访问:如果您需要他人访问您的网盘,请在局域网内其他主机上,使用浏览器访问您本机IP地址,即可进入本系统。 例如 http://192.168.1.2/ 其中IP地址部分需根据您的计算机IP地址进行替换。

+

*如何使用上传、修改等功能:您可以先使用内置用户(admin,000000)进行登录并进行全部权限的操作。至于如何修改用户密码或添加更多的用户,请阅读后面的 + 《用户授权》部分。

+
+

如何关闭服务器

+

如果您需要关闭本应用,请bin目录,运行shutdown.bat文件(适用于windows用户)/在终端执行命令:$ ./shutdown.sh (适用于Linux、Unix、Mac OS X用户)。这一步会关闭服务器。

+
+

查看运行日志

+

本应用记录的日志文件存放在“~/文档/KohgylwIFT/log”路径下。日志文件的标题为日志产生的日期,以“klog”作为后缀。日志文件的内容以纯文本格式进行记录,您可以使用文本编辑器(例如“记事本”)打开它们并查看其内容。

+
+

主要功能介绍及展示

+

各种文件的上传、下载、删除和管理

+

这些都是一个网盘最基本的功能, 本系统尽可能的将它们做的简单易用,让您在使用部署时几乎没有学习成本。 界面简单高效也是本系统的特色之一:本人相信对于大多数喜欢体验开源技术的用户而言,一个高速、流畅、干净又足够硬派的系统远比一个界面华丽却相应缓慢的系统更具有吸引力。如下图,这是文件列表的基本效果,其中可以点击的是文件夹,不可点击的为文件。 +

+
+

mp4与webm格式资源在线播放

+

上传至本系统的全部mp4资源和webm资源均可使用在线播放功能(用户需具备[下载]权限才可播放视频),不限大小和长度。操作方式为:点击文件后方操作栏中的“播放”按钮,会自动打开播放页面并在线播放。点击页面右上方“关闭”按钮停止播放并关闭播放页面。效果如下:

+
+

PDF文档在线预览

+

您可以直接查看PDF文档的内容而无需下载它。在线查看提供了页数跳转、旋转、搜索等功能。这个功能是为了方便办公环境下更好的区分不同版本的PDF文档,有些文档可能看上去很像但是内容有细微差别,例如不同日期的工作报表。这种情况下,使用在线预览功能会方便许多。效果如下:

+
+

图片在线查看

+

本应用也支持bmp、jpg、jpeg、png、gif五种常见图片格式的在线查看。您可以通过它快速查找全部文件列表中您所中意的那张图片。效果如下:

+
+
+

基本设置

+

为了方便个人操作,本应用的全部设置都基于文件配置。您可能对这种配置方式不太熟悉甚至觉得它很高深,不过不用担心,请跟着下面的说明大胆尝试一下,之后,您可能会喜欢上这种配置方式并体会到它的优点。

+

增加用户

+
    +
  1. 请进入:“ 应用主目录/webapps/ROOT/etc ”这个目录。
  2. +
  3. 使用文本编辑器(例如记事本)打开名为“ configure.properties ”的文件。
  4. +
  5. 在该文件中找到如下内容:
  6. +
    +		...
    +		#[Set the account(who can login) list]
    +		#Example:
    +		#account.list = user1,user2,user3...
    +		accounts.list = admin
    +		...
    +	
    +
  7. 增加一个用户名为“test”:
  8. +
    +		...
    +		accounts.list = admin,test
    +		...
    +	
    + 注意:分割两个用户名的逗号必须是英文逗号 +
+

至此,一个名为test的用户已经创建完毕。

+

设置用户密码

+
    +
  1. 在该文件中找到如下内容:
  2. +
    +		...
    +		#[Set the password for every account]
    +		#Example:
    +		#pwd.user1 = 123456
    +		#pwd.user2 = abcdef
    +		#...
    +		pwd.admin = 000000
    +		...
    +	
    +
  3. 为“test”用户设置登录密码为“123456”:
  4. +
    +		...
    +		pwd.test = 123456
    +		...
    +	
    +
+

现在,用户test可以使用密码123456进行登陆了。

+

设置用户操作权限

+
    +
  1. 在该文件中找到如下内容:
  2. +
    +		#[Set the permission for accounts]
    +		#c = Create the new folder
    +		#u = Upload files
    +		#d = Delete files or folders
    +		#r = Rename files or folders
    +		#l = downLoad files
    +		#Defult setting:l
    +		#Example:
    +		#auth.admin = cudr
    +		#auth.user1 = u
    +		#...
    +		auth.admin = cudr
    +		#overall -- this value set the permission for all user (include visitor who not login)
    +		#Example:
    +		#authOverall = none
    +		authOverall = l
    +	
    +
  3. 设置test用户除了可以下载文件之外,还可以上传文件(但他无法创建文件夹,无法进行删除操作,也无法对已有文件进行重命名):
  4. +
    +		...
    +		auth.admin = cudr
    +		auth.test = u (增加这一行)
    +		...
    +	
    +
+

最终,我们新创建的用户test就可以在登陆后进行上传操作了(authOverall一项设置的是匿名用户和全部用户共有的基本权限,例如默认设置为l的意思是所有用户和匿名用户均可执行下载操作)

+

注:各个字母代表的权限如下:

+ +

修改下载缓冲区大小

+

所谓下载缓冲区:它的设置决定了服务器为每位执行下载的用户开辟多大的内存作为其下载数据的缓冲区。默认情况下您无需修改这个值,除非您的内存过小或者您需要同时服务规模庞大的用户。

+
    +
  1. 还是在配置文件“ configure.properties ”中,找到以下内容:
  2. +
    +		...
    +		#[Set the size of the buffer memory for file download by byte]
    +		#This value depending on your network speed and your memory size
    +		#Example:
    +		#buff.size=1048576
    +		#Default value:1048576
    +		#Bigger buffer size will use bigger memory and provide users faster download speed(No faster than network speed)
    +		buff.size=1048576
    +		...
    +	
    +
  3. 将每位用户的下载缓冲区改为512KB:
  4. +
    +		...
    +		buff.size = 524288
    +		...
    +	
    +
+

该值越大,对内存的需求量就越高,同时硬盘的读取次数就越低,您应该根据您的硬盘性能、内存大小和网络速度三者进行综合考虑,并设置该值。如果您对此不了解,请勿修改默认值。

+

设置日志记录方式

+

本日志分为两种类型,分别为“异常”和“事件”。其中,“异常”记录的是服务器运行中产生的意外错误,“事件”记录的是用户的操作历史。

+
    +
  1. 在配置文件中找到如下内容:
  2. +
    +		...
    +		#[Set the logging level]
    +		#This setting determines what info need to log.
    +		#R = Runtime exception only.
    +		#E = important Events include runtime exception,operation of delete download rename and upload(create).
    +		#N = No activity will be logged.
    +		#default setting(if program not found this setting):R.
    +		#Example:
    +		#log=E
    +		log=E
    +		...
    +	
    +
  3. 将日志记录方式改为不记录任何信息:
  4. +
    +		...
    +		log=N
    +		...
    +	
    +
+

我们推荐使用默认的日志记录方式,它会记录所有异常信息和用户的操作过程,您可以通过这些记录更好地进行管理。

+
+ +@kohgylw 青阳龙野 \ No newline at end of file diff --git a/img/filesystem.png b/img/filesystem.png new file mode 100644 index 0000000..9b3891f Binary files /dev/null and b/img/filesystem.png differ diff --git a/img/mainpage.png b/img/mainpage.png new file mode 100644 index 0000000..219444f Binary files /dev/null and b/img/mainpage.png differ diff --git a/img/palymovie.png b/img/palymovie.png new file mode 100644 index 0000000..3f8894f Binary files /dev/null and b/img/palymovie.png differ diff --git a/img/seepdf.png b/img/seepdf.png new file mode 100644 index 0000000..1ee1291 Binary files /dev/null and b/img/seepdf.png differ diff --git a/img/showpicture.png b/img/showpicture.png new file mode 100644 index 0000000..fbe7a8c Binary files /dev/null and b/img/showpicture.png differ diff --git a/webapps/ROOT/.DS_Store b/webapps/ROOT/.DS_Store index 5008ddf..ee68362 100644 Binary files a/webapps/ROOT/.DS_Store and b/webapps/ROOT/.DS_Store differ diff --git a/webapps/ROOT/META-INF/maven/kohgylw/KohgylwIFT/pom.properties b/webapps/ROOT/META-INF/maven/kohgylw/KohgylwIFT/pom.properties index 4b8b96e..82c1102 100644 --- a/webapps/ROOT/META-INF/maven/kohgylw/KohgylwIFT/pom.properties +++ b/webapps/ROOT/META-INF/maven/kohgylw/KohgylwIFT/pom.properties @@ -1,5 +1,5 @@ #Generated by Maven Integration for Eclipse -#Fri Feb 23 08:33:45 CST 2018 +#Wed Feb 28 14:53:51 CST 2018 version=0.0.1-SNAPSHOT groupId=kohgylw m2e.projectName=KohgylwIFT diff --git a/webapps/ROOT/WEB-INF/classes/kohgylw/controller/HomeController.class b/webapps/ROOT/WEB-INF/classes/kohgylw/controller/HomeController.class index bb1f287..9f86261 100644 Binary files a/webapps/ROOT/WEB-INF/classes/kohgylw/controller/HomeController.class and b/webapps/ROOT/WEB-INF/classes/kohgylw/controller/HomeController.class differ diff --git a/work/Catalina/localhost/ROOT/SESSIONS.ser b/work/Catalina/localhost/ROOT/SESSIONS.ser index 31fa65a..d0fa233 100644 Binary files a/work/Catalina/localhost/ROOT/SESSIONS.ser and b/work/Catalina/localhost/ROOT/SESSIONS.ser differ diff --git a/work/Catalina/localhost/ROOT/org/apache/jsp/WEB_002dINF/picture_jsp.class b/work/Catalina/localhost/ROOT/org/apache/jsp/WEB_002dINF/picture_jsp.class new file mode 100644 index 0000000..f8108f3 Binary files /dev/null and b/work/Catalina/localhost/ROOT/org/apache/jsp/WEB_002dINF/picture_jsp.class differ diff --git a/work/Catalina/localhost/ROOT/org/apache/jsp/WEB_002dINF/picture_jsp.java b/work/Catalina/localhost/ROOT/org/apache/jsp/WEB_002dINF/picture_jsp.java new file mode 100644 index 0000000..4465514 --- /dev/null +++ b/work/Catalina/localhost/ROOT/org/apache/jsp/WEB_002dINF/picture_jsp.java @@ -0,0 +1,214 @@ +/* + * Generated by the Jasper component of Apache Tomcat + * Version: Apache Tomcat/9.0.0.M17 + * Generated at: 2018-02-28 07:02:04 UTC + * Note: The last modified time of this file was set to + * the last modified time of the source file after + * generation to assist with modification tracking. + */ +package org.apache.jsp.WEB_002dINF; + +import javax.servlet.*; +import javax.servlet.http.*; +import javax.servlet.jsp.*; + +public final class picture_jsp extends org.apache.jasper.runtime.HttpJspBase + implements org.apache.jasper.runtime.JspSourceDependent, + org.apache.jasper.runtime.JspSourceImports { + + private static final javax.servlet.jsp.JspFactory _jspxFactory = + javax.servlet.jsp.JspFactory.getDefaultFactory(); + + private static java.util.Map _jspx_dependants; + + private static final java.util.Set _jspx_imports_packages; + + private static final java.util.Set _jspx_imports_classes; + + static { + _jspx_imports_packages = new java.util.HashSet<>(); + _jspx_imports_packages.add("javax.servlet"); + _jspx_imports_packages.add("javax.servlet.http"); + _jspx_imports_packages.add("javax.servlet.jsp"); + _jspx_imports_classes = null; + } + + private volatile javax.el.ExpressionFactory _el_expressionfactory; + private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager; + + public java.util.Map getDependants() { + return _jspx_dependants; + } + + public java.util.Set getPackageImports() { + return _jspx_imports_packages; + } + + public java.util.Set getClassImports() { + return _jspx_imports_classes; + } + + public javax.el.ExpressionFactory _jsp_getExpressionFactory() { + if (_el_expressionfactory == null) { + synchronized (this) { + if (_el_expressionfactory == null) { + _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory(); + } + } + } + return _el_expressionfactory; + } + + public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() { + if (_jsp_instancemanager == null) { + synchronized (this) { + if (_jsp_instancemanager == null) { + _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig()); + } + } + } + return _jsp_instancemanager; + } + + public void _jspInit() { + } + + public void _jspDestroy() { + } + + public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response) + throws java.io.IOException, javax.servlet.ServletException { + + final java.lang.String _jspx_method = request.getMethod(); + if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) { + response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET POST or HEAD"); + return; + } + + final javax.servlet.jsp.PageContext pageContext; + javax.servlet.http.HttpSession session = null; + final javax.servlet.ServletContext application; + final javax.servlet.ServletConfig config; + javax.servlet.jsp.JspWriter out = null; + final java.lang.Object page = this; + javax.servlet.jsp.JspWriter _jspx_out = null; + javax.servlet.jsp.PageContext _jspx_page_context = null; + + + try { + response.setContentType("text/html; charset=UTF-8"); + pageContext = _jspxFactory.getPageContext(this, request, response, + null, true, 8192, true); + _jspx_page_context = pageContext; + application = pageContext.getServletContext(); + config = pageContext.getServletConfig(); + session = pageContext.getSession(); + out = pageContext.getOut(); + _jspx_out = out; + + out.write('\n'); + + String path = request.getContextPath(); + String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + + path + "/"; + + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write("KViewer\n"); + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write("\t"); + out.write("\n"); + out.write("\t
\n"); + out.write("\n"); + out.write("\t\t"); + out.write("\n"); + out.write("\t\t
\n"); + out.write("\t\t\t
\n"); + out.write("\t\t\t\t
\n"); + out.write("\t\t\t\t\t 青阳图片查看器 KIFT-Viewer\n"); + out.write("\t\t\t\t\t\n"); + out.write("\t\t\t\t
\n"); + out.write("\t\t\t\t
\n"); + out.write("\t\t\t
\n"); + out.write("\t\t
\n"); + out.write("\t\t"); + out.write("\n"); + out.write("\n"); + out.write("\t\t"); + out.write("\n"); + out.write("\t\t
\n"); + out.write("\t\t\t
\n"); + out.write("\t\t\t\t

图片名称:"); + out.write((java.lang.String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${picture.fileName }", java.lang.String.class, (javax.servlet.jsp.PageContext)_jspx_page_context, null)); + out.write("

\n"); + out.write("\t\t\t\t

"); + out.write((java.lang.String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${picture.fileCreator }", java.lang.String.class, (javax.servlet.jsp.PageContext)_jspx_page_context, null)); + out.write('/'); + out.write((java.lang.String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${picture.fileCreationDate }", java.lang.String.class, (javax.servlet.jsp.PageContext)_jspx_page_context, null)); + out.write('/'); + out.write((java.lang.String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${picture.fileSize }", java.lang.String.class, (javax.servlet.jsp.PageContext)_jspx_page_context, null)); + out.write("\n"); + out.write("\t\t\t\t\tMB

\n"); + out.write("\t\t\t\t
\n"); + out.write("\t\t\t\t\n"); + out.write("\t\t\t\t\n"); + out.write("\t\t\t
\n"); + out.write("\t\t
\n"); + out.write("\t\t"); + out.write("\n"); + out.write("\n"); + out.write("\t
\n"); + out.write("\t"); + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write(""); + } catch (java.lang.Throwable t) { + if (!(t instanceof javax.servlet.jsp.SkipPageException)){ + out = _jspx_out; + if (out != null && out.getBufferSize() != 0) + try { + if (response.isCommitted()) { + out.flush(); + } else { + out.clearBuffer(); + } + } catch (java.io.IOException e) {} + if (_jspx_page_context != null) _jspx_page_context.handlePageException(t); + else throw new ServletException(t); + } + } finally { + _jspxFactory.releasePageContext(_jspx_page_context); + } + } +} diff --git a/work/Catalina/localhost/ROOT/org/apache/jsp/WEB_002dINF/video_jsp.class b/work/Catalina/localhost/ROOT/org/apache/jsp/WEB_002dINF/video_jsp.class index c6f2492..5346ad6 100644 Binary files a/work/Catalina/localhost/ROOT/org/apache/jsp/WEB_002dINF/video_jsp.class and b/work/Catalina/localhost/ROOT/org/apache/jsp/WEB_002dINF/video_jsp.class differ diff --git a/work/Catalina/localhost/ROOT/org/apache/jsp/WEB_002dINF/video_jsp.java b/work/Catalina/localhost/ROOT/org/apache/jsp/WEB_002dINF/video_jsp.java index 7199306..ab3f3f6 100644 --- a/work/Catalina/localhost/ROOT/org/apache/jsp/WEB_002dINF/video_jsp.java +++ b/work/Catalina/localhost/ROOT/org/apache/jsp/WEB_002dINF/video_jsp.java @@ -1,7 +1,7 @@ /* * Generated by the Jasper component of Apache Tomcat * Version: Apache Tomcat/9.0.0.M17 - * Generated at: 2018-01-30 08:13:04 UTC + * Generated at: 2018-02-28 06:17:00 UTC * Note: The last modified time of this file was set to * the last modified time of the source file after * generation to assist with modification tracking. @@ -142,7 +142,7 @@ public final class video_jsp extends org.apache.jasper.runtime.HttpJspBase out.write("\t\t\t\t\t 青阳网络视频播放器 KIFT-Player\n"); out.write("\t\t\t\t\t\n"); out.write("\t\t\t\t\n"); out.write("\t\t\t\t
\n"); @@ -195,7 +195,9 @@ public final class video_jsp extends org.apache.jasper.runtime.HttpJspBase out.write("\t\tthis.play();\n"); out.write("\t});\n"); out.write("\tfunction reMainPage(){\n"); - out.write("\t\twindow.location.href=\"home.jsp\";\n"); + out.write("\t\twindow.opener = null;\n"); + out.write("\t\twindow.open('', '_self');\n"); + out.write("\t\twindow.close();\n"); out.write("\t}\n"); out.write("\n"); out.write(""); diff --git a/work/Catalina/localhost/ROOT/org/apache/jsp/pdfview/web/viewer_jsp.class b/work/Catalina/localhost/ROOT/org/apache/jsp/pdfview/web/viewer_jsp.class new file mode 100644 index 0000000..02955c8 Binary files /dev/null and b/work/Catalina/localhost/ROOT/org/apache/jsp/pdfview/web/viewer_jsp.class differ diff --git a/work/Catalina/localhost/ROOT/org/apache/jsp/pdfview/web/viewer_jsp.java b/work/Catalina/localhost/ROOT/org/apache/jsp/pdfview/web/viewer_jsp.java new file mode 100644 index 0000000..4396637 --- /dev/null +++ b/work/Catalina/localhost/ROOT/org/apache/jsp/pdfview/web/viewer_jsp.java @@ -0,0 +1,492 @@ +/* + * Generated by the Jasper component of Apache Tomcat + * Version: Apache Tomcat/9.0.0.M17 + * Generated at: 2018-02-28 06:27:49 UTC + * Note: The last modified time of this file was set to + * the last modified time of the source file after + * generation to assist with modification tracking. + */ +package org.apache.jsp.pdfview.web; + +import javax.servlet.*; +import javax.servlet.http.*; +import javax.servlet.jsp.*; + +public final class viewer_jsp extends org.apache.jasper.runtime.HttpJspBase + implements org.apache.jasper.runtime.JspSourceDependent, + org.apache.jasper.runtime.JspSourceImports { + + private static final javax.servlet.jsp.JspFactory _jspxFactory = + javax.servlet.jsp.JspFactory.getDefaultFactory(); + + private static java.util.Map _jspx_dependants; + + private static final java.util.Set _jspx_imports_packages; + + private static final java.util.Set _jspx_imports_classes; + + static { + _jspx_imports_packages = new java.util.HashSet<>(); + _jspx_imports_packages.add("javax.servlet"); + _jspx_imports_packages.add("javax.servlet.http"); + _jspx_imports_packages.add("javax.servlet.jsp"); + _jspx_imports_classes = null; + } + + private volatile javax.el.ExpressionFactory _el_expressionfactory; + private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager; + + public java.util.Map getDependants() { + return _jspx_dependants; + } + + public java.util.Set getPackageImports() { + return _jspx_imports_packages; + } + + public java.util.Set getClassImports() { + return _jspx_imports_classes; + } + + public javax.el.ExpressionFactory _jsp_getExpressionFactory() { + if (_el_expressionfactory == null) { + synchronized (this) { + if (_el_expressionfactory == null) { + _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory(); + } + } + } + return _el_expressionfactory; + } + + public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() { + if (_jsp_instancemanager == null) { + synchronized (this) { + if (_jsp_instancemanager == null) { + _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig()); + } + } + } + return _jsp_instancemanager; + } + + public void _jspInit() { + } + + public void _jspDestroy() { + } + + public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response) + throws java.io.IOException, javax.servlet.ServletException { + + final java.lang.String _jspx_method = request.getMethod(); + if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) { + response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET POST or HEAD"); + return; + } + + final javax.servlet.jsp.PageContext pageContext; + javax.servlet.http.HttpSession session = null; + final javax.servlet.ServletContext application; + final javax.servlet.ServletConfig config; + javax.servlet.jsp.JspWriter out = null; + final java.lang.Object page = this; + javax.servlet.jsp.JspWriter _jspx_out = null; + javax.servlet.jsp.PageContext _jspx_page_context = null; + + + try { + response.setContentType("text/html; charset=UTF-8"); + pageContext = _jspxFactory.getPageContext(this, request, response, + null, true, 8192, true); + _jspx_page_context = pageContext; + application = pageContext.getServletContext(); + config = pageContext.getServletConfig(); + session = pageContext.getSession(); + out = pageContext.getOut(); + _jspx_out = out; + + out.write('\n'); + + String path = request.getContextPath(); + String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + + path + "/"; + + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write(" \n"); + out.write(" \n"); + out.write(" \n"); + out.write(" \n"); + out.write(" \n"); + out.write(" PDF.js viewer\n"); + out.write("\n"); + out.write("\n"); + out.write(" \n"); + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write("\n"); + out.write(" \n"); + out.write("\n"); + out.write(" \n"); + out.write("\n"); + out.write(" \n"); + out.write("
\n"); + out.write("\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" \n"); + out.write(" \n"); + out.write(" \n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("\n"); + out.write("
\n"); + out.write(" \n"); + out.write("\n"); + out.write(" \n"); + out.write("\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" \n"); + out.write("
\n"); + out.write(" \n"); + out.write("
\n"); + out.write(" \n"); + out.write("
\n"); + out.write(" \n"); + out.write("
\n"); + out.write(" \n"); + out.write(" \n"); + out.write("
\n"); + out.write("
\n"); + out.write(" \n"); + out.write("\n"); + out.write(" \n"); + out.write("\n"); + out.write(" \n"); + out.write("\n"); + out.write(" \n"); + out.write(" \n"); + out.write(" Current View\n"); + out.write(" \n"); + out.write("\n"); + out.write("
\n"); + out.write("\n"); + out.write(" \n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" \n"); + out.write("
\n"); + out.write(" \n"); + out.write("
\n"); + out.write(" \n"); + out.write(" \n"); + out.write(" \n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("\n"); + out.write(" \n"); + out.write(" \n"); + out.write(" \n"); + out.write(" \n"); + out.write(" \n"); + out.write(" \n"); + out.write("\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("\n"); + out.write(" \n"); + out.write("
\n"); + out.write("\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("

Enter the password to open this PDF file:

\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" \n"); + out.write("
\n"); + out.write("
\n"); + out.write(" \n"); + out.write(" \n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" File name:

-

\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" File size:

-

\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" Title:

-

\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" Author:

-

\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" Subject:

-

\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" Keywords:

-

\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" Creation Date:

-

\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" Modification Date:

-

\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" Creator:

-

\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" PDF Producer:

-

\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" PDF Version:

-

\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" Page Count:

-

\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" \n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" Preparing document for printing…\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" \n"); + out.write(" 0%\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" \n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("
\n"); + out.write("\n"); + out.write("
\n"); + out.write("
\n"); + out.write(" \n"); + out.write("\n"); + } catch (java.lang.Throwable t) { + if (!(t instanceof javax.servlet.jsp.SkipPageException)){ + out = _jspx_out; + if (out != null && out.getBufferSize() != 0) + try { + if (response.isCommitted()) { + out.flush(); + } else { + out.clearBuffer(); + } + } catch (java.io.IOException e) {} + if (_jspx_page_context != null) _jspx_page_context.handlePageException(t); + else throw new ServletException(t); + } + } finally { + _jspxFactory.releasePageContext(_jspx_page_context); + } + } +}