Java Web を学んでいますが、いくつか問題があり、助けが必要です。私は、header.jsp、footer.jsp、login.jsp (テンプレートの左側) および を含む template.jsp を使用し${param.content}.jsp
ます。X.jsp という名前のページごとに、次の内容の別の JSP を作成しました。これは、各ページを同じレイアウトにするためです。
<jsp:include page="template.jsp">
<jsp:param name="content" value="X"/>
<jsp:param name="title" value="Start navigate"/>`enter code here`
</jsp:include>
たとえば、Review リンクをクリックすると、Review.jsp にリダイレクトされるようにしたいのですが、いくつか問題があります。footer.jsp には、次のようなものがあります。
(...)
< a href =" Review.jsp "> Review </a>
(...)
ログイン後、[レビュー] をクリックしようとすると、Review.jsp に移動しますが、ログインしていないことが示されます。Spring Framework、Tomcat 7、Eclipse、MySQL を使用しています。ログインすると、Cookie が作成されます。
String timestamp = new Date().toString();
String sessionId = DigestUtils.md5Hex(timestamp);
db.addSession(sessionId, username, timestamp);
Cookie sid = new Cookie("sid", sessionId);
response.addCookie(sid);
各メソッドについて、次のようなものがあります(チュートリアルでこれを見ました):
@RequestMapping(value = "/writeReview", method = RequestMethod.GET)
public String nameMethod(@CookieValue("sid") String sid,...)
sid を使用して、ユーザーが誰であるかを調べることができます。ユーザーのアカウントと他のいくつかのテーブルを含むデータベースがあります。問題は、レビューなどをクリックすると、ログインしていないと表示されることです。どうすればよいですか?
更新:
ユーザーと login.jsp に JavaBean を使用します。ログイン用のテキスト ボックスを持つ JSP には、ボタンをクリックしてログインするときに GET メソッドがあります。
@RequestMapping(value = "/login", method = RequestMethod.GET)
public ModelAndView createCookie(
@RequestParam("username") String username, @RequestParam("password") String password,
HttpServletRequest request, HttpServletResponse response) throws SQLException {
//code for creating the cookie here, after testing if the user is in my database
}
ページごとに sid を送信し、モデルのユーザー名の属性を設定します。
public String methodName(@CookieValue(required = false) String sid, Model model) {
if (sid != null) {
User user = getUserBySid(sid);
model.addAttribute("user", user);
}
(..other data.)
return "nameJSP.jsp";
}
ユーザー名が空でない場合は、各 JSP をチェックインします。これにより、ユーザーがログインしているかどうかを確認できます。ヘッダーまたはフッターからのリンクをクリックしなければ、アプリケーションは正常に動作し、パラメーターを渡します。問題は、たとえば、レイアウトの実際のコンテンツである JSP から、フッターによって参照される JSP にパラメーターを渡す必要があることです。この JSP は、レイアウトの次のコンテンツになります。レイアウトはコンテンツとタイトルのみを認識します:
<title>${param.title}</title>
(I didn't paste all the code, I use a table <table>....)
<%@ include file="header.jsp"%>
<%@ include file="login.jsp"%>
<jsp:include page="${param.content}.jsp"/>
<%@ include file="footer.jsp"%>
では、別の JSP から受け取るパラメータをこの JSP に含めるにはどうすればよいでしょうか。また、layout.jsp からアクセスして、フッターまたはヘッダーに送信する必要がありますか?
<jsp:include page="layout.jsp">
<jsp:param name="content" value="X"/>
<jsp:param name="title" value="Start navigate"/>
</jsp:include>