您的位置:1010cc时时彩经典版 > 1010cc时时彩经典版 > 1010cc时时彩经典版会话手艺,会话追踪

1010cc时时彩经典版会话手艺,会话追踪

发布时间:2019-08-09 15:30编辑:1010cc时时彩经典版浏览(121)

    session浅析,

    session浅析

    会话手艺( Cookie ,Session),cookiesession

     会话才能:
        会话:浏览器访问服务器端,发送数次呼吁,接受每每响应。直到有一方断开连接。会话截至。
        
        化解难题:能够动用会话技巧,在二次对话的累累呼吁之间分享数据。
            
        分类:
            客户端会话技术    库克ie
            服务器端会话技巧    Session

     

      客户端会话本领:Cookie 小饼干的意趣
    1010cc时时彩经典版 1
            服务器端没有要求管理,方便。可是不安全。
            
            原理:
                1.客户端第一遍呼吁服务器端,服务器作出响应时,会发送set-cookie头,带领须要共享的多少
                2.当客户端接受到这些响应,会将数据存款和储蓄在客户端
                3.当客户端再度伸手服务器端时,会通过cookie央求头指引着存款和储蓄的多寡。
                4.服务器接受带乞求,会赢得客户端带领的数码。
            
            Java代码完结:
                1.发送cookie
                    //1.创建Cookie对象。
                    Cookie c = new Cookie("name","zhangsan");
                    //2.通过response发送cookie
                    response.addCookie(c);
                    
                2.接收cookie
                    //1.获取具备cookie数组
                    Cookie[] cs = request.getCookies();
    1010cc时时彩经典版会话手艺,会话追踪。                //2.遍历数组
                    if(cs != null){
                        for (Cookie c : cs) {
                            //获取cookie的名称
                            String name = c.getName();
                            //判别名称,拿到目的cookie
                            if("name".equals(name)){
                                //获取值
                                String value = c.getValue();
                                System.out.println(name ":" value);
                            }
                        }
                    }
            
            Cookie的细节:
                1.私下认可处境下,cookie保存在客户端浏览器内部存款和储蓄器中。
                  须要将数据长久化存款和储蓄在客户端的硬盘上。
                  设置cookie的依存时间。set马克斯Age(int s);
                
                2.Cookie是不协理中文数据的。若是要想囤积汉语数据。须求转码。
                    URL编码
            
            功效:记住用户名和密码

            服务器端会话才能:Session  主菜的情趣
            1010cc时时彩经典版 2
            服务器端须求管住数据,麻烦,可是安全。
            
            原理:
                1.客户端访谈服务器端,在劳务器端的三个对象(Session)中存款和储蓄了数码
                2.服务器给客户端作出响应时,会活动将session对象的id通过响应头 set-cookie:jsessionid=xxx 发送到客户端
                3.客户端接受到响应,将头对应的值存款和储蓄到客户端
                4.客户端再一次呼吁时,会带走着伸手头 cookie:jsessionid=xxx.
                5.服务器接受到央求,通过jsessionid的值,找到相应的session对象。就能够赢得对象中积累的数码了。
                
                Session技巧重视于cookie。
            
            获取session
                HttpSession session = request.getSession();
            
            域对象:
                setAttribute():
                getAttribute():
                removeAttribute():
            
            session细节:
                1.客户端关闭了,三次session一样吧?
                    区别等。因为客户端浏览器内部存款和储蓄器释放了,jsessionid没了。
                  服务器关闭了,四次session一样呢?
                    不等同。因为服务器内部存款和储蓄器释放了,session对象没了。
                        session的钝化:
                            当服务器常规关闭时,会将session对象写入到服务器的硬盘上。
                        session的活化:
                            当服务器常规运行时,会将session文件还原为session对象
            
                2.session对象的绝迹
                    1.session超时
                        <session-config>
                            <session-timeout>30</session-timeout>
                        </session-config>
                    
                    2.invalidate():session销毁
                    
                    3.服务器关闭。
                    
                3.session正视于cookie,固然客户端禁止使用了cookie,那么session该怎么办?
                    URL重写。

            
                4.getSession方法的重载:
                    boolean:
                        true:默认值
                            通过id查找session,如果没找到,新创制一个
                        false:
                            通过id查找session,借使没找到,重临null
                            第一遍创立叁个新的靶子

     

      代码演示:

     1 package cookie;
     2 
     3 import java.io.IOException;
     4 import java.sql.PreparedStatement;
     5 import java.sql.SQLException;
     6 
     7 import javax.servlet.ServletException;
     8 import javax.servlet.http.HttpServlet;
     9 import javax.servlet.http.HttpServletRequest;
    10 import javax.servlet.http.HttpServletResponse;
    11 import javax.servlet.http.HttpSession;
    12 
    13 public class LoginServlet extends HttpServlet {
    14 
    15     private static final long serialVersionUID = -4372317815130787297L;
    16 
    17     public void doGet(HttpServletRequest request, HttpServletResponse response)
    18             throws ServletException, IOException {
    19         try {
    20             //1.获取验证码
    21             String checkCode = request.getParameter("checkCode");
    22             //2.获取生成的验证码
    23             HttpSession session = request.getSession();
    24             String checkCode_pro = (String) session.getAttribute("checkCode_pro");
    25             
    26             //1.设置编码
    27             request.setCharacterEncoding("utf-8");
    28             //2.获取用户名和密码
    29             String username = request.getParameter("username");
    30             String password = request.getParameter("password");
    31             //3.操作数据库,获取数据库连接
    32             //4.定义sql
    33             //5.获取pstmt对象
    34             PreparedStatement pstmt = JDBCUtils.getConnection().prepareStatement("select * from user where username = ? and userpassword = ?");
    35             //6.设置参数
    36             pstmt.setString(1, username);
    37             pstmt.setString(2, password);
    38             //7.执行sql
    39             //8.验证,判断
    40             //判断验证码是否正确
    41             if(checkCode_pro.equalsIgnoreCase(checkCode)){
    42                     //正确
    43                     //注册 或 登录
    44                     session.setAttribute("regist_msg", "验证码正确");
    45                     if(pstmt.executeQuery().next()){
    46                     //登陆成功
    47                     request.setAttribute("username", username);
    48                     request.getRequestDispatcher("/success.jsp").forward(request, response);
    49                     }else{
    50                         //登陆失败
    51                         request.setAttribute("msg", "用户名或密码错误!");
    52                         request.getRequestDispatcher("/login.jsp").forward(request, response);    
    53                     }
    54             }else{
    55                 //错误
    56                 session.setAttribute("regist_msg", "验证码错误");
    57                 response.sendRedirect("/colloquy/login.jsp");
    58                 //将session中存储的验证码清空
    59                 session.removeAttribute("checkCode_pro");    
    60             }    
    61         } catch (SQLException e) {
    62             e.printStackTrace();
    63         }
    64     }
    65 
    66     public void doPost(HttpServletRequest request, HttpServletResponse response)
    67             throws ServletException, IOException {
    68         this.doGet(request, response);
    69     }
    70 }
    

     

     

     1 package cookie;
     2 
     3 import java.io.IOException;
     4 
     5 import javax.servlet.ServletException;
     6 import javax.servlet.http.Cookie;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 
    11 public class RemServlet extends HttpServlet {
    12 
    13     private static final long serialVersionUID = -3477344209817695234L;
    14 
    15     public void doGet(HttpServletRequest request, HttpServletResponse response)
    16             throws ServletException, IOException {
    17         //1.获取用户名和密码,复选框
    18         String username = request.getParameter("username");
    19         String password = request.getParameter("password");
    20         //2.判断用户名和密码是否正确
    21         if("zhangsan".equals(username) && "123".equals(password)){
    22             //登陆成功
    23             if(request.getParameter("rem") != null){
    24                 //记住密码
    25                 //1.创建cookie
    26                 Cookie c_username = new Cookie("username", username);
    27                 Cookie c_password = new Cookie("password", password);
    28                 //2.设置存活时间
    29                 c_username.setMaxAge(60 * 60 * 24 * 7);
    30                 c_password.setMaxAge(60 * 60 * 24 * 7);
    31                 //3.发送cookie
    32                 response.addCookie(c_username);
    33                 response.addCookie(c_password);
    34             }
    35             request.setAttribute("username", username);
    36             request.getRequestDispatcher("/success.jsp").forward(request, response);
    37         }else{
    38             //登陆失败
    39             request.setAttribute("msg", "用户名或密码错误!");
    40             request.getRequestDispatcher("/login.jsp").forward(request, response);
    41         }
    42     }
    43 
    44     public void doPost(HttpServletRequest request, HttpServletResponse response)
    45             throws ServletException, IOException {
    46         this.doGet(request, response);
    47     }
    48 }
    

     

     

     1 package cookie;
     2 
     3 import java.awt.Color;
     4 import java.awt.Graphics;
     5 import java.awt.image.BufferedImage;
     6 import java.io.IOException;
     7 import java.util.Random;
     8 
     9 import javax.imageio.ImageIO;
    10 import javax.servlet.ServletException;
    11 import javax.servlet.http.HttpServlet;
    12 import javax.servlet.http.HttpServletRequest;
    13 import javax.servlet.http.HttpServletResponse;
    14 
    15 /**
    16  * 生成验证码
    17  * @author rongsnow
    18  *
    19  */
    20 public class CheckCodeServlet extends HttpServlet {
    21 
    22     private static final long serialVersionUID = 8583894656985684165L;
    23 
    24     public void doGet(HttpServletRequest request, HttpServletResponse response)
    25             throws ServletException, IOException {
    26         
    27         int width = 100;
    28         int height = 50;
    29         //1.创建图片
    30         BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    31         //2.装饰图片
    32         //2.1设置背景色
    33         //2.1.1  获取画笔对象
    34         Graphics g = image.getGraphics();
    35         //2.2.2 设置画笔的颜色
    36         g.setColor(Color.pink);
    37         //2.2.3 填充背景色
    38         g.fillRect(0, 0, width, height);
    39         
    40         //2.2 画边框
    41         g.setColor(Color.GREEN);
    42         g.drawRect(0, 0, width - 1, height - 1);
    43         
    44         //2.3 写入验证码
    45         g.setColor(Color.RED);
    46         
    47         String msg = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    48         Random ran = new Random();
    49         StringBuilder sb = new StringBuilder();
    50         for (int i = 1; i <= 4; i  ) {
    51             int index = ran.nextInt(msg.length());//随机生成角标
    52             String s = String.valueOf(msg.charAt(index));
    53             sb.append(s);
    54             
    55             g.drawString(s, width/5 * i, height/2);
    56         }
    57         String checkCode_pro = sb.toString();
    58         //将生成的验证码 存入session
    59         request.getSession().setAttribute("checkCode_pro", checkCode_pro);
    60         
    61         //2.4画干扰线
    62         g.setColor(Color.BLUE);
    63         
    64         for (int i = 0; i < 5; i  ) {
    65             //动态生成坐标点
    66             int x1 = ran.nextInt(width);
    67             int x2 = ran.nextInt(width);
    68             int y1 = ran.nextInt(height);
    69             int y2 = ran.nextInt(height);
    70             g.drawLine(x1, y1, x2, y2);
    71         }
    72         
    73         //3.将图片数据 写入到 response输出流中
    74         ImageIO.write(image, "jpg", response.getOutputStream());
    75     }
    76 
    77     public void doPost(HttpServletRequest request, HttpServletResponse response)
    78             throws ServletException, IOException {
    79 
    80         this.doGet(request, response);
    81     }
    82 }
    

     

     

     1 package cookie;
     2 
     3 import java.io.FileNotFoundException;
     4 import java.io.FileReader;
     5 import java.io.IOException;
     6 import java.sql.Connection;
     7 import java.sql.DriverManager;
     8 import java.sql.ResultSet;
     9 import java.sql.SQLException;
    10 import java.sql.Statement;
    11 import java.util.Properties;
    12 
    13 /**
    14  * JDBC 工具类
    15  * @author rongsnow
    16  *
    17  */
    18 public class JDBCUtils {
    19     private static String url = null;
    20     private static String user = null;
    21     private static String password = null;
    22     private static String driverClass = null;
    23     
    24     static{
    25         /*
    26          * 加载配置文件,为每一个值赋值
    27          */
    28         try {
    29             //1.创建properties对象
    30             Properties pro = new Properties();
    31             //获取配置文件的真实路径
    32             //2.关联资源文件
    33             pro.load(new FileReader(JDBCUtils.class.getClassLoader().getResource("jdbc.properties").getPath()));
    34             //3.获取数据
    35             url = pro.getProperty("url");
    36             user = pro.getProperty("user");
    37             password = pro.getProperty("password");
    38             driverClass = pro.getProperty("driverClass");
    39             //4.注册驱动
    40             Class.forName(driverClass);
    41             
    42         } catch (FileNotFoundException e) {
    43             e.printStackTrace();
    44         } catch (IOException e) {
    45             e.printStackTrace();
    46         } catch (ClassNotFoundException e) {
    47             e.printStackTrace();
    48         }
    49     }
    50     
    51     /**
    52      * 获取数据库连接
    53      * @throws SQLException 
    54      */
    55     public static Connection getConnection() throws SQLException{
    56         
    57         return DriverManager.getConnection(url, user, password);
    58     }
    59     
    60     /**
    61      * 释放资源
    62      * @throws SQLException 
    63      */
    64     public static void close(Connection conn,Statement stmt,ResultSet rs) throws SQLException{
    65         if(rs != null){//预防空指针异常
    66             rs.close();
    67         }
    68         if(stmt != null){//预防空指针异常
    69             stmt.close();
    70         }
    71         if(conn != null){//预防空指针异常
    72             conn.close();
    73         }
    74     }
    75     public static void close(Connection conn,Statement stmt) throws SQLException{
    76         if(stmt != null){//预防空指针异常
    77             stmt.close();
    78         }
    79         if(conn != null){//预防空指针异常
    80             conn.close();
    81         }
    82     }
    83     public static void close(Connection conn) throws SQLException{
    84         if(conn != null){//预防空指针异常
    85             conn.close();
    86         }
    87     }
    88 }
    

     

     

      web.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app version="2.5" 
     3     xmlns="http://java.sun.com/xml/ns/javaee" 
     4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     7   <display-name></display-name>    
     8   
     9     <servlet>
    10         <description>This is the description of my J2EE component</description>
    11         <display-name>This is the display name of my J2EE component</display-name>
    12         <servlet-name>LoginServlet</servlet-name>
    13         <servlet-class>cookie.LoginServlet</servlet-class>
    14     </servlet>
    15     <servlet>
    16         <description>This is the description of my J2EE component</description>
    17         <display-name>This is the display name of my J2EE component</display-name>
    18         <servlet-name>RemServlet</servlet-name>
    19         <servlet-class>cookie.RemServlet</servlet-class>
    20     </servlet>
    21     <servlet>
    22         <description>This is the description of my J2EE component</description>
    23         <display-name>This is the display name of my J2EE component</display-name>
    24           <servlet-name>checkcode</servlet-name>
    25           <servlet-class>cookie.CheckCodeServlet</servlet-class>
    26       </servlet>
    27 
    28 
    29     <servlet-mapping>
    30         <servlet-name>LoginServlet</servlet-name>
    31         <url-pattern>/loginServlet</url-pattern>
    32     </servlet-mapping>
    33     <servlet-mapping>
    34         <servlet-name>RemServlet</servlet-name>
    35         <url-pattern>/remServlet</url-pattern>
    36     </servlet-mapping>
    37     <servlet-mapping>
    38           <servlet-name>checkcode</servlet-name>
    39           <url-pattern>/checkCodeServlet</url-pattern>
    40       </servlet-mapping>
    41       
    42       
    43   <welcome-file-list>
    44       <welcome-file>index.jsp</welcome-file>
    45   </welcome-file-list>
    46 </web-app>
    

     

      jdbc.properties配置文件内容

    driverClass=com.mysql.jdbc.Driver
    url=jdbc:mysql:///mydb
    user=root
    password=123

    login.jsp
    
     1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
     2 
     3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     4 <html>
     5     <head>
     6         <title>My JSP 'login.jsp' starting page</title>
     7         <script type="text/javascript">
     8             function changeImg(){
     9                 document.getElementById("img").src = "/colloquy/checkCodeServlet?time=" new Date().getTime();
    10             }
    11             function changeImg2(obj){
    12                 obj.src = "/colloquy/checkCodeServlet?time=" new Date().getTime();
    13             }
    14         </script>
    15     </head>
    16     <body>
    17         <%
    18             //1.获取所有cookie
    19             Cookie[] cs = request.getCookies();
    20             String username = "";
    21             String password = "";
    22             //2.遍历cookie数组
    23             if(cs != null){
    24                 for(Cookie c : cs){
    25                     //获取名称
    26                     String name = c.getName();
    27                     if("username".equals(name)){
    28                         username = c.getValue();
    29                     }
    30                     if("password".equals(name)){
    31                         password = c.getValue();
    32                     }
    33                 }
    34             }    
    35         %>
    36         
    37         <form action="/colloquy/loginServlet" method="post">    
    38             <table align="center" bgcolor="pink">
    39                 <caption>用户登陆</caption>
    40                 <tr>
    41                     <td>用户名:</td>
    42                     <td><input type="text" name="username"></td>
    43                 </tr>
    44                 <tr>
    45                     <td>密码:</td>
    46                     <td><input type="password" name="password"></td>
    47                 </tr>
    48                 <tr>
    49                     <td>验证码:</td>
    50                     <td><input type="text" name="checkCode"></td>
    51                     <td><img src="/colloquy/checkCodeServlet" id="img" onclick="changeImg2(this);"></td>
    52                     <td><a href="javascript:void(0);" onclick="changeImg();">看不清?</a><br></td>
    53                 <tr>
    54                 <tr>
    55                     <td>记住密码</td>
    56                     <td><input type="checkbox" name="rem"></td>
    57                 </tr>
    58                 <tr>
    59                     <td colspan="2" align="center" ><input type="submit" value="登陆"></td>
    60                 </tr>
    61             </table>
    62         </form>
    63         <div align="center" style="color:red;"><%=request.getAttribute("msg")==null ? "" : request.getAttribute("msg") %></div>
    64         <div align="center" style="color:#FF0000;"><%=session.getAttribute("regist_msg")==null ? "" : session.getAttribute("regist_msg") %></div>
    65     </body>
    66 </html>
    

     

     

    success.jsp
    
     1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
     2 
     3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     4 <html>
     5     <head>
     6             <title>My JSP 'success.jsp' starting page</title>
     7     </head>
     8     <body>
     9         
    10         <%=
    11             request.getAttribute("username")
    12         %>,欢迎您!
    13         
    14     </body>
    15 </html>
    

     

     所使用的MySQL语句

     1 -- 创建用户信息表 user,并指定主键且自增长
     2 CREATE TABLE USER(
     3     uid        INT PRIMARY KEY AUTO_INCREMENT,
     4     username    VARCHAR(32),
     5     userpassword    VARCHAR(32)    
     6 );
     7 
     8 -- 查询所有列
     9 SELECT * FROM USER;
    10 
    11 -- 添加数据
    12 INSERT INTO USER(username,userpassword) VALUE ('zhangsan','123');
    13 INSERT INTO USER(username,userpassword) VALUE ('lisi','1234');
    14 INSERT INTO USER(username,userpassword) VALUE ('wangwu','234');
    15 INSERT INTO USER(username,userpassword) VALUE ('zhaoliu','1234');
    16 INSERT INTO USER(username,userpassword) VALUE ('sisi','234');
    

     

    Cookie ,Session),cookiesession 会话才具: 会话:浏览器访谈服务器端,发送数次乞求,接受一再响应。直到有一方断开连接。会...

     会话技能:
        会话:浏览器访问服务器端,发送多次呼吁,接受频频响应。直到有一方断开连接。会话结束。
        
        化解难点:能够应用会话工夫,在二遍对话的一再供给之间分享数据。
            
        分类:
            客户端会话技巧    Cookie
            服务器端会话手艺    Session

    复习:

    session浅析

    1.对于会话技艺的掌握

      web会话手艺富含Session和Cookie,会话手艺是浏览器端与服务器端的交互本领,拿cookie技能以来,客户端在伸手服务器端的时候,如果有事情须要,服务器会安装响应头的key值与value值,在响应的时候带给浏览器端,然后浏览器端在符合path条件下每一次央浼都带给服务器端,客户端关闭,会话结束;三个服务器对应多少个客户端,当有多个客户端乞请的时候,服务器会给各种客户端带响应回去。一个客户端关闭,该客户端与服务器的叁回对话结束;

     

    1、央浼和响应

    1.对于会话才具的了然

      web会话技巧包括Session和Cookie,会话技艺是浏览器端与劳务器端的交互技艺,拿cookie手艺以来,客户端在央求服务器端的时候,要是有作业要求,服务器会安装响应头的key值与value值,在响应的时候带给浏览器端,然后浏览器端在符合path条件下每一趟恳求都带给服务器端,客户端关闭,会话甘休;多少个服务器对应三个客户端,当有多少个客户端诉求的时候,服务器会给每一种客户端带响应回去。三个客户端关闭,该客户端与服务器的贰遍对话截至;

    2.Session技术

      1.seesion创建

          调用request对象的getSession()方法

    1010cc时时彩经典版 3

        若是有session对象,可是JSESSIONID与session对象不合营,系统也会为你再一次创立session

      2.seesion销毁

        过时销毁:客户端从未session动作30分钟后session销毁,举事例:当你没session动作29分的时候,然后操作了session,时间就能够另行计算

        手动销毁:调用invalidate();方法时session销毁

        服务器非平常关闭:寻常关闭的时候,session会被钝化,当服务重视新开动,session对象又被再次活化

      3.session常用API

            设置属性  setAttribute(key,value)------->key 字符串类型   value 狂妄档案的次序

            依据key取值  getAttribute(key)--------->未有重返null

            移除属性    removeAttribute(key)------>依照key删属性

      

      

      

      客户端会话技艺:库克ie 小饼干的野趣
    1010cc时时彩经典版 4
            服务器端不必要管住,方便。可是不安全。
            
            原理:
                1.客户端第1回呼吁服务器端,服务器作出响应时,会发送set-cookie头,指点必要分享的数量
                2.当客户端接受到这么些响应,会将数据存款和储蓄在客户端
                3.当客户端再度呼吁服务器端时,会因此cookie央浼头教导着存款和储蓄的数目。
                4.服务器接受带诉求,会拿走客户端带领的多寡。
            
            Java代码达成:
                1.发送cookie
                    //1.创建Cookie对象。
                    Cookie c = new Cookie("name","zhangsan");
                    //2.通过response发送cookie
                    response.addCookie(c);
                    
                2.接收cookie
                    //1.获取具有cookie数组
                    Cookie[] cs = request.getCookies();
                    //2.遍历数组
                    if(cs != null){
                        for (Cookie c : cs) {
                            //获取cookie的名称
                            String name = c.getName();
                            //判定名称,获得目的cookie
                            if("name".equals(name)){
                                //获取值
                                String value = c.getValue();
                                System.out.println(name ":" value);
                            }
                        }
                    }
            
            Cookie的细节:
                1.暗中认可情形下,cookie保存在客户端浏览器内部存款和储蓄器中。
                  须求将数据长久化存款和储蓄在客户端的硬盘上。
                  设置cookie的存活时间。set马克斯Age(int s);
                
                2.Cookie是不帮衬普通话数据的。假诺要想囤积汉语数据。要求转码。
                    URL编码
            
            成效:记住用户名和密码

    当你在客户端浏览器发出三个呼吁的时候,tomcat就可以创设servlet对象,并且创办request对象和response对象。再把四个的对象作为service方法的参数字传送递到servlet对象中,根据客户端发送的伸手格局,调用doGet()和doPost()方法

    2.Session技术

      1.seesion创建

          调用request对象的getSession()方法

    1010cc时时彩经典版 5

        借使有session对象,不过JSESSIONID与session对象不包容,系统也会为你再一次成立session

      2.seesion销毁

        过时销毁:客户端从未session动作30分钟后session销毁,举事例:当您没session动作29分的时候,然后操作了session,时间就能够再也计算

        手动销毁:调用invalidate();方法时session销毁

        服务器非平时关闭:不奇怪关闭的时候,session会被钝化,当服务珍视新开动,session对象又被另行活化

      3.session常用API

            设置属性  setAttribute(key,value)------->key 字符串类型   value 放肆等级次序

            依据key取值  getAttribute(key)--------->未有回来null

            移除属性    removeAttribute(key)------>依照key删属性

      

      

      

    session浅析 1.对此会话技能的接头 web会话技术满含Session和Cookie,会话本领是浏览器端与劳动器端的交互技艺,拿cookie技能来讲...

            服务器端会话才能:Session  主菜的情趣
            1010cc时时彩经典版 6
            服务器端须求管理数据,麻烦,可是安全。
            
            原理:
                1.客户端访谈服务器端,在劳务器端的贰个对象(Session)中存放了数码
                2.服务器给客户端作出响应时,会活动将session对象的id通过响应头 set-cookie:jsessionid=xxx 发送到客户端
                3.客户端接受到响应,将头对应的值存款和储蓄到客户端
                4.客户端再一次诉求时,会带走着伸手头 cookie:jsessionid=xxx.
                5.服务器接受到乞请,通过jsessionid的值,找到相应的session对象。就能够获得对象中存款和储蓄的数据了。
                
                Session技术重视于cookie。
            
            获取session
                HttpSession session = request.getSession();
            
            域对象:
                setAttribute():
                getAttribute():
                removeAttribute():
    1010cc时时彩经典版,        
            session细节:
                1.客户端关闭了,四次session同样吗?
                    区别。因为客户端浏览器内部存款和储蓄器释放了,jsessionid没了。
                  服务器关闭了,一遍session同样啊?
                    差异样。因为服务器内存释放了,session对象没了。
                        session的钝化:
                            当服务器常规关闭时,会将session对象写入到服务器的硬盘上。
                        session的活化:
                            当服务器常规运维时,会将session文件还原为session对象
            
                2.session对象的绝迹
                    1.session超时
                        <session-config>
                            <session-timeout>30</session-timeout>
                        </session-config>
                    
                    2.invalidate():session销毁
                    
                    3.服务器关闭。
                    
                3.session依赖于cookie,纵然客户端禁止使用了cookie,那么session该怎么做?
                    URL重写。

    能够在request对象中,获得须求的数目:

            
                4.getSession方法的重载:
                    boolean:
                        true:默认值
                            通过id查找session,就算没找到,新创造三个
                        false:
                            通过id查找session,假设没找到,重返null
                            第一次创造叁个新的目的

    (1)普通参数,通过request.getParameter(String string);

     

    (2)单选按键值,通过 request.getParameter(String string);

      代码演示:

    (3)多选框的值,通过requset.getParameterValues(String string);

     1 package cookie;
     2 
     3 import java.io.IOException;
     4 import java.sql.PreparedStatement;
     5 import java.sql.SQLException;
     6 
     7 import javax.servlet.ServletException;
     8 import javax.servlet.http.HttpServlet;
     9 import javax.servlet.http.HttpServletRequest;
    10 import javax.servlet.http.HttpServletResponse;
    11 import javax.servlet.http.HttpSession;
    12 
    13 public class LoginServlet extends HttpServlet {
    14 
    15     private static final long serialVersionUID = -4372317815130787297L;
    16 
    17     public void doGet(HttpServletRequest request, HttpServletResponse response)
    18             throws ServletException, IOException {
    19         try {
    20             //1.获取验证码
    21             String checkCode = request.getParameter("checkCode");
    22             //2.获取生成的验证码
    23             HttpSession session = request.getSession();
    24             String checkCode_pro = (String) session.getAttribute("checkCode_pro");
    25             
    26             //1.设置编码
    27             request.setCharacterEncoding("utf-8");
    28             //2.获取用户名和密码
    29             String username = request.getParameter("username");
    30             String password = request.getParameter("password");
    31             //3.操作数据库,获取数据库连接
    32             //4.定义sql
    33             //5.获取pstmt对象
    34             PreparedStatement pstmt = JDBCUtils.getConnection().prepareStatement("select * from user where username = ? and userpassword = ?");
    35             //6.设置参数
    36             pstmt.setString(1, username);
    37             pstmt.setString(2, password);
    38             //7.执行sql
    39             //8.验证,判断
    40             //判断验证码是否正确
    41             if(checkCode_pro.equalsIgnoreCase(checkCode)){
    42                     //正确
    43                     //注册 或 登录
    44                     session.setAttribute("regist_msg", "验证码正确");
    45                     if(pstmt.executeQuery().next()){
    46                     //登陆成功
    47                     request.setAttribute("username", username);
    48                     request.getRequestDispatcher("/success.jsp").forward(request, response);
    49                     }else{
    50                         //登陆失败
    51                         request.setAttribute("msg", "用户名或密码错误!");
    52                         request.getRequestDispatcher("/login.jsp").forward(request, response);    
    53                     }
    54             }else{
    55                 //错误
    56                 session.setAttribute("regist_msg", "验证码错误");
    57                 response.sendRedirect("/colloquy/login.jsp");
    58                 //将session中存储的验证码清空
    59                 session.removeAttribute("checkCode_pro");    
    60             }    
    61         } catch (SQLException e) {
    62             e.printStackTrace();
    63         }
    64     }
    65 
    66     public void doPost(HttpServletRequest request, HttpServletResponse response)
    67             throws ServletException, IOException {
    68         this.doGet(request, response);
    69     }
    70 }
    

    (4)倘使不知道要取获得的值对应的参数名称相当于key值时,能够因而request.getParameterNames();获得全体传递过来的名号音信。

     

    获取的多寡应该交由职业层来管理。

     

    2、央求转发和重定向

     1 package cookie;
     2 
     3 import java.io.IOException;
     4 
     5 import javax.servlet.ServletException;
     6 import javax.servlet.http.Cookie;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 
    11 public class RemServlet extends HttpServlet {
    12 
    13     private static final long serialVersionUID = -3477344209817695234L;
    14 
    15     public void doGet(HttpServletRequest request, HttpServletResponse response)
    16             throws ServletException, IOException {
    17         //1.获取用户名和密码,复选框
    18         String username = request.getParameter("username");
    19         String password = request.getParameter("password");
    20         //2.判断用户名和密码是否正确
    21         if("zhangsan".equals(username) && "123".equals(password)){
    22             //登陆成功
    23             if(request.getParameter("rem") != null){
    24                 //记住密码
    25                 //1.创建cookie
    26                 Cookie c_username = new Cookie("username", username);
    27                 Cookie c_password = new Cookie("password", password);
    28                 //2.设置存活时间
    29                 c_username.setMaxAge(60 * 60 * 24 * 7);
    30                 c_password.setMaxAge(60 * 60 * 24 * 7);
    31                 //3.发送cookie
    32                 response.addCookie(c_username);
    33                 response.addCookie(c_password);
    34             }
    35             request.setAttribute("username", username);
    36             request.getRequestDispatcher("/success.jsp").forward(request, response);
    37         }else{
    38             //登陆失败
    39             request.setAttribute("msg", "用户名或密码错误!");
    40             request.getRequestDispatcher("/login.jsp").forward(request, response);
    41         }
    42     }
    43 
    44     public void doPost(HttpServletRequest request, HttpServletResponse response)
    45             throws ServletException, IOException {
    46         this.doGet(request, response);
    47     }
    48 }
    

    呼吁转载:在客户端浏览器发出且近发出那三个呼吁。在服务器端把这几个央浼转载到多少个servlet,那是同贰个request不断地在服务器中传送。地址栏不会有其他变动,不管有些许个servlet参预管理,他们都共用四个request对象。所以这些request对象在具有的servlet中都可以赢得的。

     

    重定向:当前servlet对于当前乞请不作管理,而是指引浏览器去其它一个servlet。假如有了新的央浼,那么request对象就必将创立新的servlet对象。

    本文由1010cc时时彩经典版发布于1010cc时时彩经典版,转载请注明出处:1010cc时时彩经典版会话手艺,会话追踪

    关键词: