Как проанализировать URL-адрес, получить имя файла, а затем заменить расширение файла с помощью скриптлета JSTL и Java

Мне нужно получить "имя файла" из URL-адреса

Вот я заявляю

<p:out var="path" value="${webObject.path}" scope="page"/>
<c:set var="string1" value="${path}" />
<p:out value="${string1}" />

это возвращает "dir1/dir2/dir3/filename.xml" на веб-странице

Мне нужен Java-скриптлет, который берет созданный URL-адрес (dir1/.../filename.xml) и получает «имя файла» без каталогов впереди и без .xml в конце.


person brian    schedule 10.08.2011    source источник


Ответы (1)


Не используйте скриптлеты. Используйте функции JSTL в EL.

<c:set var="pathparts" value="${fn:split(path, '/')}" />                <!-- String[] with values "dir1", "dir2", "dir3" and "filename.xml" -->
<c:set var="filename" value="${pathparts[fn:length(pathparts) - 1]}" /> <!-- Last item of String[]: "filename.xml" -->
<c:set var="basename" value="${fn:split(filename, '.')[0]}" />          <!-- Result: "filename" -->

Если вам действительно нужно написать код Java для этого, рассмотрите функцию EL. Например.

<c:set var="basename" value="${util:basename(path)}" />

с участием

public static String basename(String path) {
    String[] pathparts = path.split("/");
    String filename = pathparts[pathparts.length - 1];
    return filename.split("\\.")[0];
}

Как зарегистрировать функцию EL, посмотрите пример где-то внизу Скрытые функции JSP/Сервлет.

person BalusC    schedule 10.08.2011