JSP 中的观察者实施

Observer implementation in JSP

我在实现设计模式方面遇到了这样的问题。我有一些 class 在我的项目中保持警惕,是 observerManager 以及 jsp 页面中的一些观察者。观察者将等待来自 observerManager 的通知(当用户添加一些信息或更改某些内容时,运行 observerManager 中的 notifyChanged)。这些 class 现已实施。 我最大的问题是如何使用这些。

 public class ObserverManagerImp implements ObserverManager{
        private LinkedList<Observer> observers; 

    private User user;
    private ActionDone action;

    public ObserverManagerImp() {
        observers = new LinkedList<Observer>();
    }

    @Override
    public void registerObserver(Observer observer) {
        observers.add(observer);
    }

    @Override
    public void unregisterObserver(Observer observer) {
        observers.remove(observer);
    }

    @Override
    public void notifyObservers() {
        for(Observer observer : observers)
            observer.update(user,action);

    }

    public void dataChanged(User user, ActionDone action){
        this.user= user; 
        this.action = action;
        notifyObservers();
    }
}

界面观察者。在这个地方(在更新方法中)我想 运行 jquery 函数显示来自 jsp 的内容。

   public interface Observer {
        public void update(User user, ActionDone action);
    }

在 JSP 文件中是一些用 html 编写的框,我想在 observerManager 通知时弹出它。

<div id="message_content">
<div class="title" >Notification</div>
<div class="close" ><img id="close_button" src="images/close.png" id="close_button" width="25" height="25"/></div>
<div class="clear"></div>
<div class="message">User: name surname, added new comment</div>
<div class="clear"></div>
<button id="close_button" class="close_button" >Refresh Panel</button>
</div>

和javascript函数在此jsp:

function showUp(userName, userSurname, actionCode){
        $("#message_content.message").empty().append("User: " + userName + " " + userSurname + "was " + actionCode);
        $("#message_content").show();
    }

并且在这个 jsp 中我还创建了一个观察者对象。 请帮忙。

不如试试 ServletRequestAttributeListener ,你将能够监听到请求属性的变化。

http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequestAttributeListener.html