如何设置tomcat日志文件在哪显示文件列表

如何获取tomcat虚拟目录中的 绝对路径即docBase (server.xml中配置的) - ITeye问答
本人为了是文件上传存放路径和工程不在同一个目录下,固例外设置一个目录(E:\UploadFile)专门用来存放我上传文件,为了访问方便固在tomcat中的 server.xml 中配置 如下:
&Context path="/UploadFile" docBase="E:\UploadFile" reloadable="true"/&
现在我有一个工程(webmsgr) 部署 tomcat 的 webapps 下,现在我想在webmsgr工程中获取到虚拟目录(这个/UploadFile ,注意不是要找webmsgr的绝对路径)的绝对路径,要如何获取??
我知道获取当前工程绝对路径直接使用直接使用getRealPath("")就行,但是我先要获取的不是当前工程路径,而是tomcat server.xml 中配置的虚拟目录(/UploadFile) 对应的 docBase . 我想要的值就是 docBase的值,问我要在webmsgr 这个工程中通过什么方法获取???
问题补充:我上传的文件 要显示在 webmsgr 这个工程中的网页中,如果不配置 虚拟目录, 那么在webmsgr 这个工程就不能访问,/UploadFile 就是以个独立的文件夹了 与tomcat 没有任何关系。 那么我在webmsgr 中的jsp 网页中就无法通过 &img src="/UploadFile/xxx.jpg"/& 这样来显示图片了。
问题补充:或者谁有什么好其他方法,也可以替上来大家看看。谢谢。
问题补充:我目前 就是这样做的,在server.xml 做了一个配置,在properties 文件中也做了一个配置 :
connector.userFilesAbsolutePath =E\:\\UploadFile\\userfiles\\
不过要死我现在要正式发布 那 要修改两个文件了 server.xml 和 properties 文件 ,觉得有点麻烦,正式发布的时候只要在tomcat中配置 &Context& 就行,所有找方法,一直找不到。如何我要把 web application 发布到 linux 系统中 那就要只要修改 &Context & 而不要动改动 源码配置了。
我现在在想有什么方法通过 java.io.URI 来定位系统绝对路径,就是
通过 http://server:8080/UploadFile/ 这个URI 或者 URL 来定位UploadFile 在系统中的绝对路径,我看了很多方法都不行。不知道什么好的其他方法不。
采纳的答案
你一个都修改了,两个也不麻烦啊,况且那本来就是个配置文件,你可能还要修改很多地方了,比如数据库密码,用户名啥的,只是顺手修改虚拟目录而已。。
你提到了io的方式,一开我也想到了,就是怕读影响速度,就没提。这样的话,你可以专名写一个servlet用于读取硬盘上你上传的图片!
你把你这个配置&Context path="/UploadFile" docBase="E:\UploadFile" reloadable="true"/& 的路径写道properties配置文件里,读他就行了,修改的时候同步修改properties配置文件和server.xml。。不过一般都不会改server.xml中你的这个虚拟目录配置吧。
不建议采用这种虚拟目录的形势,想访问方便的话采用properties配置文件的形势配置。
已解决问题
未解决问题2012年10月 Java大版内专家分月排行榜第三2012年6月 Java大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
怎么才能用tomcat访问webapp目录外的文件
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口文章数:63
评论数:18
访问量:95326
注册日期:
阅读量:1297
阅读量:3317
阅读量:456251
阅读量:1140888
51CTO推荐博文
Tomcat基础配置详解组件原理图如下:任何tomcat实例就是一个server,而一个server内部要想能够解析jsp页面转义编译serlet程序,要靠其引擎来实现而引擎才是真正意义上执行jsp代码的容器,都是tomcat用类来描述这些组件的同时,为了接受用户的请求,需要基于connector组件,所谓监听的套接字的程序,能够接手用户的请求,被称为连接器一个server内部可以完全运行N个引擎,无非就是运行多个虚拟机而已&war包的概念&&&&放在网页目录可以直接访问,而部署的时候可以自动将其展开装载,而这是部署本身所完成的工作在实现web站点的时候,在出程序之下有目录比如/web/htdoc,而在其目录下有一子目录/web/htdoc/bbs 而在其下有个论坛程序这个目录程序跟其他程序可能不在同一组,而新加的子目录则需要重新部署,因为其属于独立的应用程序,因为每个独立程序都需要独立部署对于tomcat来讲每一个host内部还有一子组件,叫做conntest,其作用是为了实现程序的独立部署&对于tomcat来讲要想记录日志的话,因此这些都需要使用特殊接口来实现,所以,任何一个需要操作硬件资源的进程,资源都有一个类在实现我们的需求,tomcat也一样。&常见组件1.服务器(server)&&&&实例,通常一个jvm只能包含一个实例,一般情况下,一个物理服务器可以启动多个jvm,从而启动多个实例,但一般不这么做2.服务(service)&&&&一个服务组件通常包含一个引擎和此引擎相关联的一个或多个链接服务器3.连接器(connectors)&&&&一个引擎能配置多个连接器 但是每个连接器的端口不能冲突&&&&同时,tomcat也支持AJP JSERV和JK2连接器,实现让apache反向代理到后端服务器的非常高效的传输协议容器类组件4.引擎&&&&可以自己接收用户的http请求,并构建响应报文,而且可以在内部处理java程序的整个套间&5.主机6.上下文&被嵌套类组件7.阀门&&&&能够过滤也可以做访问控制8.日志记录器9.领域(Realm)&&&&用来实现用户的认证和授权&对tomcat来讲,每种模型上的实现必须开发一种程序,才能完成相应组件的功能,而java中任何程序都是一个类&JAVA常用类型文件EJB程序通常以.jar结尾web程序通常打包为.war资源适配器通常为.rar企业级应用长须为.earweb服务通常会打包为.ear或.war&tomcat配置文件详解tomcat的配置文件位于/path/to/tomcat/conf/目录下[root@node1 conf]#cd&/usr/local/tomcat/conf[root@node1 conf]#cpserver.xml server.xml.bak查看文件:[root@node1 conf]#cat server.xmlListener&为侦听器,通常实现tomcat内部进行通信的,可在各组件之间完成通信&Serverport="8005" shutdown="SHUTDOWN"&& &Listener&className="org.apache.catalina.core.AprLifecycleListener"SSLEngine="on" /&& &Listener&className="org.apache.catalina.core.JasperListener"/&& &Listener&className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/&& &Listener&className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/&& &Listener&className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/&全局命名资源,方便全局引用,所以为其起完名称后可以随便调用的& &GlobalNamingResources&&&& &Resource name="UserDatabase"auth="Container"&&&&&&&&&&&&&type="org.apache.catalina.UserDatabase"&&&&&&&&&&&&& description="User databasethat can be updated and saved"&&&&&&&&&&&&&factory="org.apache.catalina.users.MemoryUserDatabaseFactory"&&&&&&&&&&&&& pathname="conf/tomcat-users.xml"&/&&&&&&&&&&&& #其调用tomcat-user.xml配置文件进行用户认证& &/GlobalNamingResources&服务类组件配置信息,将连接器关联至引擎上& &Servicename="Catalina"&& &&Connector port="8080" protocol="HTTP/1.1" & && &&&&&&&&&&&&&#所在监听端口,以及协议版本号&&&&&&&&&&&&&&connectionTimeout="20000" & & & & &&&&&& &&&&&&&& #连接超时时间,单位毫秒&&&&&&&&&&&&&&redirectPort="8443" /&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#必要的时候可以做重定向,定义在8443&&&&&& &Connector port="8443"protocol="HTTP/1.1" SSLEnabled="true" & & &&&#端口监听在8443,协议http1.1&&&&&&&&&&&&&&maxThreads="150" scheme="https" secure="true"&& &&&& &&&&#最大线程,协议版本,安全的&&&&&&&&&&&&&&clientAuth="false" sslProtocol="TLS" /& & &&& &&&& &&&& &#不验证客户端 ssl协议用的是tls&& &&Connector port="8009" protocol="AJP/1.3"redirectPort="8443" /& &&&& &&Engine name="Catalina" defaultHost="localhost"&& & & & & & &&&&& &&&& #引擎,名为catalina& && &RealmclassName="org.apache.catalina.realm.LockOutRealm"& & && && && & &RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"&&&&&&&&&&&&&&resourceName="UserDatabase"/&&&&&& &/Realm&& &&&Host name="localhost"& appBase="webapps"& & & & & & & & & &&&& #应用程序存放的位置,相对路径&&&&&&&&&&&unpackWARs="true" autoDeploy="true"& & & & & & & & & & & #如果是war文件格式,是否解压,是否自动部署&& && & & #定义阀门,java中类的记录方式,当前所处域名反过来写的记录方式& & & & &ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs"&&&&&&&&&&&&&&prefix="localhost_access_log." suffix=".txt" & & & & #日志的命名 suffix表示时间戳&&&&&&&&&&&&&&pattern="%h %l %u %t &%r& %s %b" /& & & & &#访问日志的格式&&&&& &/Host&&&& &/Engine&& &/Service&&/Server&&tomcat的运行方式tomcat可以自我独立运行,因此可以直接监听在某个端口,从而接收用户的http请求,并构建响应报文另外也可以做为容器,不接受用户的http请求只接受用户的对于某个jsp文件的请求当用户第一次去请求tomcat的时候,会自动部署好一个程序的来查看配置文件:明确说明了主机名默认为localhost,而unpackWARs的值为真,意为是可以自动部署的&&Hostname="localhost"& appBase="webapps"&&unpackWARs="true" autoDeploy="true"&&配置Tomcat?定义管理页面用户名及密码用户名及密码是通过tomcat-users.xml配置文件进行调用的,所以我们只需要配置tomcat-users.xml即可[root@node1 conf]#vim tomcat-users.xml加入以下参数信息& &rolerolename="manager-gui"/& & & & & & & & &#定义manager组& &role rolename="admin-gui"/&&&&&&&&&&&&&&&&& #定义admin组& &user username="tomcat"password="tomcat" roles="manager-gui,admin-gui"/& & & #定义用户名及密码都为tomcat,并将tomcat用户加入至manager、admin组中保存退出并重启服务[root@node1 conf]#/etc/init.d/tomcat stop[root@node1 conf]#/etc/init.d/tomcat start查看监听端口是否正常[root@node1 conf]#netstat -lntup | grep javatcp&&&&&&& 0&&&&&0 :::8080&&&&&&&&&&&&&&&&&&&&:::*&&&&&&&&&&&&&&&&&&&&&&& LISTEN&&&&& 2359/java&&&&&&&&&&tcp&&&&&&& 0&&&&&0 ::ffff:127.0.0.1:8005&&&&&&:::*&&&&&&&&&&&&&&&&&&&&&&& LISTEN&&&&& 2359/java&&&&&&&&&&tcp&&&&&&& 0&&&&&0 :::8009&&&&&&&&&&&&&&&&&&&&:::* & & & & & & & & & & & &LISTEN&&&&& 2359/java访问测试:输入用户名和密码,选择登陆如下所示,已经成功登陆至后台信息页面&Type & & & & &&&&& #所属类型类型Initial & & & & && #初始化空间多大Total & & & & &&Maximum&&&&&&&&&&&& #最大空间有多大Used&&&&&&&&&&&&&&&&#已经使用了多少&Max threads: 200 & & & & & & & & & &&默认最大并发连接数200Current thread count: 0 & & & & & & &当前连接数Current thread busy: 0 & & & & & & &&繁忙连接数&对其做压力测试并观察其连接状态,并再次刷新页面状态说明:R: 已经准备好S: 正在提供服务k:&&持久连接&登陆后台管理页面由于我们刚才定义tomcat-user.xml的时候已经将用户tomcat加入到admin-gui组中,所以我们直接登陆就可以了打开主页面,选择Host ManagerHost Manager&表示有多少个虚拟主机如果想部署新的虚拟主机可以在下面的图形界面进行部署,如下所示tomcat应用程序目录结构/WEB-INF/web.xml:包含当前webapp的deploy描述符,如所有的servlet和JSP等动态文件的详细信息,会话超时时间和数据源等;因此,其也通常用于定义当前webapp特有的资源;/WEB-INF/classes:&包含所有服务器端类及当前应用程序相关的其它第三方类等;/WEB-INF/lib: 包含JSP所用到的JAR文件;/META-INF/& :也是用来存放资源信息的,只不过一般用的不是特别多,就算有的话里面程序也未必有文件;webapps/manager/META-INF/context.xml :上下文配置文件,有些配置信息可以放在META配置当中;&使用自定义位置如果我们自己要发布一个资源,使用其他特定的目录来发布应用程序的话,也是按照这种格式:[root@node1tomcat]# mkdir /tomcat/app1/WEB-INF/{classess,lib}&-p进入目录[root@node1 app1]#pwd/tomcat/app1创建index.jsp,内容如下:[root@node1 app1]#cat index.jsp&%@ pagelanguage="java" %&&html&&&head&&title&TomcatA&/title&&/head&& &body&&&& &h1&&fontcolor="red"&TomcatA &/font&&/h1&&&& &tableborder="1"&&&&&& &tr&&&&&&&& &td&Session ID&/td&&&& &%session.setAttribute("abc","abc"); %&&&&&&&& &td&&%= session.getId()%&&/td&&&&&& &/tr&&&&&& &tr&&&&&&&& &td&Created on&/td&&&&&&&& &td&&%=session.getCreationTime() %&&/td&&&&& &/tr&&&& &/table&& &/body&&/html&&定义虚拟主机编辑server.xml[root@node1 conf]#vim server.xml加入如下内容&&&&& &Host name=""&appBase="webapps"&&&&&&&&&&& unpackWARs="true"autoDeploy="true"&&&&&&&&& &ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs"&&&&&&&&&&&&&& prefix="www_access_log."suffix=".txt"&&&&&&&&&&&&&& pattern="%h %l %u %t&%r& %s %b" /&&&&&&&&&&&Contextpath="/" docBase="/tomcat/app1" /&&&&&&&&&&&&&&&&&& #定义访问的路径当于整个路径的根,docBase表示访问的路径的位置&&&&& &/Host&这里没有主机名所以将默认主机设置为& &&Engine name="Catalina" defaultHost=""&启动服务[root@node1 conf]#/etc/init.d/tomcat start或者[root@node1 conf]#catalina.sh start查看监听端口是否正常[root@node1 conf]#netstat -lntup | grep javatcp&&&&&&& 0&&&&&0 :::8080 & & & & & & & & & & :::*&&&&&&&&&&&&&&&&&&&&&&& LISTEN&&&&& 2079/java&&&&&&&&&&tcp&&&&&&& 0&&&&&0 ::ffff:127.0.0.1:8005 & & & :::*&&&&&&&&&&&&&&&&&&&&&&& LISTEN&&&&& 2079/java&&&&&&&&&&tcp&&&&&&& 0&&&&&0 :::8009&&&&&&&&&& &&&&&&&&&&:::* & & & & & & & & & & & &LISTEN&&&&& 2079/java&访问测试:http://10.0.10.61:8080/第一次访问时,页面会很慢,是因为第一次访问jsp的时候都需要对其进行编译;&编译jsp页面的执行次序jsp页面通过jasper进行编译 再由编译器 javac编译为 class文件因此每一次都需要编译的,如果不改文件刷新速度是非常快如果是更改了文件的话,第一次访问可能会等待半天,所以任何时候更改完源程序都需要重新编译文件的&一旦页面被编译后会有什么样的结果:[root@node1 conf]#cd Catalina/[root@node1Catalina]# lltotal 8drwxr-xr-x. 2 rootroot 4096 Jun 26 10:48 localhostdrwxr-xr-x. 2root root 4096 Jul& 1 10:45&&&&&&& &&&&&&&&#每一个host都有一个独立的目录[root@node1 Catalina]# pwd &&/usr/local/tomcat/work/Catalina&[root@node1Catalina]# ll /_/org/apache/jsp/index_jsp.index_jsp.class& index_jsp.java#此处已验证了,首先由jasper翻译成serverlet,再由其编译成class文件&实例:部署论坛程序论坛程序包:JavaCenter_Home_2.0_GBK.zip&下载源码包可以去jsprun官方进行下载解压源码包并拷贝至相关目录&[root@node1 ~]# unzip JspRun\!_6.0.0_UTF8.zip[root@node1 ~]# cdJspRun\!_6.0.0_UTF8/[root@node1upload]# cp -fra * /tomcat/app1启动tomcat[root@node1 app1]#catalina.sh start启动mysql[root@node1 app1]#/etc/init.d/mysqld start将mysql赋予授权mysql& grantall on jchome.* to 'jcuser'@'localhost' identified by 'jdpass';Query OK, 0 rows affected (0.00 sec)mysql&创建数据库mysql& c修改论坛程序的config.properties配置文件[root@node1 app1]#pwd/tomcat/app1[root@node1 app1]#vim config.properties修改为:dbhost = localhostdbport=3306dbuser = jcuserdbpw = jdpassdbname = jchomepconnect = 0访问&&进行安装安装过程略,最后迎接我们的则是崭新的论坛界面,如下所示:&END,感谢各位。
了这篇文章
类别:┆阅读(0)┆评论(0)让Tomcat支持中文路径名和中文文件名 - hdwangyi - ITeye博客
博客分类:
&& Tomcat是Java开发者使用得较多的一个Web服务器,因为它占用资源小,运行速度快等特点,深受Java Web程序员的喜爱。不过,在使用中,由于Java中的中文问题的存在,如果不经过配置,在WEB程序中,不能直接支持具有中文文件名的文件的下载,这为Java Web程序的开发带来一定的不便。本文拟介绍一种手段,解决这个问题。
&& 解决问题的核心在于修改Tomcat的配置,在Server.xml文件中添加一个名为URIEncoding的属性,它用于对HTTP请求中的get方法传过来的URL进行编码。如果直接从Apache站点中下载Tomcat,无论是安装版的exe文件,还是解压缩的ZIP文件,内置的对于get协议中的URL编码都是ISO-8859-1,这个字符集不能直接支持中文等双字节的信息,而中文文件的下载链接恰恰是通过get协议进行的。以下说明修改Tomcat安装目录中的config文件夹中的server.xml文件的方法。
&& 打开config/server.xml文件,如果没有修改过这个文件,应该可以在其中找到如下代码:
&&
&& &Connector port="8080"& protocol="HTTP/1.1"
&&&&&&&&&&&&&& connectionTimeout="20000"
&&&&&&&&&&&&&& redirectPort="8443" /&
&&
&& 这段代码规定了Tomcat监听HTTP请求的端口号等信息,可以在这里添加一个属性:URIEncoding,将该属性值设置为UTF-8,即可让Tomcat不再以ISO-8859-1的编码处理get请求。更改后的代码如下所示(红色部分为新添加的代码):
&
& &Connector port="8080"
&&&&&&&&&&&& URIEncoding="utf-8"
&&&&&&&&&&&& protocol="HTTP/1.1"
&&&&&&&&&&&& connectionTimeout="20000"
&&&&&&&&&&&& redirectPort="8443" /&
&
& 下面,我们准备测试一下更改后的效果。
&& 最为简单的测试方法就是让Tomcat自己列出WEB程序中的目录和文件,默认情况下,Tomcat不会直接列出WEB程序目录中的文件和文件夹,但是,我们可以修改位于安装目录中的config文件夹中的web.xml,使其能够支持自动列出WEB程序中的目录和文件。
&& 在config/web.xml文件中找到如下代码:
&&
&&& &servlet&
&&& &servlet-name&default&/servlet-name&
&&& &servlet-class&org.apache.catalina.servlets.DefaultServlet&/servlet-class&
&&& &init-param&
&&&&& &param-name&debug&/param-name&
&&&&& &param-value&0&/param-value&
&&& &/init-param&
&&& &init-param&
&&&&& &param-name&listings&/param-name&
&&&&& &param-value&false&/param-value&
&&& &/init-param&
&&& &load-on-startup&1&/load-on-startup&
& &/servlet&
&&
&& 将上面的代码中标为红色的部分改为如下内容:
&
&& &init-param&
&&&&& &param-name&listings&/param-name&
&&&&& &param-value&true&/param-value&
&& &/init-param&
&&
&& 即将参数listings的属性改为true,就可让Tomcat自动列出某个WEB程序目录中的文件和文件夹。
&& 现在,我们的设置已经完成,将修改的文件保存后,就可以启动Tomcat进行测验了,当然,如果Tomcat正在运行,则需要重新启动,以便配置生效。
&& 现在,可以在Tomcat安装目录中的webapps目录中建立一个名为cntest的文件夹,作为测试的web程序的上下文路径(注意:对于WEB程序的上下文路径,请不要使用中文)。请在cntest中添加一些中文目录和文件,然后在浏览器中打开该WEB程序,如,http://localhost:8080/cntest,测验一下效果吧。当然,也可以在JSP或HTML文件中使用那些包含中文的文件夹或文件名的超级链接。
&& 说明:以上修改均使用Tomcat5.5做的测试,在5.5以上都应该可以,至于5.0和4.x,我没有实验过,不过对于5.0应该也是可以的,但4.x不能保证(4.x在处理HTTP的get和post方法和5.x不大一样)。
浏览 19380
论坛回复 /
(0 / 9562)
这并不是tomcat的问题,而是url编码规则规定不能含有中文等非ASCII字符,如果有这种字符,浏览器会自动对它们进行url encode,在tomcat中设置URIEncoding为gb2312或utf-8只能让我们能正确反编码提取url中的中文信息。
浏览: 149302 次
非常感谢!我用apache-tomcat-6.0.43试了一下 ...
Y 就是大写字母的y,使用这个键,就可以在选中文本后,将其复制 ...
new File(&.&).getCano ...
perfect 写道java 估计要走下坡路,这个语言的最高峰 ...

我要回帖

更多关于 tomcat日志文件在哪 的文章

 

随机推荐