JavaWeb工程classes下的类访问别的资源--动态传入路径

描述:小编用VSCode建立了一个JavaWeb工程WEB-INF下的classes下的类访问别的资源(主要是JSP中传入需要解析的xml文件,在java中对给入的文件使用DOM4j进行解析),需要访问根目录下的如xml文件夹中的xml文件

原理:WEB-INF安全性很高,直接从java中访问外面的资源很难访问而且基本上没有什么可移植性可言,所以我们可以在JSP中动态传入路径

方法:request.getServletContext().getRealPath("/")获取根目录,然后使用File.separator进行文件分隔提高可移植性,例如传入根目录下的xml文件夹下的:adminArea.xml

String path = request.getServletContext().getRealPath("/")  + "xml" + File.separator + "adminArea.xml";

例如:现在我的WEB-INF下的classes中的AdminArea.class文件(Servlet编译java文件生成的class文件就是放在classes里面),然后需要访问根目录下xml文件中area.xml,此时如果我直接从java中拿该资源是没办法拿到的,所以我们需要将该文件传进去,传入的方式就是使用request的getServletContext()获取application对象,然后再调用getRealPath("/")获取虚拟路径对应的真实路径,此时传入的参数就是request.getServletContext().getRealPath("/")  + "xml" + File.separator + "area.xml";



参考代码:

<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.io.*"%>
<%@ page import="com.adminarea.AdminArea"%>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>用户注册</title>
    </head>
    <body>
        <%
            // 开始解析-传入需要解析的文件
            String path = request.getServletContext().getRealPath("/")  + "xml" + File.separator + "adminArea.xml";
            AdminArea admin = new AdminArea(path);    // 调用的java文件(可以是Servlet或者JavaBean都行)
        %>
        <%=admin.getProvince()%>
    </body>
</html>

猜你喜欢

转载自blog.csdn.net/sinat_34104446/article/details/79822460