Если у вас возникает ошибка вида (взято из логов Apache Tomcat):
1 |
05-Aug-2016 16:44:38.877 WARNING [tomcat-http--4] org.springframework.web.servlet.PageNotFound.noHandlerFound No mapping found for HTTP request with URI [/spring-commons-fileupload/WEB-INF/views/fileUploadForm.jspx] in DispatcherServlet with name 'appServlet' |
И вы используете org.springframework.web.servlet.view.InternalResourceViewResolver :
1 2 3 4 5 |
<beans:bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <beans:property name="prefix" value="/WEB-INF/views/" /> <beans:property name="suffix" value=".jspx" /> </beans:bean> |
То скорее всего вы описали servlet-mapping в web.xml вот так:
1 2 3 4 |
<servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> |
Шаблон /* означает, что сервлет обрабатывает любые запросы. Каким-то образом запросы к файлам jsp/jspx ( /spring-commons-fileupload/WEB-INF/views/fileUploadForm.jspx ) обрабатываются этим же сервлетом. Чтобы исправить эту ошибку нужно настроить servlet-mapping на такой шаблон, с которым пути к файлам jsp и jspx не будут совпадать, например так:
1 2 3 4 |
<servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/appServlet/*</url-pattern> </servlet-mapping> |
В этом случае ваш DispatcherServlet будет обрабатывать запросы по appServlet/*, и с путями jsp/ jspx эти запросы пересекаться не будут. Например, если форма логина у вас была на http://localhost:8080/myapplication/login, то теперь она у вас будет на http://localhost:8080/myapplication/appServlet/login.
Либо можно использовать нечто вроде такого:
1 2 3 4 |
<servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/*.do</url-pattern> </servlet-mapping> |
Тогда ваш DispatcherServlet будет обрабатывать запросы, заканчивающиеся на .do, и с путями jsp/ jspx пересечений тоже не будет.