サーブレットのURLパターンをとして設定しました"/register/*"
。また、getReuestURI()の「/ register」から始まるパターンのみを取得することについても調査しました。
以前request.getRequestURI().substring(request.getContextPath().length())
は取得"/register/family"
していましたが、header.jspに含まれているスクリプトソースも返されるようです。
Header.jsp
<head>
<title>Health Center</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="js/script.js"></script>
<script type="text/javascript" src="js/cufon-yui.js"></script>
<script type="text/javascript" src="js/arial.js"></script>
<script type="text/javascript" src="js/cuf_run.js"></script>
</head>
GlassFish Server 4スタックトレース:
INFO: /register/family INFO: /register/js/script.js INFO: /register/css/style.css INFO: /register/js/cufon-yui.js INFO: /register/js/jquery-1.3.2.min.js INFO: /register/js/arial.js INFO: /register/js/cuf_run.js INFO: /register/images/search.gif
どうすればこれを修正して、唯一のものしか入手できないようにすることができ"/register/family"
ますか?どんな助けでもいただければ幸いです。ありがとう!
編集:1
system.out.printlnを使用して、取得しているリクエスト値をテストしました。また、request.getServletPath()を使用しても、複数の出力があることに気付きました。
INFO: /register
INFO: /register
INFO: /register
INFO: /register
INFO: /register
INFO: /register
INFO: /register
INFO: /register
また、cssレイアウトは別のページにリダイレクトされるため、使用されないことに気付きました。
編集2:
requestURIから「/ register / family」を取得したかったのは、これがリクエストを処理して次のページを決定するためです。これが私のコードフローです
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String userPath = request.getRequestURI().substring(request.getContextPath().length());
if (userPath.equals("/register/family")) {
// perform code registration
userPath = "/familyRegistration"; // this is the .jsp page
}
else if (userPath.equals("/register/patient")) {
// perform patient registration
userPath = "/patientRegistration"; // this is . the .jsp page
}
// use RequestDispatcher to forward request internally
String url = "/WEB-INF/view" + userPath + ".jsp";
try {
request.getRequestDispatcher(url).forward(request, response);
} catch (Exception ex) {
ex.printStackTrace();
}
}
編集3
@Sergが以下に回答したように修正しました。また、CSSが読み込まれない問題を修正しました!私<link href="${pageContext.request.contextPath}/css/style.css" rel="stylesheet" type="text/css" />
はこの同様の投稿でBalusCSaidとして使用しました。
私が正しく理解していれば、cssファイルとjsファイルは、珍しいサーブレットパス(/ register)に関連しています。それらがWebアプリケーションのルートに直接存在する場合、この問題は発生しません。その場合、ヘッダーは次のようになります。
<head>
<title>Health Center</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="/css/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="/js/script.js"></script>
<script type="text/javascript" src="/js/cufon-yui.js"></script>
<script type="text/javascript" src="/js/arial.js"></script>
<script type="text/javascript" src="/js/cuf_run.js"></script>
</head>
アプリで受け入れられる場合INFO: /register/family
、他の行は/register
。で始まらないため、最初の行だけがサーブレットによってインターセプトされます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加