Spring mvc servlet-mapping и 406 http core
Я работаю с Spring mvc 4 и glassfish 4, и у меня были некоторые проблемы с вызовами ajax, возвращающими объект как json, с @ResponseBody. Затем я нашел правильное решение HTTP Status 406. Spring MVC 4.0, jQuery, JSON, которое не полностью работало над моим проектом, я думаю, потому что мое сервлет-отображение.
Мое отображение сервлета было:
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
Но я хочу также обработать запрос как /*, чтобы избежать проблем с 406 http кодом, поэтому я попробовал это:
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
Но затем диспетчер также отображает *.jsp и разрывы. В конце я попробовал это:
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Но тогда диспетчер отображает *.js и *.css как bootstrap, jquery и т. Д.
И теперь у меня кончились идеи.
1 ответ
В конце я это исправлю. С одной стороны, чтобы исправить проблему с кодом 406 http, я указываю тип контента из ajax и удаляю *.htm из контроллера.
А с другой стороны, мне пришлось исправить отображение сервлета и добавить тег ресурса, чтобы избежать новых проблем.
Теперь мое отображение сервлетов выглядит так:
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
И я добавляю эту строку в диспетчер-сервлет:
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/"
p:suffix=".jsp" />
<mvc:resources mapping="/resources/**" location="/resources/" />