我正在学习 Java Web,但我遇到了一些问题,需要帮助。我使用了一个 template.jsp,其中包含 header.jsp、footer.jsp、login.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,它将我发送到 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,我可以找出谁是用户。我有一个包含用户帐户和其他一些表的数据库。问题是当我点击评论或任何其他时,它显示我没有登录。我该怎么办?
更新:
我使用 JavaBean 作为用户和 login.jsp。具有登录文本框的 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>