服务器端的处理才是整个事件的Key,那么我们来看看整个请求,回复的过程,我们通过下面的图看看我们服务器端的代码怎么样才可以plug in进去:
看了这个图您肯定已经明白了,我们有机会得到客户端发送过来的HTTP请求,得到这个请求,得到请求里面的参数,我们就可以捋起袖子,大干一番了。
我们用什么方式去处理呢,最简单的一个方法是自己写一个servlet,在servlet的Dopost方法里面,写上处理这个请求的代码,并且把结果以XML的方式返回回去,那么我们这里用一个简单的例子:
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws java.io.IOException {
String action = req.getParameter("action");
String item = req.getParameter("item");
if ((action != null)&&(item != null)) {
// Add or remove items from the Cart
if ("add".equals(action)) {
cart.addItem(item);
} else if ("remove".equals(action)) {
cart.removeItems(item);
}
}
// Serialize the Cart's state to XML
String cartXml = cart.toXml();
// Write XML to response.
res.setContentType("application/xml");
res.getWriter().write(cartXml);
}
这对于了解服务器端编程的人来说,是最简单不过的了。当然,我们用了JSF框架,肯定不会再通过Servlet技术去做这件事情。我们这里用JSF的PhaseListener进行处理。什么是PhaseListener,我们来看一下PhaseListener的JavaDoc:
public interface PhaseListener
extends java.util.EventListener, java.io.Serializable
An interface implemented by objects that wish to be notified at the beginning and ending of processing for each standard phase of the request processing lifecycle.
原来,这个接口捕捉到每个Request的声明周期,在请求开始处理和请求处理结束时我们可以插入我们自己的代码。这个接口的两个最重要的方法如下:
void afterPhase(javax.faces.event.PhaseEvent event)
Handle a notification that the processing for a particular phase has just been completed. void beforePhase(javax.faces.event.PhaseEvent event)
Handle a notification that the processing for a particular phase of the request processing lifecycle is about to begin.
处理结束和处理开始两个方法,我们可以在这两个方法里面写入我们自己的代码,对用户过来的请求进行处理。
比如,我们可以在afterPhase方法里面,插入下面的代码对数据进行处理:
FacesContext facesContext = phaseEvent.getFacesContext();
ExternalContext externalContext = facesContext.getExternalContext();
Map paramMap = externalContext.getRequestParameterMap();
通过paramMap里面可以得到所有的参数,当然,我们并不是对每一个请求都会进行处理,所以,在客户端Javascript发送Ajax请求得时候,可以添加一个自定义的参数,比如我们前面文档中的ajaxdemo=ajaxdemo参数,这样我们可以判断一下当前是不是我们要处理的请求:
private final static String AJAX_DEMO = "ajaxdemo";
if (! AJAX_DEMO.equals(paramMap.get(AJAX_DEMO)))
return;
接下去的代码,就可以处理我们的各种各样的请求了,我们在这里要举的例子是如何得到当前地图的比例尺。下次讲座再深入探讨吧。
- 大小: 38.6 KB
分享到:
相关推荐
- **Ajax事件处理**:Ajax4JSF允许开发者定义和处理各种Ajax事件,比如点击、更改、验证等,这些事件可以在后台服务器端触发相应的处理逻辑,而无需刷新整个页面。 - **Ajax行为组件**:提供了一系列内置的行为组件...
Ajax4jsf是一个用于在JavaServer Faces (JSF) 应用程序中集成AJAX技术的组件库和框架。这个框架由Red Hat公司于2007年开发,旨在提升Web应用的用户体验,通过异步数据交换实现部分页面刷新,从而提供更流畅、响应更...
视图状态管理是JSF的重要特性,用于在服务器端保存组件的状态,确保页面间跳转时用户输入的数据得以保留。 5. **数据绑定**:JSF支持数据绑定,将UI组件与后台bean的属性关联,简化了数据的获取和更新。通过EL...
12、ArcGIS Server Java讲座--如何在用JSF在服务器端处理Ajax请求 29 13、ArcGIS Server Java讲座----利用Ajax得到当前地图的比例尺(服务器端) 32 14、ArcGIS Server Java讲座--用Ajax得到地图比例尺(客户端代码) ...
- **服务器端验证**: 在 AJAX 请求处理过程中,Ajax4JSF 自动触发服务器端验证逻辑,确保数据完整性。 - **转换功能**: AJAX 请求-响应周期中的数据转换操作也得到了支持,提高了数据处理的灵活性。 #### 四、组件...
**决定改变什么**:在服务器端处理完请求后,Ajax4JSF可以更新页面上的特定区域,而无需整个页面刷新。这可以通过`a4j:region`和`a4j:outputPanel`等组件来实现。 ### 3. Ajax4JSF组件库 Ajax4JSF提供了一系列的...
Ajax4JSF的设计目标是无缝集成到JSF生命周期中,提供Action和Value Change监听器、服务器端验证以及在Ajax请求-响应周期中的转换等功能。 在使用Ajax4JSF时,你可以轻松地向已有的JSF项目添加Ajax特性。它通过一个...
1. **JSF框架**:JavaServer Faces(JSF)是一个用于构建用户界面的Java EE组件模型,它简化了创建服务器端Web应用程序的过程。JSF提供了丰富的UI组件和事件处理机制。 2. **AJAX技术**:Asynchronous JavaScript ...
JavaScript Server Faces(JSF)是Java平台上的一种用于构建用户界面的服务器端框架,它简化了创建、维护和管理Web应用程序的复杂性。Facelets是JSF的默认视图定义语言,提供了一种声明式的方式来创建可重用、可维护...
将JSF与Ajax结合起来,可以让开发者利用JSF的强大功能来管理服务器端的业务逻辑,同时利用Ajax的异步特性实现页面的部分刷新,提升用户体验。在JSF中,这通常通过`<f:ajax>`标签或者第三方库如PrimeFaces或RichFaces...
DWR(Direct Web Remoting)是一个开源的Java库,它允许JavaScript与服务器端的Java对象进行直接通信,实现Ajax功能。而JSF(JavaServer Faces)是Java EE平台的一部分,它提供了一种用于构建用户界面的组件模型,...
A4J的AJAX请求可以与JSF的生命周期紧密结合,确保服务器端的状态管理得以正确维护。 **五、学习资源** "A4J ajax4jsf中文指南 chm"这份文档是学习A4J的重要参考资料,它涵盖了A4J的各个方面,包括安装、配置、组件...
JavaServer Faces(JSF)是Java平台上的一种用于构建用户界面的服务器端框架,它主要用于开发Web应用程序。这个“JSF ppt课件”很显然是为了帮助学习者深入理解JSF的核心概念和技术。以下是对JSF的一些关键知识点的...
《JavaServer Faces 2.0完全参考手册》对所有jsf功能都进行了解释,包括请求处理生命周期、托管bean、页面导航、组件开发、ajax、验证器、国际化和安全。贯穿全书的专家组意见提供了关于jsf设计的内部信息。 推荐...
3. **错误处理**:在处理Ajax请求时,要考虑到可能的错误情况,提供合适的错误提示。 4. **用户体验**:良好的用户体验是关键,使用Ajax更新时应考虑页面状态的同步,避免用户困惑。 通过Ajax与JSF的结合,我们...
- **a4j-servlet.jar**: 服务器端的组件,处理Ajax请求并返回响应。 ### 3. a4j关键组件 - **<a4j:commandXxx>**:这是a4j提供的可触发Ajax请求的组件,例如 `<a4j:commandButton>` 和 `<a4j:commandLink>`,它们...
它的页面范围Ajax支持允许在整个页面中定义触发Ajax请求的事件,并根据客户端事件更新服务器端数据,同步JSF组件树。 Ajax4jsf组件库包括一系列的标签,如a4j:ajaxListener、a4j:region、a4j:page、a4j:support等,...
1. **JavaServer Faces (JSF)**:JSF是一种Java Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,简化了UI组件的创建和管理,提供服务器端处理的表单验证和事件处理。 2. **AJAX技术**:AJAX允许网页在不...
优化包括减少Ajax请求的大小,使用缓存,合理配置服务器端资源,以及使用CDN(内容分发网络)来加速静态资源的加载。 8. **错误处理和调试**:理解和处理JSF和Ajax中的错误是开发过程中不可或缺的一部分。这涉及到...