将变量从Servlet传递到JSP



我知道这是一个老问题,很多人问,但我真的不能得到我的工作(即,${uname}总是空的)…

tomcat webapp如下:

member.jsp:

(这个jsp的后半部分是确认cookie的内容)

<c:choose>
<c:when test="${cookie.containsKey('uname')}">
<h1>Super Secure Shopping Mall</h1>
<p>Hello, ${uname}!</p>
<p><a href="Logout">Logout</a></p>
</c:when>
<c:otherwise>
<p>Please login first!</p>
<p><a href="main.jsp">Login</a></p>
</c:otherwise>
</c:choose>
<%
Cookie cookie_debug = null;
Cookie[] cookies_debug = request.getCookies();
if (cookies_debug != null) {
out.println("<h2>DEBUG: Cookies</h2>");
for (int i=0;i<cookies_debug.length;i++) {
cookie_debug = cookies_debug[i];
out.println("Cookie No." + String.valueOf(i) + ": " + cookie_debug.getName() + ", " + cookie_debug.getValue() + "<br/>");
}
}
else {
out.println("<p>No cookie found.</p>");
}
%>

member.java:

import java.io.*;
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.*;
import java.sql.*;
// @WebServlet("/member")
public class Member extends HttpServlet {
private static final long serialVersionUID = 1L;
public Member() {super();}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
Cookie[] cks = request.getCookies();
Cookie ck = null;
for (int i = 0; i < cks.length; i++) {
ck = cks[i];
if (ck.getName().equals("uname")) {
request.setAttribute("uname", ck.getValue());
break;
}
}
// dispatch requests
request.getRequestDispatcher("/member.jsp").forward(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
}
}

项目文件夹结构:

Webapp
|- member.jsp
|- WEB-INF
|- classes
|- Member.java

我知道我可以通过其他方式获得cookie值,但是我想知道为什么这个方法不起作用。

我明白了。

问题是我需要通过member来访问这个网页,而不是member.jsp

最新更新