为了账号安全,请及时绑定邮箱和手机立即绑定

JAVA Web开发技术应用——监听器

难度初级
时长 1小时30分
学习人数
综合评分9.70
269人评价 查看评价
9.8 内容实用
9.7 简洁易懂
9.6 逻辑清晰
  • ****重点****重点***重点**** 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
提交
取消
课程须知
亲,要学习本门课程需要对JSP和Servlet有所了解呦。如未学习上述知识,可移步网站相关课程。
老师告诉你能学到什么?
通过对本课程的学习,可以掌握监听器的基础知识,深入了解监听器的处理机制和分类方式,并可以让自己更快的动手编写监听器的例子。

微信扫码,参与3人拼团

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!