есть у меня js
webapp\web-inf\vievs\js\navibar.js
Код:
$(document).ready(function () {
var nbar = "<nav class=\"navbar navbar-expand-sm bg-dark navbar-dark\">\n";
nbar = nbar + " <a class=\"navbar-brand\"href=\"${pageContext.servletContext.contextPath}/\">Logo </a>\n";
nbar = nbar + "<ul class=\"navbar-nav\">\n";
nbar = nbar +"<li class=\"nav-item\">\n";
nbar = nbar +"<a class=\"nav-link\" href=\"${pageContext.servletContext.contextPath}/create\">Добавить пользователя</a>\n";
nbar = nbar +"</li>\n";
nbar = nbar +"<li class=\"nav-item\">\n";
nbar = nbar +"<a class=\"nav-link\" href=\"${pageContext.servletContext.contextPath}/listUser\">Список пользователей</a>\n";
nbar = nbar +"</li>\n";
nbar = nbar +" </ul>\n";
nbar = nbar +" <button type=\"submit\" style=\"display: block; margin-left: auto;\" class=\"btn btn-outline-danger\" onclick=\"exit()\">ВЫХОД</button>\n" ;
nbar = nbar + "</nav>";
console.log(nbar);
$("#body div").append(nbar);
});
function exit() {
$.ajax({
type: "POST",
url: "./",
data: {exit: "exit"}
})
};
и есть у меня jsp
webapp\web-inf\vievs\index.jsp
Код:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<script src="js/navibar.js"/>
</head>
<body id="body">
<div>
</div>
</body>
</html>
т.е. я хочу чтобы js отрисовывал навиационную панель.
чтобы потом на всех jsp указать этот скрипт и всё
но я получаю чистую страницу,
если я пропишу всё внутри jsp то всё работает.
Код:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<%--<script src="js/navibar.js"/>--%>
<script>$(document).ready(function () {
var nbar = "<nav class=\"navbar navbar-expand-sm bg-dark navbar-dark\">\n";
nbar = nbar + " <a class=\"navbar-brand\"href=\"${pageContext.servletContext.contextPath}/\">Logo </a>\n";
nbar = nbar + "<ul class=\"navbar-nav\">\n";
nbar = nbar +"<li class=\"nav-item\">\n";
nbar = nbar +"<a class=\"nav-link\" href=\"${pageContext.servletContext.contextPath}/create\">Добавить пользователя</a>\n";
nbar = nbar +"</li>\n";
nbar = nbar +"<li class=\"nav-item\">\n";
nbar = nbar +"<a class=\"nav-link\" href=\"${pageContext.servletContext.contextPath}/listUser\">Список пользователей</a>\n";
nbar = nbar +"</li>\n";
nbar = nbar +" </ul>\n";
nbar = nbar +" <button type=\"submit\" style=\"display: block; margin-left: auto;\" class=\"btn btn-outline-danger\" onclick=\"exit()\">ВЫХОД</button>\n" ;
nbar = nbar + "</nav>";
console.log(nbar);
$("#body div").append(nbar);
});
function exit() {
$.ajax({
type: "POST",
url: "./",
data: {exit: "exit"}
})
};
</script>
</head>
<body id="body">
<div>
</div>
</body>
</html>
есть мнение что фильтр не пропускает вот мой httfiltr
Код:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class AuthFilter implements Filter {
private static final org.apache.log4j.Logger LOGGER = Logger.getLogger(AuthFilter.class);
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
req.setCharacterEncoding("UTF-8");
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
System.out.println();
if (request.getRequestURI().contains("/signin")) {
chain.doFilter(req, res);
} else {
if (request.getSession().getAttribute("login") == null) {
System.out.println(request.getRequestURI() + " пропустил");
response.sendRedirect(String.format("%s/signin", request.getContextPath()));
return;
}
if (req.getParameter("exit") != null) {
request.getSession().invalidate();
response.sendRedirect(String.format("%s/signin", request.getContextPath()));
return;
}
System.out.println(request.getRequestURI() + " пропустил"); //тут мы будем отслеживать что нашь фильтр пропустил
chain.doFilter(req, res);
}
}
вот маппинг фильтра который говорит что фильтр применяется ко всему приложению
Код:
<filter-mapping>
<filter-name>AuthFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
и так после того как приложение запущено в консоле я могу видеть что фильтр пропустил а что нет
в консоле я увидел что /js/navibar.js пропустил в чём ещё может быть проблема?