所以我在这里有代码将我的用户名参数值发送到我的index.jsp欢迎页面:
response.sendRedirect("index.jsp?username=" + username);
该名称显示在我的index.jsp页面中,其中包含:
<%= "Welcome " + request.getParameter("username")%>
但是,URL显示的信息是我不想要的信息:
http://localhost:8088/Trading_Platform_Web/index.jsp?username=ClayBanks1989
任何想法如何掩盖这个?
此外,更希望仅显示我的数据库中的名字。但我们可以专注于手头的任务。
答案 0 :(得分:6)
使用转发。这将使请求属性可以传递给视图,您可以以ServletRequest#getAttribute的形式使用它们,或者使用表达式语言和JSTL。简短的例子
Controller(你的servlet)
request.setAttribute(username", username);
RequestDispatcher dispatcher = servletContext().getRequestDispatcher("index.jsp");
dispatcher.forward(request, response);
查看(您的JSP)。
<%
out.println(request.getAttribute("username"));
%>
另一种选择是使用会话变量:
//if request is not from HttpServletRequest, you should do a typecast before
HttpSession session = request.getSession(false);
//save message in session
session.setAttribute(username", username);
response.sendRedirect("index.jsp");
然后把它拿回来
<%
out.println(session.getAttribute("message"));
session.removeAttribute("message");
%>
类似地,您可以将第一个名称存储在数据库的会话变量中,并且可以在网站的任何位置显示它,直到会话保持为止
答案 1 :(得分:3)
使用请求调度而不是重定向。
RequestDispatcher view = Request.getRequestDispatcher("index.jsp");
view.forward(request, response);
这会将相同的请求对象转发到 index.jsp 。如果用户名尚未成为请求参数,则将其作为属性传递
request.setAttribute("username", username); // before doing the forward
并在 index.jsp 中将其作为
检索<%= "Welcome " + request.getAttribute("username")%>
或者,由于用户已登录(通过您所声明的JDBC进行后端身份验证),您可以在HttpSession
中保存用户名(以及与他有关的其他内容)。
HttpSession session = request.getSession();
session.setAttribute("username", username);
现在,您可以转发(推荐)或选择重定向,但 index.jsp 将更改为
<%= "Welcome " + session.getAttribute("username")%>