@RequestMapping("/page1")
public String page(HttpServletResponse response, HttpServletRequest request) throws IOException, ServletException, URISyntaxException{
File file = new File("C:\\page2.jsp");
byte [] byteArray = Files.readAllBytes(file.toPath());
String html = new String (byteArray, "UTF-8");
Writer writer = new PrintWriter(new OutputStreamWriter(
response.getOutputStream()));
writer.append(html);
return "page";
byte [] byteArray = Files.readAllBytes(file.toPath());
String html = new String (byteArray, "UTF-8");
Writer writer = new PrintWriter(new OutputStreamWriter(
response.getOutputStream(), StandardCharsets.UTF_8), true);
try {
writer.append(html);
} finally {
writer.flush();
writer.close();
}
<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
<!DOCTYPE html>
<html lang="en">
<head>
<script>
var request = $.ajax({
url: "page",
method: "POST",
dataType: "html"
});
request.done(function( msg ) {
$(this).html(msg);
});
</script>
@PostMapping("/search")
public ModelAndView search(
) {
ModelAndView view = new ModelAndView("search"); // .jsp template
view.addObject("result", result);
return view;
}
function search() {
$.ajax({
type: 'POST',
url: contextPath + '/search',
data: 's=' + search,
timeout: 30000,
success: function (result) {
$('#custom_block').html(result);
},
error: function () {
$('#regErrorText').text('Error occurred!');
},
});
}
taglib prefix="c"
и taglib prefix="sec"
это следующая конструкция на странице отображения: <%out.print(LoaderPage.getHtml());%>
Проблема такого подхода заключается в том, что вышеуказанные теги "c" и "sec" не обрабатываются спрингом и выводятся как обычный текст. Страницы по всей видимости проходят через ServletContext и компилируются. Поэтому, наверно нужно делать репозиторий загрузки страниц. А вот как этот репозиторий объявить в Context - я ума не приложу...@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("file:///C:/files/");
}
Если юзер просто выбирает
больше информации по задаче
ResourceLocations("file:///C:/files/index.html");
Это серьёзные ограничения и неудобства, которые в общем-то можно обойти с помощью страниц JSP... При этом Thymeleaf, если я не ошибаюсь, накладывает ограничения на использование страниц JSP; получается не решаемая задача. сильно подозреваю, что вы хотите в конечном счете получить нечто похожее на CMS
Как минимум, я не стал бы брать jsp. И не стал бы хранить его в WEB-INF.
В теории можно для динамики подключить плагин spring-plugin, загружать вашу тему, как плагин и регистрировать новый бин.
<%out.print(LoaderPage.getHtml());%>
http://some.domain/index?randompage
или просто/index
https://twitter.com/UniqueAddress
?