shragi
asked on
browse tomcat from client
project name: projectX
I wrote a struts program which has a jsp page and corresponding action page
in the jsp page i have a browse button which should browse a file from server project home directory...
(no need to browse everything on tomcat server atleast on the project directory (root-> ProjectX(pro name))
how can i browse server project home directory from jsp client page...
I wrote a struts program which has a jsp page and corresponding action page
in the jsp page i have a browse button which should browse a file from server project home directory...
(no need to browse everything on tomcat server atleast on the project directory (root-> ProjectX(pro name))
how can i browse server project home directory from jsp client page...
Maybe I'm missing something, but
I think it should not be a problem - if you want to browse folders on the server from client
HTML page (or for that matter also jsp - you can still have HTML in jsp) -
you just put the link to your top directory where you want them to start and browser
will provide you with the browsing capabilities and you can also download files.
If you want to be much more fancy, you can also write an applet, and applet will
be allowed to connect to the server, once it will be loaded from the same server.
Though it would be some work, I guess.
Don't know if struts provide something on top of this, but browsing from HTML in general
does not need any special things.
Just make sure you don't have index.html inside these folders, where the client will browse
in such case it may open this page, instead of showing the folder.
I think it should not be a problem - if you want to browse folders on the server from client
HTML page (or for that matter also jsp - you can still have HTML in jsp) -
you just put the link to your top directory where you want them to start and browser
will provide you with the browsing capabilities and you can also download files.
If you want to be much more fancy, you can also write an applet, and applet will
be allowed to connect to the server, once it will be loaded from the same server.
Though it would be some work, I guess.
Don't know if struts provide something on top of this, but browsing from HTML in general
does not need any special things.
Just make sure you don't have index.html inside these folders, where the client will browse
in such case it may open this page, instead of showing the folder.
ASKER
@for_yan
can you provide small example with providing the link to my top directory...
my directory structure...
ProjectX is project main directory
ProjectX: src, build, WebContent, content
WebContent: JSP, Meta-Inf
content: source, old_source
the main files that customer may browse are in content directory
either in source folder or old_source folder
can you provide small example with providing the link to my top directory...
my directory structure...
ProjectX is project main directory
ProjectX: src, build, WebContent, content
WebContent: JSP, Meta-Inf
content: source, old_source
the main files that customer may browse are in content directory
either in source folder or old_source folder
What is the path of your top directory you want people to see, relative to your root folder where you put your jsp ?
I'll post a simple example foo you soon. The only thing is that if your top browsing folder is unrelated to your root folder you'll need to create a link in your document root
ASKER
the top browsing folder should be my project folder...
ProjectX
ProjectX
Well, while further experimenting trying to write an example for you
I discovered that Tomcat itself does not provide such browsing capability;
it is Apache web server which does this for me.
Maybe you have apache web server running somewhere, which can access the same folder
from its document root - then you just need to put such link on your jsp or html page:
<a href="http://server.company.com:8100/projectX">click here</a>
and it will show you the list of files in the folder projectX - in this example assuming that this
folder is sitting immdeiately in the document root of your apache browser.
Perhaps Tomcat can also be configured to understand it, but
I didn't try. In my web applications, I anyway route static Html pages to
to apache.
Please, mind that this link itself may reside in your jsp and
the page containing this link itself may be served by Tomcat,
it is only that the link inside should contain reference to Apache
(like in my environement, port 8100 points to Apache,
port 8080 on the same erver points to Tomcat).
I discovered that Tomcat itself does not provide such browsing capability;
it is Apache web server which does this for me.
Maybe you have apache web server running somewhere, which can access the same folder
from its document root - then you just need to put such link on your jsp or html page:
<a href="http://server.company.com:8100/projectX">click here</a>
and it will show you the list of files in the folder projectX - in this example assuming that this
folder is sitting immdeiately in the document root of your apache browser.
Perhaps Tomcat can also be configured to understand it, but
I didn't try. In my web applications, I anyway route static Html pages to
to apache.
Please, mind that this link itself may reside in your jsp and
the page containing this link itself may be served by Tomcat,
it is only that the link inside should contain reference to Apache
(like in my environement, port 8100 points to Apache,
port 8080 on the same erver points to Tomcat).
ASKER
when I used the link It showed nothing it just launched the projectX
what I want is some thing like a browse button... which browse the folders in projectX
fodlers: jsp, meta-Inf
is it possible to have something like that....
what I want is some thing like a browse button... which browse the folders in projectX
fodlers: jsp, meta-Inf
is it possible to have something like that....
No if you put this link in your html page it will show you link "click here"
But most important question is - do you have Apache which can access the same folder from its doc root?
Button or link - this is detail, and it can be changed, but if you don't have apache (or maybe another web server)
then it will not do the browsing.
So first answer this question about web server.
ASKER
I do have tomcat web server....
and when I used that link It showed "click here"
when I clicked the link it redirected to the project home page....
and when I used that link It showed "click here"
when I clicked the link it redirected to the project home page....
Tomcat is strictly speaking not a web server - it is Java engine - it has
some functions of the web server, but not all, so it does not provide
this browing capability - maybe it can be configured, but if your server is
windows it is probably easier to install and run Apache in parallel
with Tomcat.
When you point the browser at some folder served by Apache,
then if inside the folder there exists file index.html
then browser will be directed to this file - and this
is how you get to the home page of your project.
If there inside the folder there is no file index.html
and if Apache is web server, then it will open this folder for browsing.
So if you have the right web server, you can rename your index.html
to, say projectX.html, then you'll
start your project as http://yourserver.yourcom.com:8080/projectX/projectX.html
and you'll start browing pointing the link to
http://yourserver.yourcom.com:8080/projectX/
It is also not difficult to make it look like a button, rather than link.
So these things can be resolved. What remains important is to have a web server
which allows to do this browsing. And i don't know if it is possible
to do with tomcat without apache.
some functions of the web server, but not all, so it does not provide
this browing capability - maybe it can be configured, but if your server is
windows it is probably easier to install and run Apache in parallel
with Tomcat.
When you point the browser at some folder served by Apache,
then if inside the folder there exists file index.html
then browser will be directed to this file - and this
is how you get to the home page of your project.
If there inside the folder there is no file index.html
and if Apache is web server, then it will open this folder for browsing.
So if you have the right web server, you can rename your index.html
to, say projectX.html, then you'll
start your project as http://yourserver.yourcom.com:8080/projectX/projectX.html
and you'll start browing pointing the link to
http://yourserver.yourcom.com:8080/projectX/
It is also not difficult to make it look like a button, rather than link.
So these things can be resolved. What remains important is to have a web server
which allows to do this browsing. And i don't know if it is possible
to do with tomcat without apache.
ASKER
hmm i cannot install apache web browser what ever i can do i must do it using tomcat....
so i am able to list the folders in the server with the help of code given by @rrz but want to view all the files in those folders....
so i am able to list the folders in the server with the help of code given by @rrz but want to view all the files in those folders....
apache is not a web browser, it is a web server
What is the operating system, where you are running tomcat?
What is the operating system, where you are running tomcat?
OK, I think I figured out with tomcat.
Go to your tomcat installation and then to folder conf
In that folder there should be a file called web.xml
Open this file in some simple text editor, say notepad.
Smewhere not far from the top you should see such text:
-------------------------- ----------
<servlet>
<servlet-name>default</ser vlet-name>
<servlet-class>org.apache. catalina.s ervlets.De faultServl et</servle t-class>
<init-param>
<param-name>debug</param-n ame>
<param-value>0</param-valu e>
</init-param>
<init-param>
<param-name>listings</para m-name>
<param-value>true</param-v alue>
</init-param>
<load-on-startup>1</load-o n-startup>
</servlet>
-------------------------- ---------- ---
Check if you have value "true" just below the param-name "listings".
Then let me know what you see - is it true or false - ?
Also let me know do you know how to restart your tomcat.
Go to your tomcat installation and then to folder conf
In that folder there should be a file called web.xml
Open this file in some simple text editor, say notepad.
Smewhere not far from the top you should see such text:
--------------------------
<servlet>
<servlet-name>default</ser
<servlet-class>org.apache.
<init-param>
<param-name>debug</param-n
<param-value>0</param-valu
</init-param>
<init-param>
<param-name>listings</para
<param-value>true</param-v
</init-param>
<load-on-startup>1</load-o
</servlet>
--------------------------
Check if you have value "true" just below the param-name "listings".
Then let me know what you see - is it true or false - ?
Also let me know do you know how to restart your tomcat.
ASKER
<servlet>
<servlet-name>action</serv let-name>
<servlet-class>org.apache. struts.act ion.Action Servlet</s ervlet-cla ss>
<init-param>
<param-name>config</param- name>
<param-value>/WEB-INF/stru ts-config. xml</param -value>
</init-param>
<init-param>
<param-name>debug</param-n ame>
<param-value>3</param-valu e>
</init-param>
<init-param>
<param-name>detail</param- name>
<param-value>3</param-valu e>
</init-param>
<load-on-startup>0</load-o n-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</serv let-name>
<url-pattern>*.do</url-pat tern>
</servlet-mapping>
I know how to restart the tomcat..
<servlet-name>action</serv
<servlet-class>org.apache.
<init-param>
<param-name>config</param-
<param-value>/WEB-INF/stru
</init-param>
<init-param>
<param-name>debug</param-n
<param-value>3</param-valu
</init-param>
<init-param>
<param-name>detail</param-
<param-value>3</param-valu
</init-param>
<load-on-startup>0</load-o
</servlet>
<servlet-mapping>
<servlet-name>action</serv
<url-pattern>*.do</url-pat
</servlet-mapping>
I know how to restart the tomcat..
No this is something about struts - I'm not interested in struts - I'm asking
about Tomcat itself - can you go to the Tomcat top level folder - then from that folder to cond and
there should be file web.xml (the one which is in TOMCAT_HOME/conf - or maybe CATALINA_HOME/conf)
and in that file I want section about DefaultServlet - this is all idependent of any struts.
about Tomcat itself - can you go to the Tomcat top level folder - then from that folder to cond and
there should be file web.xml (the one which is in TOMCAT_HOME/conf - or maybe CATALINA_HOME/conf)
and in that file I want section about DefaultServlet - this is all idependent of any struts.
...from that folder to "conf" - of course - (not cond - there was a misprint above)
ASKER
<init-param>
<param-name>listings</para m-name>
<param-value>true</param-v alue>
</init-param>
this section was not there in my web.xml but I added that now...
<param-name>listings</para
<param-value>true</param-v
</init-param>
this section was not there in my web.xml but I added that now...
But you added it to DefaultServlet section - correct?
Now restart Tomcat.
Then go to your ProjectX folder and find there some file like index.html or index.jsp - something like that
Then rename that file to ProjectX.html or ProjectX.jsp - depending on which of them you find
(make sure that no users are using your ProjectX right now).
Then go to browser and type in the address line:
http://yourserver.yourcomp.com/ProjectX
and let me know - do you see the listing of the files in ProjectX folder
Now restart Tomcat.
Then go to your ProjectX folder and find there some file like index.html or index.jsp - something like that
Then rename that file to ProjectX.html or ProjectX.jsp - depending on which of them you find
(make sure that no users are using your ProjectX right now).
Then go to browser and type in the address line:
http://yourserver.yourcomp.com/ProjectX
and let me know - do you see the listing of the files in ProjectX folder
You may probably want to have port for your tomcat, maybe like that,
http://yourserver.yourcomp.com:8080/ProjectX
or maybe your tomcat uses some other port
If this works, then you'll be starting your project as
http://yourservre.yourcomp.com:8080/ProjectX/ProjectX.html
http://yourservre.yourcomp.com:8080/ProjectX/ProjectX.html
ASKER
@for_yan
I did in the below way and it worked but few flaws can you correct them....
I have files in current_content and old_content folders.... but i am missing them...i mean they are not
displayed... only one level of things are displayed....
I did in the below way and it worked but few flaws can you correct them....
I have files in current_content and old_content folders.... but i am missing them...i mean they are not
displayed... only one level of things are displayed....
<select name ="loadFile">
<option value="second Please make a selection" >Please make a selection</option>
<%
String requestURL = request.getRequestURL().toString();
String servletPath = request.getServletPath();
String folderURL = requestURL.substring(0, requestURL.indexOf(servletPath));
for(File f : list){
if(f.isDirectory() && !f.getPath().endsWith("WEB-INF")){
String name = f.getName();
File[] files = f.listFiles();
out.print("<option value=\"" + name + "\">" + name + "</option>");
for(File file:files){
out.print("<option value=\"" + file.getName() + "\">" + file.getName() + "</option>");
}
}
}
%>
</select>
output:
Content
current_content
old_content
jsp
index.jsp
index2.jsp
Meta-Inf
MANIFEST.MF
Don't understand what you mean - it shows the files and folders - if you click on the folder it will go down into the folder
ASKER
yup it is showing the server side files and folders... something like browse...
i thought instead of browse I thought to use this drop down list... of files and folders from server....
in this way i am getting almost all files and folders.... but missing few....
I have.. 3 folders which has sub folders and files...
content: current_content, old_content
jsp: index.jsp, index2.jsp
meta-inf: manifest.mf
in the subfolders current_content, old_content i have few more files which are not displayed using the above code
what changes should i make...
i thought instead of browse I thought to use this drop down list... of files and folders from server....
in this way i am getting almost all files and folders.... but missing few....
I have.. 3 folders which has sub folders and files...
content: current_content, old_content
jsp: index.jsp, index2.jsp
meta-inf: manifest.mf
in the subfolders current_content, old_content i have few more files which are not displayed using the above code
what changes should i make...
do you have any guess why these files are nt shown?
It shows everything for me
It shows everything for me
ASKER
yes I know where is the problem....
File[] files = f.listFiles();
out.print("<option value=\"" + name + "\">" + name + "</option>");
this code brings the folder names
content, jsp, meta-inf
for(File file:files){
out.print("<option value=\"" + file.getName() + "\">" + file.getName() + "</option>");
}
this code brings the subfolders in the folder... here I think we should check again whether file.getname is a directory or not....
File[] files = f.listFiles();
out.print("<option value=\"" + name + "\">" + name + "</option>");
this code brings the folder names
content, jsp, meta-inf
for(File file:files){
out.print("<option value=\"" + file.getName() + "\">" + file.getName() + "</option>");
}
this code brings the subfolders in the folder... here I think we should check again whether file.getname is a directory or not....
Here is a JSP that demonstrates what I think you want to do. It is kind of a hack but it does work. Just copy and paste into your web app. One problem is that if you browse to a JSP file then you will see its execution output not the actually code in the file.
<%@ page import="java.io.File" %>
<%
String appPath = application.getRealPath("/");
int appPathLength = appPath.length();
String folderPath = request.getParameter("selectedFolder");
if(folderPath == null || "Please make a selection or go back to app root folder".equals(folderPath)){
folderPath = appPath;
}
File folder = new File(folderPath);
String requestURL = request.getRequestURL().toString();
String servletPath = request.getServletPath();
String appURL = requestURL.substring(0, requestURL.indexOf(servletPath));
%>
<html>
<body>
<form>
<select name="selectedFolder" >
<option value="Please make a selection or go back to app root folder" >
Please make a selection or go back to app root folder
</option>
<%
File[] folderList = folder.listFiles();
for(File f : folderList){
if(f.isDirectory() && !f.getName().endsWith("WEB-INF")){
String path = f.getPath();
out.print("<option value=\"" + path + "\">" + path + "</option>");
}
}
%>
</select>
<input type="submit" value="Browse folder" />
</form>
Selected folder path is <%=folderPath%><br/>
<%
File[] files = folder.listFiles();
String foldersPath = folderPath.substring(appPathLength);
foldersPath = foldersPath.replaceAll("[\\\\]","/");
for(File file : files){
if(!file.isDirectory()){
out.print("<a href=\"" + appURL + "/" + foldersPath + "/"
+ file.getName() + "\">" + file.getName() + "</a><br/>");
}
}
%>
</body>
</html>
ASKER
hmm its working but it is showing complete path in the drop down list...
when i replaced
String path = f.getPath();
out.print("<option value=\"" + path + "\">" + path + "</option>");
with
String name = f.getName();
out.print("<option value=\"" + name+ "\">" + name + "</option>");
i am getting just folder names... but ... when i click on browse button it shows errors can we
have just names instead of whole path...
when i replaced
String path = f.getPath();
out.print("<option value=\"" + path + "\">" + path + "</option>");
with
String name = f.getName();
out.print("<option value=\"" + name+ "\">" + name + "</option>");
i am getting just folder names... but ... when i click on browse button it shows errors can we
have just names instead of whole path...
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
that works... but i have a small concern... is it possible to do... it automatically instead of clicking browse folder button... because...
I am embeding this code in a form which already has an action...
I want this selected file location value in server...
how can i get that value
String file_location = (String)request.getAttribu te("select edFolder") ;
will it give me the path to the selected one from dropdown list...
I am embeding this code in a form which already has an action...
I want this selected file location value in server...
how can i get that value
String file_location = (String)request.getAttribu
will it give me the path to the selected one from dropdown list...
ASKER
please see the below code i just attached another submit button which calls an action class
when i click the browse button its showing an error
and I want to have the selected filepath in the loadFileName action class...
so that i can parse the file selected by customer...
so I called
String file_location = (String)request.getAttribu te("select edFolder") ;
but it gives me nothing...
when i click the browse button its showing an error
and I want to have the selected filepath in the loadFileName action class...
so that i can parse the file selected by customer...
so I called
String file_location = (String)request.getAttribu
but it gives me nothing...
<%@ page import="java.io.File" %>
<%
String appPath = application.getRealPath("/");
int appPathLength = appPath.length();
String folderPath = request.getParameter("selectedFolder");
if(folderPath == null || "Please make a selection or go back to app root folder".equals(folderPath)){
folderPath = appPath;
}
File folder = new File(folderPath);
String requestURL = request.getRequestURL().toString();
String servletPath = request.getServletPath();
String appURL = requestURL.substring(0, requestURL.indexOf(servletPath));
%>
<html>
<body>
<form action="/formsData" method ="post">
<select name="selectedFolder" >
<option value="Please make a selection or go back to app root folder" >
Please make a selection or go back to app root folder
</option>
<%
File[] folderList = folder.listFiles();
for(File f : folderList){
if(f.isDirectory() && !f.getName().endsWith("WEB-INF")){
String path = f.getPath();
String name = f.getName();
out.print("<option value=\"" + path + "\">" + name + "</option>");
}
}
%>
</select>
<input type="submit" value="Browse folder" />
<input class="button" value="Submit" type="button" onclick="performAction()" />
</form>
Selected folder path is <%=folderPath%><br/>
<%
File[] files = folder.listFiles();
String foldersPath = folderPath.substring(appPathLength);
foldersPath = foldersPath.replaceAll("[\\\\]","/");
for(File file : files){
if(!file.isDirectory()){
out.print("<a href=\"" + appURL + "/" + foldersPath + "/"
+ file.getName() + "\">" + file.getName() + "</a><br/>");
}
}
%>
</body>
<script language="JavaScript" type="text/javascript">
function performAction() {
document.forms[0].action = "formsData.po?method=loadFileName";
document.forms[0].submit();
}
</script>
</html>
https://www.experts-exchange.com/questions/26820259/browse-folder.html?cid=1572&anchorAnswerId=34891102#a34891102