Jsp、Servlet参考资料

发布时间 : 星期四 文章Jsp、Servlet参考资料更新完毕开始阅读

8 public class OnLineCountListener implements HttpSessionListener, ServletContextListener,ServletContextAttributeListener 9 {

10 private int count;

11 private ServletContext context = null; 13 public OnLineCountListener() 14 {

15 count=0; 16 //setContext(); 17 }

18 //创建一个session时激发

19 public void sessionCreated(HttpSessionEvent se) 20 {

21 count++;

22 setContext(se); 24 }

25 //当一个session失效时激发

26 public void sessionDestroyed(HttpSessionEvent se) 27 {

28 count--; 29 setContext(se); 30 }

31 //设置context的属性,它将激发attributeReplaced或attributeAdded方法 32 public void setContext(HttpSessionEvent se)

33 {

34 se.getSession().getServletContext().setAttribute(\er(count)); 35 }

36 //增加一个新的属性时激发

37 public void attributeAdded(ServletContextAttributeEvent event) { 39 log(\40 event.getValue() + \42 }

44 //删除一个新的属性时激发

45 public void attributeRemoved(ServletContextAttributeEvent event) { 47 log(\48 event.getValue() + \50 }

52 //属性被替代时激发

53 public void attributeReplaced(ServletContextAttributeEvent event) { 55 log(\56 event.getValue() + \57 }

58 //context删除时激发

59 public void contextDestroyed(ServletContextEvent event) { 61 log(\62 this.context = null; 64 }

66 //context初始化时激发

67 public void contextInitialized(ServletContextEvent event) { 69 this.context = event.getServletContext(); 70 log(\72 }

73 private void log(String message) {

75 System.out.println(\76 } 77 } 【程序注解】

在OnLineCountListener里,用count代表当前在线的人数,OnLineCountListener将在Web服务器启动时自动执行。当OnLineCountListener构造好后,把count设置为0。每增加一个Session,OnLineCountListener会自动调用sessionCreated(HttpSessionEvent se)方法;每销毁一个Session,OnLineCountListener会自动调用sessionDestroyed(HttpSessionEvent se)方法。当调用sessionCreated(HttpSessionEvent se)方法时,说明又有一个客户在请求,此时使在线的人数(count)加1,并且把count写到ServletContext中。ServletContext的信息是所有客户端共享的,这样,每个客户端都可以读取到当前在线的人数。

为了使监听器生效,需要在web.xml里进行配置,如下所示:

OnLineCountListener 测试程序:

<%@ page contentType=\目前在线人数:

<%=getServletContext().getAttribute(\ getServletContext().getAttribute(\获得了count的具体值。客户端调用

退出会话:

客户端调用:

<%session.invalidate() ;%> 使Session失效,这样监听器就会使count减1。

web.xml做好以上的配置,把OnLineCountListener放在WEB-INF/class目录下,启动Web服务器,在浏览器里输入以下URL(根据具体情况不同):http://127.0.0.1:8080/ch14/listener.jsp 浏览器将会打印目前在线人数。在服务器端有以下输出:

?

ContextListener: contextInitialized()

ContextListener: attributeReplaced('org.apache.

catalina.WELCOME_FILES', '[Ljava.lang.String;@1d98a') ?

ContextListener: attributeAdded('onLine', '1') ContextListener: attributeReplaced('onLine', '1') ContextListener: attributeReplaced('onLine', '0') ContextListener: attributeReplaced('onLine', '1') ContextListener: attributeReplaced('onLine', '2') 三、程序题

1.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset import java.util.*;

public class bycomma{

public static String[] splitStringByComma(String source){ if(source==null||source.trim().equals(\ return null;

StringTokenizer commaToker = new StringTokenizer(source,\ String[] result = new String[commaToker.countTokens()]; int i=0;

while(commaToker.hasMoreTokens()){ result[i] = commaToker.nextToken(); i++; }

return result; }

public static void main(String args[]){

String[] s = splitStringByComma(\int[] ii = new int[s.length]; for(int I = 0;i

Arrays.sort(ii);

//asc

for(int i=0;i

//desc

for(int i=(s.length-1);i>=0;i--){ System.out.println(ii[i]); } } }

联系合同范文客服:xxxxx#qq.com(#替换为@)