-
****重点****重点***重点**** 1.统计在线人数:使用ServletSessionListener监听器的初始化和销毁实现增加和删除 2.在线用户信息:使用ServletRequestListener监听器的初始化实现获取用户信息: HttpServletRequest对象.getSession().getId();//获取session的ID HttpServletRequest对象..getRemoteAddr();//获取用户ip地址 3.保存:保存于全局的getSession.getServletContext().getAttribute("","")里面 4.${userNumber}是EL表达式,可以获取userNumber的值 EL表达式:取出某一范围中名称为username的变量,由于没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。 如果找到username,则直接回传,如果没有找到时,则回传null。查看全部
-
监听域对象中的属性的增加和删除的事件监听器 ServletContext、HttpSession、ServletRequest对象的中属性的增加和删除有单独的事件监听器 包括 attributeAdded() attributeRemoved() attributeReplaced() @init.jsp <% request.setAttribute("requestName", "requestValue"); request.getSession().setAttribute("sessionName", "sessionValue"); request.getSession().getServletContext().setAttribute("applicationName", "applicationValue"); //request.setAttribute("requestName", "requestValue");//只有这种办法可以调用request的replace。 //request.removeAttribute("requestName");//可以调用request的remove。 %> @destory.jsp <% request.removeAttribute("requestName"); request.getSession().removeAttribute("sessionName"); request.getSession().getServletContext().removeAttribute("applicationName"); %> request.getAttribute的值获得是从request.setAttribute的值,不能获取类似www.immoc.com/username=imooc的参数值; request.getParameter是请求的参数值,如www.immoc.com/username=imooc。 request——request request.getSession()——session request.getSession().getServletContext()——application查看全部
-
HttpSession的创建和销毁 实现HttpSessionListener接口用于监听它的创建和销毁事件 一个HttpSession可以注册多个HttpSessionListener接口, 一个web应用中可以有多个HttpSession对象 有两个事件处理方法: sessionCreated方法: public void sessionCreated(HttpSessionEvent se) session创建时调用 sessionDestroyed方法: public void sessionDestroyed(HttpSessionEvent se) session销毁时调用 HttpSessionListener的主要用途: 统计在线人数 记录访问日志,记录访问时间、访问的ip /** * 销毁session * 1.关闭服务器 * 2.关闭浏览器 * 3.不关闭浏览器,session超时 */ 不关闭浏览器,session超时 可以在web.xml配置session超时的时间 <session-config> <session-timeout>0</session-timeout> </session-config> 0:session没有超时的限制 1:session超时1分钟后销毁,但是并不是准确的一分钟查看全部
-
监听器的启动顺序: 监听器按照注册顺序从上到下执行 优先级: 监听器>过滤器>Servlet查看全部
-
request.getAttribute()和reques.getParameter()得到区别: request.getAttribute()只能通过 request.setAttribute("name",参数)来获取; reques.getParameter()则通过URL参数,或前链接页面关系的参数来获取查看全部
-
@统计在线用户及人数——(下) @MyServletRequestListener.java @WebListener public class MyServletRequestListener implements ServletRequestListener { private ArrayList<User> userList;//在线用户List @Override public void requestDestroyed(ServletRequestEvent arg0) { } @Override public void requestInitialized(ServletRequestEvent arg0) { userList = (ArrayList<User>)arg0.getServletContext().getAttribute("userList"); if(userList==null) userList = new ArrayList<User>(); HttpServletRequest request = (HttpServletRequest) arg0.getServletRequest(); String sessionIdString = request.getSession().getId(); if(SessionUtil.getUserBySessionId(userList,sessionIdString)==null){ User user = new User(); user.setSessionIdString(sessionIdString); user.setFirstTimeString(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); user.setIpString(request.getRemoteAddr()); userList.add(user); } arg0.getServletContext().setAttribute("userList", userList); } }查看全部
-
@统计在线用户及人数——(中) @MyHttpSessionListener.java @WebListener public class MyHttpSessionListener implements HttpSessionListener { private int userNumber = 0; @Override public void sessionCreated(HttpSessionEvent arg0) { userNumber++; arg0.getSession().getServletContext().setAttribute("userNumber", userNumber); } @Override public void sessionDestroyed(HttpSessionEvent arg0) { userNumber--; arg0.getSession().getServletContext().setAttribute("userNumber", userNumber); ArrayList<User> userList = null;//在线用户List userList = (ArrayList<User>)arg0.getSession().getServletContext().getAttribute("userList"); if(SessionUtil.getUserBySessionId(userList, arg0.getSession().getId())!=null){ userList.remove(SessionUtil.getUserBySessionId(userList, arg0.getSession().getId())); } } } 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】查看全部
-
@统计在线用户及人数——(上) @index.jsp 当前在线用户人数:${userNumber} <hr> <% ArrayList<User> userList = (ArrayList<User>) request.getServletContext().getAttribute("userList"); if (userList != null) { for (int i = 0; i < userList.size(); i++) { User user = userList.get(i); %> IP:<%=user.getIpString()%> <hr> FirstTime:<%=user.getFirstTimeString()%> <hr> SessionId:<%=user.getSessionIdString()%> <hr> <% } } %> @SessionUtil.java public class SessionUtil { public static Object getUserBySessionId(ArrayList<User> userList, String sessionIdString) { for (int i = 0; i < userList.size(); i++) { User user = userList.get(i); if (user.getSessionIdString().equals(sessionIdString)) { return user; } } return null; } } @User.java public class User { private String sessionIdString; private String ipString; private String firstTimeString; //setter、getter... } Ps:session是没有获取IP地址方法,但request有。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】查看全部
-
@index.jsp <%=request.getSession().getAttribute("currentUser") %> @init.jsp request.getSession().setAttribute("currentUser", new com.imooc.entity.User()); @destory.jsp request.getSession().removeAttribute("currentUser"); Ps:要想实现钝化和活化,除了需实现HttpSessionActivationListener接口还需要实现Serializable接口。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】查看全部
-
@ServletContext的创建和销毁 实现ServletContextListener接口用于监听它的创建和销毁事件 一个项目中可以有多个ServletContextListener,但是只有一个ServletContext对象 @有两个事件处理方法: 1、public void contextInitialized( ServletContextEvent sce ) ServletContext创建时调用 参数 ServletContextEvent 事件对象,可以获取ServletContext对象以及一些初始化参数 例如: 获取ServletContext对象: ServletContext sc = sce.getServletContext(); 获取初始化参数:sc.getInitParmeter("参数名称"); 初始化参数在web.xml中配置: <context-param> <param-name>initParam</param-name> <param-value>imocc</param-value> </context-param> 也可以往ServletContext里放一些值进去, sc.setAttribute("name",obj), 然后在其它地方获取getAttribute("name") 2、public void contextDestroyed( ServletContextEvent sce ) ServletContext销毁时调用 主要用于数据库链接关闭时释放一些资源,以免过度的占用。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】查看全部
-
监听器的启动顺序查看全部
-
Servlet3.0下监听器的用法查看全部
-
1:配置多个监听器的情况下,采用先到先得的算法,来执行监听器 2:监听器,过滤器,Servlet三种的组件的执行顺序是监听器》过滤器》Servlet但是为什么是这个顺序呢?结构决定功能,功能决定地位,地位决定权限,权限决定优先级查看全部
-
按监听事件划分查看全部
-
HttpServletRequest对象.getSession().getId();//获取session的ID HttpServletRequest对象..getRemoteAddr();//获取用户ip地址查看全部
举报
0/150
提交
取消