`
wanjianfei
  • 浏览: 321163 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

视频总结-servlet高级开发

    博客分类:
  • J2EE
阅读更多
视频总结-servlet高级开发
servlet高级开发:
servlet和jsp的多线程问题
servlet:
在默认情况下,单个servlet实例可以处理多个并发请求
在一个共享的servlet实例中多个线程的执行可能导致数据不一致
方法1:
.通过同步crirical section能够避免不一致的后果
.使用"sysnchronized"保护重要的程序代码
使用同步序列化多个请求的实例:
Object so=new Object();
public void service(...request,....response){
sysnchronized(so){
....在某时刻上只有一个线程执行这段代码
}
}
方法2:单线程模型
.通过实现SingleThreadMode接口,可以保证只有一个线程执行Servlet的service()方法
.weblogic server将从相同的servlets的池中获得一个servlet
实现SingleThreadModel接口:
public class MyServlet extends HttpServlet implements SingleThreadModel{
public void service(...request,...response){
....只有一个线程能执行这段代码
}
}
jsp的多线程问题:
.在默认的情况下,jsps能够接手来自不同客户的并发请求
.对于Critial section中代码必须像servlet那样使用同步机制
.在page指示中使用SingleThreadModel接口配置jsp
单线程模型的jsp实例
<%@ page isThreadSafe="false"%>
.默认情况下isThreadSafe="true"
Servlet监听器用于监听一些重要事件的发生,监听器对象可以在事情发生前、发生后可以做一些必要的处理。下面将介绍几种常用的监听器,以及它们都适合运用于那些环境。

分类及介绍:(红色表示重要)

1. ServletContextListener:用于监听WEB 应用启动和销毁的事件,监听器类需要实现javax.servlet.ServletContextListener 接口。

  1. import java.util.HashMap;
    import java.util.Map;
    import javax.servlet.http.HttpSessionAttributeListener;
    import javax.servlet.http.HttpSessionBindingEvent;
    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;
  2. /**
    * Web application lifecycle listener.
    * @author Administrator
    */
  3. public class OnlineUserListener implements HttpSessionListener,HttpSessionAttributeListener {
    private static int activeSessions = 1;
    private static Map<String,String> online=new HashMap<String,String>();
    public static Map<String,String> getOnline() {
    return online;
    }
  4. public static int getActiveSessions() {
    return activeSessions;
    }
  5. public void attributeAdded(HttpSessionBindingEvent event) {
    if (event.getName().equals("userlogin")) {
    System.out.println("User logged in.");
    String username = (String)event.getSession().getAttribute("userlogin");
    online.put(event.getSession().getId(),username);
    }
    }
  6. public synchronized void attributeRemoved(HttpSessionBindingEvent event) {
    if (event.getName().equals("userlogin")) {
    online.remove(event.getSession().getId());
    }
    }
  7. public void attributeReplaced(HttpSessionBindingEvent event) {
    }
  8. public void sessionCreated(HttpSessionEvent event) {
    activeSessions++;
    }
  9. public void sessionDestroyed(HttpSessionEvent event) {
    if (activeSessions > 0) {
    activeSessions--;
    }
    }
    }

web.xml配置:

<listener>
<listener-class>mgc.listener.test.OnlineListener</listener-class>
</listener>

 

2. ServletContextAttributeListener:用于监听WEB应用属性改变的事件,包括:增加属性、删除属性、修改属性,监听器类需要实现javax.servlet.ServletContextAttributeListener接口。

3. HttpSessionListener:用于监听Session对象的创建和销毁,监听器类需要实现javax.servlet.http.HttpSessionListener接口或者javax.servlet.http.HttpSessionActivationListener接口,或者两个都实现。

 

4. HttpSessionActivationListener:用于监听Session对象的钝化/活化事件,监听器类需要实现javax.servlet.http.HttpSessionListener接口或者javax.servlet.http.HttpSessionActivationListener接口,或者两个都实现。

5. HttpSessionAttributeListener:用于监听Session对象属性的改变事件,监听器类需要实现javax.servlet.http.HttpSessionAttributeListener接口。

实现监听在线用户:

 

分享到:
评论

相关推荐

    JAVA+JSP+Servlet+android+SSH视频教程全集+项目视频 亲自总结

    ### JAVA+JSP+Servlet+Android+SSH视频教程全集+项目视频知识点解析 #### Java基础知识及应用 Java作为一门跨平台的高级编程语言,在软件开发领域占据着重要的地位。本教程将涵盖Java基础语法、面向对象编程(OOP)...

    韩顺平.j2ee视频实战教程servlet迅雷地址

    ### Servlet高级特性 - **过滤器**:Filter可以拦截用户请求,执行预处理或后处理操作。 - **监听器**:Listener可以监听Web应用程序中的各种事件,如HTTP会话创建、销毁等。 - **会话跟踪**:利用`HttpSession`...

    jsp+servlet教学源码小示例,看圣思园视频总结

    在Java Web开发中,`jsp`(JavaServer Pages)和`servlet`是两个核心的组件,它们协同工作,为用户提供动态网页服务。本教程源码小示例是针对初学者设计的,旨在帮助理解这两者的基本概念和用法。通过圣思园的视频...

    韩顺平_j2ee实战视频教程Servlet和JSP部分源码

    总结来说,这个教程通过实战案例和详细源码,旨在帮助学习者全面理解和掌握Servlet和JSP在j2EE开发中的应用,提升实际项目开发的能力。无论是初学者还是有经验的开发者,都能从中受益匪浅,进一步提升自己的技术水平...

    Understanding sip servlet 1.1

    **SIP Servlet** 是一种基于 Java 的技术,它允许开发人员使用 **Session Initiation Protocol (SIP)** 来创建通信应用程序。SIP 是一种用于控制多媒体通信会话(如语音和视频通话)的信令协议。通过使用 SIP ...

    Java web开发进阶

    本实训生培养方案旨在帮助学员掌握Java Web开发的核心技能,包括面向对象编程基础、数据结构、Java集合框架、设计模式、开发工具使用、数据库操作、前端技术、后端技术、高级Java特性以及软件工程等方面的知识。...

    spring开发视频高级教程.txt

    ### 高级Spring开发知识点 #### 1. Spring MVC - **简介**:Spring MVC是Spring框架的一个模块,用于构建基于模型-视图-控制器(Model-View-Controller, MVC)设计模式的Web应用程序。 - **特点**: - **灵活性**...

    java的jsp实现视频播放

    总结起来,Java的JSP实现视频播放主要涉及以下几个步骤: 1. 在JSP页面上创建`&lt;video&gt;`标签,并设置视频源和控制。 2. 使用Servlet处理视频文件的请求,返回视频数据。 3. 可选地,通过JavaScript进行更高级的播放...

    【69】2017年Java web开发工程师成长之路全套视频教程附配套资料下载 .txt

    根据提供的文件信息,我们可以推断出这是一套关于2017年的Java Web开发工程师成长之路的全套视频教程,该教程旨在帮助初学者乃至有一定基础的开发者系统地学习Java Web开发的相关技能。接下来,我们将围绕这个主题...

    狂神说各种学习视频配套笔记

    JavaWeb部分则深入讲解了Servlet和JSP,如在"总结1-servlet+jsp 实现一个购物车.md"中,可能介绍了如何利用这两项技术构建动态网页和实现购物车功能。 2. **HTML、CSS与JavaScript**: 这些是前端开发的基础。HTML...

    方立勋30天轻松掌握JavaWeb视频笔记

    ### 方立勋30天轻松掌握JavaWeb视频笔记知识点...- **高级应用**:提供Servlet在缓存管理等方面的高级应用案例。 以上内容覆盖了JavaWeb领域内的核心知识点和技术要点,旨在帮助学习者快速掌握JavaWeb开发的核心技能。

    java 资源地址下载,视频java 基础 java web ,java 项目实战 特别适合1-3年的软件开发人员学习使用

    - **Servlet**:Servlet是Java EE的一个重要组成部分,用于扩展应用程序的功能。 - **JSP**:Java Server Pages,一种简化页面开发的技术,可以嵌入Java代码来生成动态网页。 #### 2. MVC模式 - **Model-View-...

    JavaWeb开发实战经典ppt.pdf

    - **高级案例讲解**:提供额外的高级案例分析,帮助学习者深入了解实际开发过程中的问题解决策略。 #### 三、魔乐科技软件学院的整体培养方针 - **培养目标**:旨在培养具备扎实JavaSE基础和深入理解JavaEE架构的...

    JavaWEB项目开发案例精粹

    它不仅包含了课程管理、用户注册登录等基本功能,还涉及到了视频直播、支付接口集成等高级特性。通过该案例的学习,可以帮助开发者掌握复杂系统的架构设计与实现方法。 3. **博客系统**:这是一个比较轻量级但功能...

Global site tag (gtag.js) - Google Analytics