黑马程序员_JAVA 学习笔记23 WEB篇10

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net

Session的原理,首先向服务器发出请求,服务器得到请求后产生 一个sessionID是一个


很长的字符串,然后正常处理,然后响应时以cookie的形式发送给客户端,客户端再发新


的请求,就会携带着请求参数以及sessionID一块发过去了,然后服务器就会通过request


得到sessionID会比较服务器的sessionID如果相同则找到相应的服务器中sessionID所对


应的数据。
<body>
   <%=session.getId()%>
   
   <% 
    session.setMaxInactiveInterval(-1);
   %>
  </body>
上面是在jsp中使用session对象。
为什么关闭浏览器会创建一个新的session呢,因为浏览器一旦关闭,因为sessionID是存


放在cookie进程里面的一旦浏览器关闭对就的cookie就会销毁掉了再也不存在了。所以就


访问不到那个sessionID了,所以客户机这个session不会向服务器提出任何请求了,服务


器中的session依然存活着。存放在浏览器进程中的cookie称为会话cookie。
下面是 一个简单的关于session的一个简单的登录注销:
<body>
  <%
  String username = "";
//首先判断session是否是新的值,如果不是新的值就可以得到session.getAttribute();


的username对象的值。如果得到的值为Null则将username置为空。
    if(!session.isNew())
    {
    username = (String)session.getAttribute("username");
   
    if(null == username)
    {
    username = "";
    }
    }
    %>
  <%=session.getId() %><br>
    <form action="oneday/mailCheck.jsp">
    <input type = "text" name = "username" value = "<%=username%>">
    <input type = "submit" value = "Login">
   </form>
   
<body>
   <%
    String username = request.getParameter("username");
session.setAttribute("username", username);
   %>
   <%=username %><br>
   <a href="oneday/mailLogin.jsp">l</a><br>
   <a href = "oneday/mailOut.jsp">q</a><br>
     </body>
<body>
    <%
    String username = (String)session.getAttribute("username");
    session.invalidate();
    
    %>
    <%=username %><br>
    <a href = "oneday/mailLogin.jsp">l</a>
     </body>
   
   下面是一个session的小例子,验证用户登录,如果有错返回登录页面,并显示用


户所选及所填的信息。这一个是用请求转发做的下面是重定向的做法:
<body>
  <%
 String radio = "";
 String username = "";
 
 if(!session.isNew())
 {
  radio = (String)request.getAttribute("radio");
  username = (String)request.getAttribute("username");
  if(null == radio || username == null)
  {
  radio = "";
  username = "";
  }
   
 }
  %>
   <form action="sessionLogin">
    <input type = "text" name = "username" value = "<%=username %>">
   1 <input type = "radio" name = "radio" value = "1" <%="1".equals(radio) 


? "checked='checked'" : ""  %>>
   2 <input type = "radio" name = "radio" value = "2" <%="2".equals(radio) 


? "checked='checked'" : ""  %>>
    <input type = "submit" value = "Login">
      </form>
   
public class sessionLogin extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
// 从请求中得到session对象
HttpSession session = req.getSession();
//用一个JavaBean来存放用户的信息
SessionUser su = new SessionUser();

String username = req.getParameter("username");
String radio = req.getParameter("radio");

if("1".equals(radio))
{
if("zhangsan".equals(username))
{
su.setUsername(username);
su.setRadio(radio);
session.setAttribute("user", su);
req.getRequestDispatcher


("session/sessionLoginSuccess.jsp").forward(req, resp);
}
else
{
req.setAttribute("username", username);
req.setAttribute("radio", radio);

req.getRequestDispatcher


("session/sessionLogin.jsp").forward(req, resp);
}
}
else if("2".equals(radio))
{
if("lishi".equals(username))
{
su.setUsername(username);
su.setRadio(radio);
session.setAttribute("user", su);

req.getRequestDispatcher


("session/sessionLoginSuccess.jsp").forward(req, resp);
}
else
{
req.setAttribute("username", username);
req.setAttribute("radio", radio);

req.getRequestDispatcher


("session/sessionLogin.jsp").forward(req, resp);
}
}
else
{
req.setAttribute("username", username);
req.setAttribute("radio", radio);

req.getRequestDispatcher


("session/sessionLogin.jsp").forward(req, resp);
}
}
}
   
   成功会转向一个成功的页面:
<body>
    <%
    SessionUser su = (SessionUser)session.getAttribute("user");
    if(su.getRadio().equals("1"))
    {
    out.println("查询<br>");
    out.println("修改<br>");
    }
    else if(su.getRadio().equals("2"))
    {
    out.println("查询<br>");
    }
    else
    {
    %>
    <jsp:forward page="oneday/sessionLogin.jsp"></jsp:forward>
    <%} %>
    
     </body>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值