用户登录JDBC后屏蔽用户名

时间:2013-06-27 12:55:32

标签: java oracle jdbc login getparameter

所以我在这里有代码将我的用户名参数值发送到我的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

任何想法如何掩盖这个?

此外,更希望仅显示我的数据库中的名字。但我们可以专注于手头的任务。

2 个答案:

答案 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")%>