Avant-propos :
Il y a quelque temps, en raison de la gestion de la création et du déplacement de fichiers sous les applications Web, cela impliquait de nombreux problèmes concernant les chemins relatifs, les chemins absolus et d'autres problèmes en Java
. Parallèlement, j'ai découvert les chemins relatifs, les chemins absolus et les classes Java.io.File
dans les applications Web. J'ai également trouvé quelques informations. J'espère que si vous rencontrez des problèmes similaires, vous pourrez les résoudre plus efficacement.
============================================ == =====================================
Compréhension des concepts de base
Chemin absolu : Le chemin absolu est le chemin réel du fichier ou du répertoire sur votre page d'accueil sur le disque dur, (URL et chemin physique Par exemple :
C:/xyz/test.txt représente le). chemin absolu du chemin du fichier test.txt. www.sun.com/index.htm représente également un chemin absolu d'URL
.
Chemin relatif : un chemin relatif à un répertoire de base. Contient le chemin relatif du Web (répertoire relatif en HTML). Par exemple : dans
Servlet, "/" représente le répertoire de l'application Web. et une représentation relative du chemin physique. Par exemple : "./" représente le répertoire actuel,
"../" représente le répertoire de niveau supérieur. Cette représentation similaire appartient également au chemin relatif.
De plus, pour l'URI, l'URL, l'URN, etc., veuillez vous référer aux normes de documents liées aux RFC.
RFC 2396 : Identificateurs de ressources uniformes (URI) : syntaxe générique,
(www.ietf.org/rfc/rfc2396.txt)
2. Chemins relatifs et chemins absolus dans .
2.1 Adresse côté serveur
L'adresse relative côté serveur fait référence à l'adresse relative à votre application web. Cette adresse est résolue côté serveur
(différente du html et du JavaScript. Adresses relatives, elles sont analysées par le navigateur client) En d'autres termes, les adresses relatives de
dans jsp et servlet à ce moment doivent être relatives à votre application Web, c'est-à-dire relatives à http://192.168.0.1/ application Web/.
Les endroits où elle est utilisée sont :
forward : request.getRequestDispatcher(address) dans la servlet ; cette adresse est analysée par
côté serveur, donc si vous souhaitez transférer vers un .jsp, il devrait écrire ceci :
request.getRequestDispatcher("/user/a.jsp") Ceci/par rapport à l'application Web actuelle webapp,
son adresse absolue est : 192.168.0.1/webapp/user/ a.jsp.
sendRedirect : in jsp480c461738e49b2ea7fd7de2cc345f87
2.22. Adresse du client
Tout html Les adresses relatives dans les pages sont relatives au répertoire racine du serveur (http://192.168.0.1/),
plutôt que (avec le répertoire de l'application web sous le répertoire) http://192.168.0.1/webapp/ de.
L'adresse de l'attribut action du formulaire en HTML doit être relative au répertoire racine du serveur 192.168.0.1/),
Donc, si soumis à a.jsp : action="/webapp/user/a. jsp" ou action="784ef932070c663c70d86af5e4d3d09c"/user/a.jsp;
Soumis au servlet en tant qu'actiom="/webapp/handleservlet"
JavaScript est également analysé sur du côté client, donc son chemin relatif est le même que celui du formulaire.
Par conséquent, dans des circonstances normales, il est préférable d'ajouter
<%=request.getContextPath()%> devant CSS, Javascript.Action et autres attributs référencés dans JSP/HTML pages. ;, pour garantir que les fichiers référencés appartiennent au répertoire de l’application Web.
De plus, vous devriez essayer d'éviter d'utiliser des chemins relatifs comme ".", "./", "../../" et d'autres chemins relatifs similaires par rapport à l'emplacement du fichier de cette façon
. il est facile de causer des problèmes lorsque le fichier est déplacé.
3. Obtenir le chemin relatif et le chemin absolu de l'application actuelle dans JSP/Servlet
3.1 Obtenir le chemin relatif et le chemin absolu de l'application actuelle dans JSP
Le chemin absolu correspondant vers le répertoire racine : request.getRequestURI()
Le chemin absolu du fichier :application.getRealPath(request.getRequestURI());
Le chemin absolu de l'application web actuelle : application.getRealPath("/" );
Récupérer le fichier demandé Répertoire supérieur : new File(application.getRealPath(request.getRequestURI())).getParent()
3.2 Obtenir le chemin relatif et le chemin absolu de l'application actuelle dans Servlet
Le chemin absolu correspondant au répertoire racine : request.getServletPath();
Le chemin absolu du fichier :request.getSession().getServletContext().getRealPath
(request.getRequestURI())
Le chemin absolu de l'application Web actuelle : servletConfig.getServletContext() .getRealPath("/");
(ServletContext对象获得几种方式: javax.servlet.http.HttpSession.getServletContext() javax.servlet.jsp.PageContext.getServletContext() javax.servlet.ServletConfig.getServletContext() )
Méthode de 4.java pour obtenir le chemin relatif et le chemin absolu dans Class
4.1 Obtention du chemin absolu dans une classe Java distincte
D'après le fichier Doc de java.io.File, on peut voir :
Par défaut, le répertoire représenté par new File("/") est : System.getProperty("user.dir").
Le programme suivant obtient le chemin actuel de la classe d'exécution
package org.cheng.file;import java.io.File; public class FileTest { public static void main(String[] args) throws Exception { System.out.println(Thread.currentThread().getContextClassLoader().getResource("")); System.out.println(FileTest.class.getClassLoader().getResource("")); System.out.println(ClassLoader.getSystemResource("")); System.out.println(FileTest.class.getResource("")); System.out.println(FileTest.class.getResource("/")); //Class文件所在路径 System.out.println(new File("/").getAbsolutePath()); System.out.println(System.getProperty("user.dir")); }}
4.2 La classe Java du serveur obtient le chemin actuel (depuis le réseau)
(1).Weblogic
Le répertoire racine des fichiers système de WebApplication est le répertoire racine de votre installation weblogic.
Par exemple : si votre weblogic est installé sur c:/bea/weblogic700....
Ensuite, le chemin racine de votre fichier est c:/.
Il existe donc deux façons d'accéder à votre fichier côté serveur :
a. Utilisez le chemin absolu :
Par exemple, placez votre fichier de paramètres dans c:/yourconfig/yourconf.properties,
utilisez directement new FileInputStream("yourconfig/yourconf.properties" ) ;
b. Utilisez des chemins relatifs :
Le répertoire racine du chemin relatif est le chemin racine de votre application Web, qui est le répertoire de niveau supérieur de WEB-INF. Placez votre fichier de paramètres dans
Utilisez comme ceci :
new FileInputStream("./yourconfig/yourconf.properties");
Les deux méthodes sont disponibles, vous pouvez choisir.
comme racine. test File f = new File("a.htm" );
Ce a.htm se trouve dans le répertoire d'installation de résine
WEB-INF/classes sous le chemin racine de publicationLe chemin par défaut pour utiliser cette méthode est : WEB-INF/classes. Déjà testé dans Tomcat. 5. Chemin relatif lors de la lecture de fichiers, évitez l'utilisation de codage en dur et de chemins absolus. (Depuis Internet)
5.1 Utilisez le mécanisme DI de Spring pour obtenir des fichiers afin d'éviter le codage en dur.
Référez-vous au contenu de connexion suivant :
www.javajia.net/viewtopic.php?p=90213&
5.2 Lecture des fichiers de configuration
Référez-vous au contenu de connexion suivant :
dev.csdn .net/develop/article/39/39681.shtm
5.3 Lire un fichier XML via un chemin virtuel ou un chemin relatif pour éviter le codage en dur
Reportez-vous au contenu de connexion suivant :
club.gamvan.com/ club/ clubPage.jsp?iPage=1&tID=10708&ccID=8
6. Opérations courantes de fichiers en Java (copier, déplacer, supprimer, créer, etc.) (à partir d'Internet)
Java couramment utilisé Classes d'opérations sur les fichiers
www.easydone.cn/014/200604022353065155.htm
Opérations sur les fichiers Java (en JSP)
www.pconline.com.cn/pcedu/empolder/gj/java/0502 /559401.html
www.51cto.com/html/2005/1108/10947.htm
www.gamvan.com/developer/java/2005/2/264.html
Grâce à l'utilisation du contenu ci-dessus, vous pouvez résolvez le problème du déplacement de fichiers et de la recherche de fichiers côté serveur d'applications Web, copiez
, supprimez des fichiers et autres opérations, et en même temps, le concept d'adresse relative et d'adresse absolue du serveur est plus clair.
Il est recommandé de se référer au document standard RFC de l'URI. En même temps, vous avez une compréhension approfondie de Java.io.File Java.NET.URI.
La compréhension d'autres aspects peut être plus approfondie et approfondie.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!