Я отправляю запросы на сервер.Контроллеры управляют ими и отправляют ответ с HTML-контентом, но этот контент не загружается как обычная JSP-страница.Я вижу ответ в Developer Tools в браузере (html-код и вижу его в окне предварительного просмотра), но страница не загружает данные из ответа.Он все еще остается открытым на странице, с которой я отправил ответ.Что я должен сделать для загрузки этой обычной страницы?
Контроллер:
java
@Controller
public class FormController {
private static final Logger LOGGER = LogManager.getLogger();
private static final ObjectMapper MAPPER = new ObjectMapper();
@RequestMapping(value="/authorization", method=RequestMethod.POST)
public ModelAndView authorization(HttpServletRequest request, HttpServletResponse response) {
Map<String, String> userAuthForm;
try {
userAuthForm = MAPPER.readValue(request.getReader().lines().collect(Collectors.joining()),
new TypeReference<Map<String, String>>() {
});
ModelAndView mv = new ModelAndView();
mv.setViewName("page_of_user");
mv.addObject("login", userAuthForm.get("login"));
mv.addObject("password", userAuthForm.get("password"));
response.addCookie(new Cookie("authtoken", "0000012T"));
return mv;
} catch (IOException e) {
LOGGER.error("Error reading request data!");
ModelAndView mv = new ModelAndView();
mv.setViewName("/index");
response.setStatus(401);
return mv;
}
}
}
Конфигурация
@Configuration
@EnableWebMvc
@ComponentScan({"com.d1abl023.navy"})
public class NavyConfiguration implements WebMvcConfigurer {
@Bean
public InternalResourceViewResolver viewResolver(){
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry){
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
}
JS-функция, которая отправляет запрос
function sendFormData(form) {
var authData = {
"login": form.login.value,
"password": form.password.value
};
var requestString = JSON.stringify(authData);
var request = new XMLHttpRequest();
request.open("post", "authorization", true);
request.send(requestString);
return false;
}
JSP-страница, где вызывается функция JS
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>NAVY</title>
<link href="<c:url value='resources/css/index.css'/>" type="text/css" rel="stylesheet">
<link href="<c:url value='resources/css/main.css'/>" type="text/css" rel="stylesheet">
</head>
<body>
<div id="header">
HEADER
</div>
<div id="body">
<div id="reg_auth_info">
<div id="reg_auth_info_text">Register or authenticate!</div>
<form id="auth_form" onsubmit='return sendFormData(this)'>
<p>
<label for="login" class="reg_form_labels">Login:</label>
<input type="text" id="login" name="login" class="reg_form_fields" required>
</p>
<p>
<label for="password" class="reg_form_labels">Password:</label>
<input type="password" id="password" name="password" class="reg_form_fields" required>
</p>
<button type="submit" class="reg_form_button" form="auth_form">Log in</button>
<br>
<button type="button" class="reg_form_button" onclick="goToRegistration();">Registration</button>
</form>
</div>
</div>
<div id="footer">
FOOTER
</div>
<script src="<c:url value='resources/js/index.js'/>" type="text/javascript"></script>
</body>
</html>
Я ожидаю, что будет загружена новая страница с требуемым содержимым, но в ответ будет получен только HTML-текст.