powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Interceptor 404 при создании нового файла
4 сообщений из 4, страница 1 из 1
Spring Interceptor 404 при создании нового файла
    #38280304
MarMot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Есть Spring Interceptor, который перехватывает обращение к папке с ресурсами, проверяет доступ, и если доступ разрешен, то создает файл.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
public class AccessInterceptor implements HandlerInterceptor {

    ...

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {
        logger.info("We now intercept that url " + request.getRequestURI());

	...

	// Проверка доступа для текущего пользователя
        if (validatePageNumber(pageNum, hashName)) {
            // Создание снэпшота
	    createImage(pageNum, hashName);
            return true;
        }

        response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
        return false;
    }

    private void createImage(int pageNum, String hashName) throws FileNotFoundException, IOException {
        String snapshotPath = ConfigProperties.SOURCE_FOLDER + "/" + ConfigProperties.SNAPSHOT_FORMAT + "/" + hashName + "/";
        File snapshotFolder = new File(snapshotPath);
        snapshotFolder.mkdirs();
        File snapshot = new File(snapshotPath + pageNum);
        // Если снэпшота нет, то создаем его
        if (!snapshot.isFile()) {
            _parser.getImage(hashName, pageNum);
            // Проверяем существование файла
	    if (!snapshot.isFile()) {
                logger.error("SNAPSHOT " + snapshotPath + imageName + " didn't generate!!!");
            }
        }
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        logger.info("After handling the request " + request.getRequestURI());
        String url = request.getRequestURI();
        String snapshotPath = ConfigProperties.SOURCE_FOLDER + url;
        File snapshot = new File(snapshotPath);
        // Еще раз проверяем существование файла        	
	if (snapshot.isFile()) {
            logger.info("exist");
        } else {
            logger.info("don't exist");
        }
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        logger.info("After rendering the view " + request.getRequestURI());
    }

}



Проблема в том, что при первом обращении к пока не созданному файлу, возвращается 404 ошибка, хотя во всех проверках в логи пишется, что файл создан. При повторном обращении файлы нормально возвращаются.

В чем может быть загвоздка?
...
Рейтинг: 0 / 0
Spring Interceptor 404 при создании нового файла
    #38280348
MarMot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мапинг interceptor-а

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
	
       <mvc:interceptors>
		<mvc:interceptor>
			<mvc:mapping path="/PNG/**" />
			<bean id="AccessInterceptor"
				class="com.web.interceptors.PdfViewerAccessInterceptor" />
		</mvc:interceptor>
	</mvc:interceptors>

	<mvc:resources mapping="/PNG/**" location="/PNG/" />
...
Рейтинг: 0 / 0
Spring Interceptor 404 при создании нового файла
    #38280497
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Явно в строке
Код: java
1.
if (validatePageNumber(pageNum, hashName)) {

а что делает validatePageNumber() - не понятно. Похоже, при первом заходе preHandle выполняется до любых авторизаций, поэтому проверка не срабатывает.
...
Рейтинг: 0 / 0
Spring Interceptor 404 при создании нового файла
    #38280903
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MarMotВ чем может быть загвоздка?

Попробуйте продебажить код. В пошаговом режиме все должно быть прозрачно. Если есть проблемы в настройке IDE для дебагера спросите как это делается. Подскажем в меру возможности.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Interceptor 404 при создании нового файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]