Новый C++ 0x Стандарт определяет другой способ сделать это:
http://en.wikipedia.org/wiki/C%2B%2B0x#New_string_literals
Похоже, DispatcherServlet пытается обработать запрос на apiForm.jsp, что говорит мне о том, что ваше отображение сервлета web.xml направляет запросы для этого пространства на DispatcherServlet.
Вы могли бы есть что-то подобное?
<servlet-mapping>
<servlet>dispatcher</servlet>
<url-pattern>/*</url-pattern>
</servlet-mapping>
Попробуйте вызвать свои контроллеры с другим расширением (например .do) и обновите отображение сервлетов в соответствии с
<servlet-mapping>
<servlet>dispatcher</servlet>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
Что вам нужно, так это иметь контроллер, который сначала реагирует на URL-адрес, а затем отображает ваш jsp. См. Эту ссылку для решения .
Да, я знаю, что опаздываю на эту вечеринку, но это может помочь другим.
Контейнер сервлета выбирает отображение на основе самого длинного пути, который соответствует. Таким образом, вы можете вставить это сопоставление для своих JSP, и оно будет выбрано вместо сопоставления / *.
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>/WEB-INF/pages/*</url-pattern>
</servlet-mapping>
На самом деле для Tomcat это все, что вам нужно, поскольку jsp - это сервлет, который существует из коробки. Для других контейнеров вам нужно либо узнать имя сервлета JSP, либо добавить определение сервлета, например:
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
</servlet>