Resolva problemas de caminho na web java:
Os caminhos usados em Java são divididos em dois tipos: caminhos absolutos e caminhos relativos. Por fim, o Java só pode usar caminhos absolutos para encontrar recursos. Todos os métodos para encontrar recursos em caminhos relativos são apenas alguns métodos convenientes. Mas é a API que nos ajuda a construir um caminho absoluto na parte inferior para encontrar recursos!
Ao desenvolver aplicativos da Web, geralmente é necessário obter o caminho físico do Webroot atual no servidor.
Se for um servlet, ação, controlador ou filtro, ouvinte, interceptador e outras classes relacionadas, precisamos apenas obter o servletContext e, em seguida, usar o ServletContext.getRealPath ("/") para obter o endereço físico do aplicativo atual no servidor.
Se o servletContext não puder ser recuperado na classe, há duas maneiras de fazê -lo:
1. Use o mecanismo de carregamento da classe de Java para chamar o xxx.class.getclassloader (). GetResource (""); Método para obter o ClassPath e, em seguida, processe para obter o diretório Webroot. Esse método só pode entrar em vigor sob Webroot/Web-Inf/Classes. Se a classe for empacotada em um arquivo JAR, o método será inválido. No momento, o seguinte método deve ser usado.
2. A idéia da estrutura da primavera. Em web-inf/web.xml, crie um param do webApAprootKey, especifique um valor (padrão é webapp.root) como o valor da chave e, em seguida, execute string webAppRootKey = getServletContext (). GetRealPath ("/"); através do ouvinte, filtro ou servlet. Em seguida, escreva o WebApp.root correspondente ao WebApprootKey como chave e valor nas propriedades do sistema Propriedades do sistema. Em seguida, o caminho físico de Webroot é obtido através do System.GetProperty ("WebApp.root") no programa.
De acordo com a segunda idéia, podemos expandi -la ainda mais. No entanto, para aplicativos implantados em um servidor, se não for suas necessidades, leia -o.
Aqui estão algumas maneiras de obter o caminho de classe e o caminho absoluto para a classe atual. Você pode usar alguns desses métodos para obter o caminho absoluto para os recursos necessários:
1.
Débitnoteaction.class.getResource ("")O que você obtém é o diretório URI do arquivo atual FileTest.Class. Não incluir você!
como:
Arquivo:/D:/Eclipse/springtest/webroot/web-inf/classes/
ATCARNET/SRC/COM/EVI/MODULES/ATACARNET/ACTION/
2.
Débitnoteaction.class.getResource ("/")O que você recebe é o caminho absoluto do URI do caminho de classe atual.
como:
Arquivo:/D:/Eclipse/springtest/webroot/web-inf/classes/
3.
Thread.CurrentThread (). GetContextClassLoader (). GetResource ("")O que você obtém também é o caminho absoluto do URI do caminho atual
como:
Arquivo:/D:/Eclipse/springtest/webroot/web-inf/classes/
4.
Débitnoteaction.class.getclassloader (). GetResource ("")ou
Classloader.getSystemResource ("")O que você obtém também é o caminho absoluto do URI do caminho de classe atual.
como:
Arquivo:/D:/Eclipse/springtest/webroot/web-inf/classes/
5. Obtenha o caminho relativo do servidor
System.getProperty ("user.dir")Por exemplo: e: /apache-tomcat-5.5.16/apache-tomcat-5.5.16/bin
Eu recomendo usar thread.currentThread (). GetContextClassloader (). GetResource ("") para obter a notação URI do caminho absoluto do caminho de classe atual
6. Obtenha o caminho absoluto no projeto
Geralmente usado
request.getRealPath ("/")ou
request.getRealPath ("/config/")Mas não é recomendável usar o request.getRealPath ("/"). Você pode experimentar o método ServletContext.getRealPath ("/") para obter o caminho absoluto para o diretório raiz do aplicativo da web
É muito fácil obter o arquivo SRC, porque o SRC é o diretório relativo padrão. Por exemplo, se você disser que deseja obter o arquivo test.java no diretório COM no SRC, você só precisa que isso seja suficiente.
Arquivo f = novo arquivo (com/test.java);
Mas se eu quiser obter arquivos que não estejam no diretório SRC ou no diretório Webroot, preciso obtê -los do mesmo nível de SRC ou Webroot, por exemplo, documento
Meu método difícil é implementado assim:
String path = this.getServletContext (). GetRealPath ("/"); Propriedades p = new Properties (); P.load (new FileInputStream (novo arquivo (Path.substring (0, (PATH.LASTIndexof ("// webroot") + 1) +) + "doc/db.properties"))); System.out.println (P.GetProperty ("DriverName"));Obrigado pela leitura, espero que isso possa ajudá -lo. Obrigado pelo seu apoio a este site!