精华内容
下载资源
问答
  • 已经resultset结果集返回到一个对象数组里,想对象数组存到session中返回到jsp页面并且在jsp页面中输出对象数组中对象的各个属性....本来已经能够正常传值了...手贱改了点东西又重新来过了,求大神帮我看一下。...
  • 每一个Session用户存入List中

    千次阅读 2017-05-03 20:40:00
    package com.xinlang.ser; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletContext; import javax.servlet.ServletException; import jav
    package com.xinlang.ser;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    /**
     * 
     */
    public class ceshi extends HttpServlet {
    	
    	private static final long serialVersionUID = 1L;
    
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    			//创建集合对象	
    			List lt = new ArrayList();
    			//创建application对象
    			ServletContext application = this.getServletContext();
    			//创建session对象
    			HttpSession session = request.getSession();
    			if(application.getAttribute("lt")==null){
    				//将第一个访问的对象存入
    				lt.add(request.getParameter("name"));
    				application.setAttribute("lt",lt);
        		}
    			//判断是否有下一个session
    			else if(request.getSession().isNew()){
    				lt = (List) application.getAttribute("lt");
    				//添加入集合中
    				lt.add(request.getParameter("name"));
    				application.setAttribute("lt", lt);
    			}
    			//存入最后得到的集合
    			lt = (List) application.getAttribute("lt");
    			System.out.println(lt.toString());
    			//获取页面传来的用户名
    			String s = request.getParameter("name");
    			//将名字存入session中
    			request.getSession().setAttribute("name",s);
    			
    			request.getRequestDispatcher("liaotian.jsp").forward(request, response);
    			
    	}
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		
    	}
    
    }
    
    展开全文
  • 描述:当用户关闭页面之后 达到指定得秒数,移除用户Session 思路:用户进入页面后一个ajax每间隔多少秒请求服务端发送心跳包,保存当前得时间戳,一旦用户关闭了页面,这个时间戳就不再改变,而服务端得定时器每间...

    描述:当用户关闭页面之后 达到指定得秒数,移除用户Session
    思路:用户进入页面后一个ajax每间隔多少秒请求服务端发送心跳包保存当前得时间戳,一旦用户关闭了页面,这个时间戳就不再改变,而服务端得定时器每间隔多久执行检查Session一旦发现这个session得时间戳超过了指定时间秒没有更新,则表示用户已经关闭了页面,则清除用户Session

    页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    测试页面
    <script>
        setInterval(userActive, 20000); //如果用户打开了这个页面,每隔20秒页面发送一次心跳包存入当前时间戳,
        function userActive(){
            console.log("发送心跳包!");
            var xmlReq;
            if (window.XMLHttpRequest) {//如果windows支持XML请求对象
                xmlReq = new XMLHttpRequest();
            } else {
                xmlReq = new ActiveObject('Microsoft.XMLHTTP');
            }
            xmlReq.onreadystatechange = function () {
                if (xmlReq.readyState == 4 && xmlReq.status == 200) {
                   console.log(xmlReq.responseText);
                }
            }
            xmlReq.open("GET", "checkUserActive", true);
            xmlReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");//设置请求头信息
            xmlReq.send("d="+new Date());
        }
    </script>
    </body>
    </html>
    

    Controller

    /**
     * 接收请求得控制类
     */
    @Controller
    @RequestMapping("/test")
    public class UserValidityDetection {
    
    
        //当用户进入某个页面时 存入用户得某些Session 值
        @RequestMapping("/")
        public String pageSkip(HttpServletRequest request){
            request.getSession().setAttribute("UserKey","this is test key");
            //当用户进入页面时,需要保存一次当前活跃时间,避免用户进入后马上退出页面,无法监听用户是否在页面得活跃状态
            checkUser(request);
            //跳转页面时存入测试 session
            return "test";
        }
    
        /**
         * 查看用户session是否存在
         * @param request
         * @return
         */
        @RequestMapping("/getUserKey")
        @ResponseBody
        public String getUserKey(HttpServletRequest request){
            String UserKey = (String) request.getSession().getAttribute("UserKey");
            //跳转页面时存入测试 session
            return "{\"UserKey\":"+UserKey+"}";
        }
    
        /**
         * 页面js每间隔多少秒请求一次,存入当前时间戳,标识用户打开浏览器中打开了当前页面
         * @param request
         */
        @RequestMapping("/checkUserActive")
        @ResponseBody
        public String checkUser( HttpServletRequest request){
            //存入当前Session用户得活跃时间
            request.getSession().setAttribute("userActiveTime",System.currentTimeMillis());
            return "{\"code\":200,\"message\":\"The page remains active and successful!\"}";
        }
    
    
    }
    

    服务端定时检查器

    /**
     * @author YuLF
     * @version 1.0
     * @date 2020/10/15 17:46
     * 定时检查Session状态类
     */
    @Component
    @EnableScheduling
    public class UserValidityDetectionChecker {
        /**
         * 用户离开页面多少秒 销毁用户Session,
         * 因为定时检查是定时执行,存在一定得时间差,不过定时任务得执行间隔只要不是太长,那这个时间差就不会太大
         * 比如说:当用户离开页面后,并不是只要达到了120秒就去移除Session,而是需要等待这个定时器再次执行
         * 当用户离开页面120秒后销毁用户Session得某个Key
         */
        private static final Integer USER_LEAVE_TIME = 120;
        /**
         * 定时检查任务执行得间隔时间 每1分钟执行一次定时任务检查
         * 1.拿到所有用户Session进行遍历
         * 2.判断每一个用户得session,userActiveTime(用户活跃时间戳),关闭当前页面是否超过了指定得秒数
         * 3.关闭页面超过多少秒则移除用户session某个值
         */
        @Scheduled(cron = "0 1/1 * * * ?")
        public void checkUserPage(){
            String needRemoveSession = "UserKey";//需要移除得Session
            System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ":执行定时任务检查所有Session状态!");
            Map<String,Object> sessionMap = SessionManager.getSessionMap();
            Iterator<Map.Entry<String, Object>> iterator = sessionMap.entrySet().iterator();
            while(iterator.hasNext()){
                Map.Entry<String, Object> next = iterator.next();
                HttpSession session = SessionManager.getSession(next.getKey());
                //拿到用户在页面得最后一次活跃时间戳
                String userActiveTime = session.getAttribute("userActiveTime")+"";
                if(session.getAttribute(needRemoveSession) != null){
                    //用户关闭页面后大于指定得秒数,则移除session UserKey这个值
                    if(getDateDifference(userActiveTime) > USER_LEAVE_TIME){
                        //移除session中得某个session值  也可以直接移除用户Session
                        session.removeAttribute(needRemoveSession);
                        System.out.println(session.getId()+"离开页面:"+USER_LEAVE_TIME + "s,移除"+session.getId()+"得UserKey值");
                    }
                }
            }
        }
        /**
         * 通过传入得毫秒时间戳,获取距离当前系统时间得秒数,来判断是否超过指定得秒数
         * @param userActiveDateMs
         * @return
         */
        public static long getDateDifference(String userActiveDateMs){
            return (System.currentTimeMillis() - (Long.parseLong(userActiveDateMs)))/1000;
        }
    }
    
    

    Session管理器

    /**
     * @author YuLF
     * @version 1.0
     * @date 2020/10/15 17:52
     * Session管理器,保存用户Session
     */
    public class SessionManager {
    
        private static Map<String,Object> map = new HashMap();
    
        public static Map<String,Object> getSessionMap() {
            return map;
        }
    
        public static synchronized void AddSession(HttpSession session) {
            if (session != null) {
                map.put(session.getId(), session);
            }
        }
    
        public static synchronized void DelSession(HttpSession session) {
            if (session != null) {
                map.remove(session.getId());
            }
        }
    
        public static synchronized HttpSession getSession(String session_id) {
            if (session_id == null)
                return null;
            return (HttpSession) map.get(session_id);
        }
    }
    

    Session监听器

    /**
     * @author YuLF
     * @version 1.0
     * @date 2020/10/15 17:51
     * Session监听器
     */
    public class SessionListener implements HttpSessionListener {
        //当有新用户创建时,把他得Session添加到Session管理器
        public void sessionCreated(HttpSessionEvent httpSessionEvent) {
            SessionManager.AddSession(httpSessionEvent.getSession());
        }
        //当有Session销毁时,从Session管理器移除
        public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
            HttpSession session = httpSessionEvent.getSession();
            SessionManager.DelSession(session);
        }
    }
    

    Web.xml

    <!--会话管理-->
        <listener>
            <listener-class>com.fly.web.sessionlistener.SessionListener</listener-class>
        </listener>
    
    展开全文
  • SSM 如何获取jsp页面当前行的id 并在jsp中存入session ![图片说明](https://img-ask.csdn.net/upload/202002/15/1581740278_402742.jpg) 如何获取当前行id 就是1008 这个值 并且怎么存入session 求解
  • 将token存入session

    千次阅读 2018-09-04 20:01:00
    在项目实践中遇到这种情况: 一个原本在公司内网中的项目,现独立出一个单独的模块做成单独的项目部署到客户端, ...这时需要将token存放于session中: HttpServletRequest request; HttpSe...

    在项目实践中遇到这种情况:

    一个原本在公司内网中的项目,现独立出一个单独的模块做成单独的项目部署到客户端,

    帮助客户实现数据对接,这就要求在项目中不涉及到持久化及redis的使用,

    在使用redis存放token时,由于客户端环境无法访问公司内部的redis集群发生错误。

    这时需要将token存放于session中:

    HttpServletRequest request;
    HttpSession session = request.getSession();

    session.setAttribute("token",token);//设置token,参数token是要设置的具体值
    session.getAttribute("token");//在需要使获取token

    转载于:https://www.cnblogs.com/Steward-Sun/p/9588154.html

    展开全文
  • java使用cookie和session

    千次阅读 2016-07-19 17:22:28
    当某个用户发出页面请求时,WEB服务器只是简单的进行响应,然后就关闭与该用户的连接,请求的相关数据将不再存在,这样明显有不好的地方。cookie和session解决了这一问题,客户端(一般是浏览器)与服务器之间的交互,...

      当某个用户发出页面请求时,WEB服务器只是简单的进行响应,然后就关闭与该用户的连接,请求的相关数据将不再存在,这样明显有不好的地方。cookie和session解决了这一问题,客户端(一般是浏览器)与服务器之间的交互,将操作所涉及的数据记录下来,保存在cookie(保存在浏览器客户端)或者session(保存在服务器)中。

    一、cookie

    1、什么是cookie

    浏览器在访问服务器时,服务器将一些数据以 set-cookie 消息头的形式发送给浏览器。浏览器会将这些数据保存起来。当浏览器再次访问服务器时,会将这些数据以 cookie 消息头的形式发送给服务器。

    2、创建 cookie

    Cookie cookie = new Cookie(String name,String value);
    response.addCookie(cookie);

    cookie的name不可以重复,和Map集合类似,当有重复的name的时候,会替代。

    3、查询cookie

    //如果没有 cookie,则返回 null。
    Cookie[] cookies = request.getCookies();
    String name = cookie.getName();
    String value = cookie.getValue();

    4、cookie 保存时的编码问题

    cookie 的值叧能是ascii 字符,如果是中文,需要将中文转换成 ascii 字符形式。可以使用 URLEncoder.encode()方法和 URLDecoder.decode()方法来进行这种转换。

    5、cookie 的保存时间

    cookie.setMaxAge(int seconds);//单位为秒
     seconds > 0
    浏览器会将 cookie 以文件的方式保存在硬盘上。在超过指定的时间以后,会删除该文件。
     seconds < 0
    默认值,浏览器会将 cookie 保存在内存里面。叧有当浏览器关闭以后,才会删除。
     seconds = 0
    立即删除该 Cookie

    6、删除 cookie

    比如要删除一个 name 为”username”的 cookie。
    Cookie c = new Cookie(“username”,”“);
    c.setMaxAge(0);
    cookie.setPath(request.getContextPath());//路径
    response.addCookie(c);

    7、cookie 的限制

     cookie 可以禁止
     cookie 的大小有限制(4k 左右)
     cookie 的数量也有限制(浏览器大约能保存 300 个)
     cookie 的值叧能是字符串,要考虑编码问题。
     cookie 不安全

    8、cookie 的路径问题

    浏览器在向服务器上的某个地址发送请求时,会先比较 cookie 的路径不向访问的路径(地址)是否匹配, 叧有匹配的 cookie, 才会发送。
    cookie 的路径可以通过 cookie.setPath(String path)方法来设置。如果没有设置, 则有一个缺省的路径,缺省的路径是生成该 cookie 的组件的路径。
    比如: /appname/addCookie 保存了一个 cookie,则该 cookie 的路径就是/appname/addCookie。
    规则:
    cookie 的路径必须是要访问的路径的上层目录戒者是不要访问的路径相等, 浏览器才会将 cookie 发送给服务器。一般可以设置 setPath(“/appname”),表示访问该应用下的所有地址,均会发送

    二、session

    1、什么是session

    浏览器访问服务器时,服务器会创建一个 session 对象(该对象有一个唯一的 id, 一般称为 sessionId)。服务器在缺省情况下,会将 sessionId 以 cookie 机制发送给浏览器。当浏览器再次访问服务器时, 会将sessionId 发送给服务器。 服务器依据 sessionId 就可以找到对应的 session 对象。

    2、如何获得 session 对象

    HttpSession session = request.getSession();

    3、HttpSession 接口提供的一些方法

    //获得 sessionId。
    String session.getId();
    //绑订数据
    session.setAttribute(String name,Object obj);
    //获取数据
    Object session.getAttribute(String name);
    //删除绑定
    session.removeAttribute(String name);

    4、session保存时间设置

    服务器会将超过指定时间的 session 对象删除(在指定的时间内,该 session 对象没有
    使用)。
    两种设置方式:
    方式一:
    session.setMaxInactiveInterval(int seconds);
    方式二:
    服务器有一个缺省的超时限制,可以通过相应的配置文件来重新设置。比如可以修改 tomcat 的 web.xml(tomcat_home/conf 下面)。

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

    另外,也可以叧修改某个应用的 web.xml。

    5、session删除

    session.invalidate();

    三、用cookie记录最近10条记录

    用cookie查询最近一个月请求的前10条历史记录。cookie的中文要求转码和解码。如下图
    这里写图片描述

    1、加入cookie到客户端

            Cookie[] cookies = request.getCookies();//浏览器在第一请求时调用该方法会返回null
            //浏览器第一次请求返回到浏览器之前会创建一个名为JSESSIONID 的cookie
            //param(请求参数)中文转码
            String paramEnd = URLEncoder.encode(param);
            Cookie cookie = new Cookie("param"+cookies.length,paramEnd);//name不可以重复
            cookie.setMaxAge(60*60*24*30);//保留一个月的时间
            response.addCookie(cookie);//cookie在第一次加入时会创建一个JSESSIONID cookie

    2、获取所有满足条件的cookie

            Cookie[] cookies = request.getCookies();
            if(cookies!=null && cookies.length>0){
                Map<String,Object> historyPar =  (Map<String, Object>)new ListOrderedMap();//按存入顺序取出,HashMap并不是按存入顺序取出
                for(int i=cookies.length-1;i>=0;i--){
                    Cookie cookie = cookies[i];
                    String cookVal = URLDecoder.decode(cookie.getValue());
                    if(cookie.getName().startsWith("param")){
                        if(historyPar.size()==10) break;//查询最近10条记录
                        historyPar.put(cookVal, cookVal);//map的key值用cookie的value,以免历史记录重复
                    }
                }
                model.addAttribute("historyPar",historyPar);
            }

    3、js实现历史清除

    //删除该路径下所有cookie
        function cleanCookie(){
             var keys=document.cookie.match(/[^ =;]+(?=\=)/g);
             if (keys) {
                for (var i =  keys.length; i--;){
                   document.cookie=keys[i]+'=0;expires=' + new Date( 0).toUTCString()
                }
             }  
             window.location.href="${ctx}/searchController/globalSearch";
        }

    至此即可查询出最近一个月的前10条历史记录。

    展开全文
  • session存入redis

    千次阅读 2017-02-06 11:23:25
    Session信息入Redis Session简介 session,中文经常翻译为会话,其本来的含义是 指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程...最混乱的是“用户(客户端)在一次会话期间
  • Java中通过Session存储用户信息

    千次阅读 2019-04-24 10:05:15
    存储: //创建session对象 ...//把用户数据保存在session域对象中 session.setAttribute("presentUserName", users); 获取: //获取信息 String loginName = (String)session.getAttribute("loginNa...
  • 主要介绍了Java简单实现session保存到redis的方法,结合实例形式分析了Javasession存入redis缓存服务器的相关设置、实现技巧与操作注意事项,需要的朋友可以参考下
  • 1.错误十月 11, 2016 8:37:18 上午 org.apache.catalina.session.StandardManager doLoad SEVERE: IOException while loading persisted sessions: java.io.WriteAbortedException: writing aborted; java.io....
  • java使用session存登录的用户信息

    万次阅读 2019-05-22 17:40:27
    //session过期时间设置,以秒为单位,即在没有活动30分钟后,session将失效 session.setMaxInactiveInterval(30 * 60); } } } 创建测试控制器继承基础控制器来进行测试: /** * 测试Controller * *...
  • 怎么ServletActionContext.getRequest().getSession().setAttribute("loginName", loginUser);这个session存入session 10秒,
  • java web项目Session获取不到

    千次阅读 2019-02-27 15:20:59
    Session用户第一次访问服务器的时候自动创建。需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session。如果尚未生成Session,也可以使用re...
  • Java session储存

    千次阅读 2019-06-27 17:42:02
    Java session储存 开发工具与关键技术:java 作者:彭浩达 撰写时间:2019年 6月 14日 public void Selectzbruku(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOE...
  • javasession的用法

    万次阅读 2014-11-27 11:26:17
    //存入session ServletActionContext.getRequest().getSession().setAttribute("userId", users.get(0).getId());//存入session 前台jsp页面获取的方法如下: String path = request....
  • 最近在做一个前后端分离的项目,前端使用React+Ant,后端是Spring mvc+mybatis+mysql,第一次做前后端分离...问题描述:登录的时候前台axios跨域请求访问在java后台生成验证码并放到session中 /* * 生成验证码 */ ...
  • Session 数据存入数据库

    千次阅读 2016-11-03 16:19:39
    由于Session数据数组是附带一个Session ID保存在用户cookie里的,你无法验证它,除非你把session数据存储在数据库中。在一些不需要或很少需要安全保护的应用中,session ID 或许并不需要。但如果你的应用需要安全...
  • java中使用Cookie替代Session解决跨域Session失效问题
  • java后台用session存储对象jsp页面取值 如(session.setAttribute("user", user)) 如: 取 User 对象中的UserName jsp引入c标签<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 用el表达式...
  • 集群中session安全和同步是个最大的问题,下面是收集到的几种session同步的方案,希望能通过分析其各自的优劣找出其适应的场景。...问题:session中数据不能太多,最好只有个用户id。 参考实现:http
  • session存入memcached

    2017-12-30 20:59:20
    步骤 修改php.ini 将session.save...ini_set("session.save_handler", "memcache"); 通过存储位置配置项,设置使用的memcached服务信息 ini_set("session.save_path", "tcp://118.190.157.102:11211;tcp://118.190.1
  • java中设置Session有效时间

    千次阅读 2015-03-23 14:46:41
    #单位分钟 (web.xml中设置)    20   ...// 通过编码方式,指定特定的session的过期时间,以秒为单位 HttpSession session = request.getSession(); session.setMaxInactiveInterval(20*60);
  • session数据存入redis

    千次阅读 2016-07-07 21:16:31
    Session信息入redis Session简介 session,中文经常翻译为会话,其本来的含义是 指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程...最混乱的是“用户(客户端)在一次会话
  • Java Web之Cookie和Session详解

    千次阅读 多人点赞 2018-07-27 17:15:40
    Cookie和Session详解,Cookie和Session之间的联系
  • java存入cookie

    千次阅读 2019-11-12 11:09:16
    相关的对象或者属性的,因为本身Java Web最原始的实现就是 servlet 形式的,Spring框架当然会为其做特定的一些封装,也就是这个类的来源。 代码中首先通过属性拿到了 HttpServletRequest 对象,然后通过请求对象...
  • session做登录存储认证,电脑连接了手机wifi,PC端登录系统,localhost访问项目地址,登录成功,登录信息成功存入session里,可是在登录后页面跳转,做登录验证的时候获取session的时候就为空了。 进过调试,最后...
  • 管理spring session存入redis集群的配置

    千次阅读 2016-11-23 10:49:25
    最近项目需要集成spring session,我也找了不少资料,其实关于spring session存入redis的配置,网上也有不少相关资料,最标准的莫过于官方文档给出的配置方法,这是地址: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,667
精华内容 13,466
关键字:

java把用户存入session

java 订阅