session案例:完整的登录过程
案例2:演示保存用户登录信息(精通)
* 案例相关页面和Servlet:
> login.jsp:登录页面
> succ1.jsp:只有登录成功才能访问的页面
> succ2.jsp:只有登录成功才能访问的页面
> LoginServlet:校验用户是否登录成功!
* 各页面和Servlet内容:
> login.jsp:提供登录表单,提交表单请求LoginServlet
> LoginServlet:获取请求参数,校验用户是否登录成功
<> 失败:保存错误信息到request域,转发到login.jsp(login.jsp显示request域中的错误信息)
<> 成功:保存用户信息到session域中,重定向到succ1.jsp页面,显示session域中的用户信息
> succ1.jsp:从session域获取用户信息,如果不存在,显示“您还没有登录”。存在则显示用户信息
> succ2.jsp:从session域获取用户信息,如果不存在,显示“您还没有登录”。存在则显示用户信息
--------------------------------------------------------------------------
1、login.jsp
<body>
<h1>欢迎登录XXX系统</h1>
<%
String uname = "";
Cookie[] cs = request.getCookies();
if (cs != null) {
for (Cookie c : cs) {
if ("uname".equals(c.getName())) {
uname = c.getValue();
}
}
}
%>
<%
String message = "";
String msg = (String) request.getAttribute("msg");
if (msg != null) {
message = msg;
}
%>
<font color="red"><b><%=message%><b/>
</font>
<form action="/session/loginservlet" method="post">
用户名:<input type="text" name="username" value="<%=uname %>" > <br/>
密码:<input type="password" name="password" /><br />
<input type="submit" value="提交"> <br />
</form>
</body>
----------------------------------------------------------
2、loginservlet
//字符编码
request.setCharacterEncoding("UTF-8");
//从request域中获取username,password
String username=(String)request.getParameter("username");
String password=(String)request.getParameter("password");
//如果输入的用户名是wangdanyu,表示登录成功,页面重定向到succ1.jsp
if("wangdanyu".equalsIgnoreCase(username)){
//如果登录成功,讲用户名保存到cookie
Cookie cookie=new Cookie("uname",username);
cookie.setMaxAge(60*60*24);
response.addCookie(cookie);
//登录成功
HttpSession session=request.getSession();
//重定向
session.setAttribute("username", username);
response.sendRedirect("/session/succ1.jsp");
}else{
//登录失败,request域中插入错误提示
request.setAttribute("msg", "用户名或密码错误");
//转发
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
------------------------------------------------------------------------
3、succ1.jsp
<body>
//防止用户直接访问该页面,所以,先从session中获取信息
<%
String username=(String)session.getAttribute("username");
if(username==null){
request.setAttribute("msg", "您还没有登录");
request.getRequestDispatcher("/login.jsp").forward(request, response);
return;
}
%>
<h1>登录成功:<%=session.getAttribute("username") %></h1>
</body>