1、根据下面所提出的要求完善会话对象监听器应用案例(在线用户显示项目)。 (1)根据注释填写[1]?[10]完整程序。 (2)把1)?8)相应的地方写出注释。
(3)写出每个过滤器和监听器的作用,并画出主要的页面、Servlet访问流转的过程。 WebApplicationListener.java文件主要源码
public class WebApplicationListener implements ServletContextListener { public void contextInitialized(ServletContextEvent event) { ServletContext application=event.getServletContext(); application.setAttribute(\ application.setAttribute(\ 注释1) 说明userAccessNum的作用 List userlist=new ArrayList(); //累计用户访问个数 application.setAttribute(\ } }
SessionAttribureListener.java文件主要源码
HttpSessionAttributeListener public class SessionAttribureListener implements [1]{//引入会话对象监听器接口 public void attributeAdded(HttpSessionBindingEvent event) { String name=event.getName(); String userid=(String)event.getValue(); HttpSession session=event.getSession(); ServletContext application=session.getServletContext(); [2]//获取该事件的ServletContesxt对象实例 if(name!=null&&name.equals(\ int usernum=(Integer)application.getAttribute(\ application.setAttribute(\ List list=(List)application.getAttribute(\ list.add(userid); } } public void attributeRemoved(HttpSessionBindingEvent event) { String name =event.getName(); String userid=(String)event.getValue(); HttpSession session=event.getSession(); ServletContext application=session.getServletContext(); if(name!=null&&name.equals(\
共 12 页 第 6 页
int usernum=(Integer)application.getAttribute(\ application.setAttribute(\ List list=(List)application.getAttribute(\ list.remove(userid); } } public void attributeReplaced(HttpSessionBindingEvent event) { String name =event.getName(); String userid=(String)event.getValue(); HttpSession session=event.getSession(); ServletContext application=session.getServletContext(); if(name!=null&&name.equals(%ute(\ int usernum=(Integer)application.getAttribute(\ application.setAttribute(\ List list=(List)application.getAttribute(\ 注释2)获取用户列表 list.add(userid); } } }
UserAccessNumCout.java文件主要源码
public class UserAccessNumCout implements ServletRequestListener { public void requestInitialized(ServletRequestEvent event) { ServletContext application=event.getServletContext(); Integer userAccessNum=(Integer)application.getAttribute(\ String webroot=application.getContextPath(); HttpServletRequest hsq=(HttpServletRequest)event.getServletRequest(); String uri=hsq.getRequestURI(); if(userAccessNum!=null&&(uri.equals(webroot+\ [3]//累计用户访问个数,并存到容器的userAccessNum属性中 application.setAttribute(\ } } }
SetCharacterEncodingFilter.java文件主要源码
public class SetCharacterEncodingFilter implements Filter { protected FilterConfig filterConfig; protected String encodingName; protected boolean enable; public SetCharacterEncodingFilter() { this.encodingName = \ this.enable = false; } public void init(FilterConfig filterConfig) throws ServletException {
共 12 页 第 7 页
this.filterConfig = filterConfig; }
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding(\ response.setCharacterEncoding(\ chain.doFilter(request, response);//注释3)
他的作用是将请求转发给过滤器链上下一个对象。这里的下一个指的是下一个filter,如果没有filter那就是你请求的资源。 一般filter都是一个链,web.xml 里面配置了几个就有几个。一个一个的连在一起
} }
login.jsp文件主要源码
[4]
main.jsp文件主要源码
累积网站点击人数:<%=String.valueOf((Integer)application.getAttribute(\ 在线人数:<%[5]//输出在线人数%>
用户列表:
<%List list=(List)application.getAttribute(\ for(Object o : list){ out.println((String)o); out.println(\ } %>
LoginAction.java文件主要源码
public class LoginAction extends HttpServlet { private Connection cn=null; private String driverName=null; private String url=null; private String dbuser=null; private String dbpassword=null;
共 12 页 第 8 页
public void init(ServletConfig config) throws ServletException{ super.init(config); driverName=config.getInitParameter(\ url=config.getInitParameter(\ dbuser=config.getInitParameter(\ dbpassword=config.getInitParameter(\
try { Class.forName(driverName);
[6]//完成数据库连接
Connection cn = DriverManager.getConnection(url, user, password);
}catch(Exception e) { System.out.println(\取得数据库连接错误:\ } }
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String userid=request.getParameter(\ String password=request.getParameter(\
if((userid)!=null&&password!=null&&userid.trim().length()>0&&password.trim().length()>0) { String sql=\ boolean check=false; try { PreparedStatement ps=cn.prepareStatement(sql); ps.setString(1, userid); ps.setString(2, password); ResultSet rs=ps.executeQuery(); //bd if([7])rs.next() { check=true; } rs.close(); ps.close(); }catch(Exception e) { System.out.println(\数据库运行出错:\ response.sendRedirect(\ return ; } if(check) { HttpSession session=request.getSession(true); session=request.getSession(true); session.setAttribute(\ response.sendRedirect(\注释4)从定向到main.jsp,跳转到main.jsp }else{
共 12 页 第 9 页
response.sendRedirect(\ } } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); //注释5)将请求转到doget()中执行 } public void destroy() { super.destroy(); try{ if(cn!=null&&(!cn.isClosed())) { cn.close(); cn=null; } }catch(Exception e) { System.out.println(\ } } }
LogoutAction.java文件主要源码
public class LogoutAction extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session=request.getSession(false); if(session!=null){ session.getServletContext().setAttribute(\session.getAttribute(\注释6)先从session中获取userid再放到context中 [8]//删除session将userid属性
session.removeAttribute(“userid”)
} response.sendRedirect(\ } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } }
web.xml配置
共 12 页 第 10 页
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新工程科技《Java EE程序设计》1 (2)全文阅读和word下载服务。
相关推荐: