私のWebアプリケーション(Apache Tomcat 7、JSP、Servlet)では、私はフィルターを使います。時々、コンソールに私はJavaScriptをJSPに含まれているパス(任意の* .jsファイル)をファイルに印刷している理由を、私は理解できない今フィルタが含まれている* .jsファイルをチェックする理由を教えてください。
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
System.out.println(req.getServletPath());
//... until doFilter
}
:doChain
方法で、私は次のコードを入れて。 * .cssファイルでは発生せず、* .jsファイルでのみ発生します。さらに、* .jsファイルはサーブレットにアクセスするたびに出力されません。私は自分のものが無作為に印刷されているように見えました。
誰にも説明がありますか? なぜそれがランダムに起こるのですか?
ありがとうございました。
EDIT:実際には* .pngファイルでも発生します。しかし、この問題のランダムな性質を考慮に入れると、他のファイル(CSSを含む)で同じように動作する可能性があります。
NB:
- 私はそれをやろう理由です、ページ・パスに基づいて認証を作ってみます。問題は、* .jsページを考慮したくないことです。
- コードにしたい場合は教えてください。
@WebServlet("/site/network") public class NetworkSettingsServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//... business logic goes here request.getRequestDispatcher("/site/network/network_view.jsp").forward( request, response); //TODO log this authentication }
}
そしてnetwork_view.jsp CO:
は
共通サーブレットのコードを更新しde:
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@include file="/site/fragments/lang.jspf"%>
<fmt:setLocale value="${siteLanguage}" />
<fmt:setBundle basename="i18n.network.network" var="networkBundle" />
<fmt:setBundle basename="i18n.home.home" var="homeBundle" />
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" href="/netnfork/stylesheets/commons.css" />
<script type="text/javascript" src="/netnfork/site/scripts/network/network_scripts.js"></script>
<title><fmt:message key="common_title" bundle="${homeBundle}" /></title>
</head>
<html>
html code here
</html>
これは私のコードのパターンです。
はい、「web.xml」からサーブレットマッピングを見ることができます。また、あなたのブラウザや 'curl'から直接JSファイルにアクセスすると、ランダムに印刷されたメッセージもありますか? –
@TomaszNurkiewicz JSPファイルに直接アクセスすると、* .jsファイルがコンソールに出力されませんが、JSPはロジックによってエラーをスローします。とにかく、それは私が興味を持っている動作に影響を与えるべきではありません。 'web.xml'に関連しています。ご覧のとおり、Servlet3.0アノテーションを使用します。 – artaxerxe