У меня есть приложение, построенное на Spring 4.3.20 и Hibernate 3.6, мы использовали SimpleUrlHandlerMapping
в конфигурации XML для отображения контроллера, и оно работает нормально.
Я пытаюсь использовать пружинную загрузку 1.5.17. RELEASE для совместимости с текущей версией весны 4.3.20-RELEASE. Теперь, после решения всех проблем компиляции и развертывания, я не вижу, как мой существующий контроллер работает нормально с отображением в браузере / POST / GET. Всегда отображается ошибка 404.
Я проверил журналы во время развертывания и обнаружил, что сопоставление выполнено правильно, перейдите в журналы ниже:
2019-06-03 12:39:26.333 INFO 15630 --- [nio-8084-exec-9] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
Я также создал один отдельный контроллер с аннотацией (без SimpleUrlHandlerMapping
), и его отображение выполняется правильно в соответствии с журналами, и он отлично работает
2019-06-03 12:32:10.437 INFO 26049 --- [nio-8084-exec-9] .w.s.m.a.DefaultAnnotationHandlerMapping : Mapped URL path [/testc] onto handler 'testController'
2019-06-03 12:32:10.437 INFO 26049 --- [nio-8084-exec-9] .w.s.m.a.DefaultAnnotationHandlerMapping : Mapped URL path [/testc.*] onto handler 'testController'
2019-06-03 12:32:10.437 INFO 26049 --- [nio-8084-exec-9] .w.s.m.a.DefaultAnnotationHandlerMapping : Mapped URL path [/testc/] onto handler 'testController'
2019-06-03 12:32:10.583 INFO 26049 --- [nio-8084-exec-9] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/testc],methods=[GET]}" onto public java.lang.String com.krawler.spring.TestController.test()
2019-06-03 12:32:16.898 INFO 26049 --- [nio-8084-exec-9] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/testc],methods=[GET]}" onto public java.lang.String com.krawler.spring.TestController.test()
2019-06-04 16:55:12.448 INFO 13811 --- [nio-8084-exec-9] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/AuthHandler/*.do] onto handler 'authHandlercontroller'
Я пытался с @Controller с jsp страницей, и он работает нормально, но не с тем, где мы используем ModelAndView.
Класс контроллера
@Controller
@RequestMapping("testc")
public class TestController {
@GetMapping
public String test(){
return "test";
}
}
/ WEB-INF / JSP / test.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
AuthHandlreController
public ModelAndView verifyUserLogin(HttpServletRequest request, HttpServletResponse response) throws ServletException {
JSONObject jobj = new JSONObject();
.....
return new ModelAndView("jsonView_ex", "model", jobj.toString());
}
Боб для jsonView_ex
<bean name="jsonView_ex" class="com.mycompany.views.JsonView_ex">
<property name="contentType">
<value>text/html; charset=ISO-8859-1</value>
</property>
</bean>
JsonView_ex.java
public class JsonView_ex extends AbstractView {
protected void renderMergedOutputModel(Map map,
HttpServletRequest request, HttpServletResponse response) throws Exception {
String model = (String) map.get("model");
try {
JSONObject jobj = new JSONObject(model);
if (jobj.has("msg")) {
if (jobj.getString("msg").toLowerCase().contains("system failure:")) {
jobj.remove("msg");
jobj.put("msg", "Some problem occurred while performing the operation. Please try again later.");
model = jobj.toString();
}
}
} catch (JSONException je) {
model = (String) map.get("model");
}
// write the XML data to the response
response.getOutputStream().write(model.getBytes());
response.setContentType("text/html; charset=UTF-8");
}
}
TestController
работает нормально, а не AuthHandlerController
и
Кажется, проблема только в виде, но не знаю, как ее решить.