`

JSF缓存

阅读更多
JSF缓存【转】
在用JSF 做系统view层时,有两个必须要解决的问题,就是缓存的控制和页面权限的判断,尤其是缓存问题,经常搞的我改了东西看不到效果,然后再找问题在哪,最后没招的时候,清空缓存,一切就ok,真tnnd。所以实现了JSF的PhaseListener接口,所有页面都设为no-cache,牺牲点速度,换取调整的时间,也算值了,反正客户都是在局域网中。

package com.ame.util;

import java.util.Map;

import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.servlet.http.HttpServletResponse;

import com.ame.login.bean.LoginBean;
/**
* @author LinRuijun
* @function JSF login capability judgment and cache-control
*/
@SuppressWarnings("serial")
public class LoginCheck implements PhaseListener {

public PhaseId getPhaseId() {
return PhaseId.RESTORE_VIEW;
}

public void beforePhase(PhaseEvent phaseEvent) {
FacesContext facesContext = phaseEvent.getFacesContext();
HttpServletResponse response = (HttpServletResponse)facesContext.getExternalContext().getResponse();
response.addHeader("Pragma", "no-cache");
response.addHeader("Cache-Control", "no-cache");
response.addHeader("Cache-Control", "no-store");
response.addHeader("Cache-Control", "must-revalidate");
}

public void afterPhase(PhaseEvent event) {
FacesContext fc = event.getFacesContext();
try{
String pageName = fc.getViewRoot().getViewId();
boolean loginPage = false;
if(pageName.lastIndexOf("login")>-1){
loginPage = true;
}
if (!loginPage && !loggedIn()) {
NavigationHandler nh = fc.getApplication().getNavigationHandler();
nh.handleNavigation(fc, null, "logout");
}

}catch(Exception e){
e.printStackTrace(System.out);
}

}
private boolean loggedIn() {
Map<String, Object> session = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
if (session.get("loginBean") != null) {
LoginBean login = (LoginBean)(session.get("loginBean"));
return login.isLoginFlag();
}else{
return false;
}
}
}

然后在JSF的Faces-config.xml 里配置一下

<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
version="1.2">
<lifecycle>
<phase-listener id="showPhaseListener">
com.ame.util.LoginCheck
</phase-listener>
</lifecycle>

<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>logout</from-outcome>
<to-view-id>/login.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
</faces-config>

okay ,一切搞定。
分享到:
评论

相关推荐

    jsf+facelets+ajax4jsf的全部jar包

    7. **优化与性能**:为了提高性能,开发者需要注意正确配置JSF的缓存机制,合理使用Facelets的缓存特性,以及优化Ajax4jsf的请求处理。同时,确保所有必需的jar包版本兼容,避免引入不必要的冲突或冗余。 总之,...

    jsf

    **JSF(JavaServer Faces)...8. **最佳实践**:提供一些开发JSF应用程序时的技巧和建议,如合理使用缓存、优化性能等。 通过这份PPT,开发者可以系统地学习JSF的基础知识和实际应用,进一步提升其在Web开发中的技能。

    ajax4jsf实例

    - **缓存与回退机制**:框架内建了缓存和回退机制,确保在Ajax操作失败时能恢复到之前的页面状态。 ### 3. 使用Ajax4JSF的步骤 - **添加依赖**:在项目中引入Ajax4JSF的JAR文件或通过Maven等构建工具添加依赖。 -...

    jsf1.2源代码下载

    - **缓存管理**:JSF 1.2改进了视图状态的缓存策略,源代码中可以看到如何配置和优化缓存以提升性能。 - **事件处理**:理解和分析源码中的事件监听器注册和触发机制,有助于编写高效的事件处理逻辑。 - **错误...

    jsf实战(中文版)

    在性能优化和调试方面,JSF实战也会提供实用的技巧和建议,如缓存管理、错误处理、性能监控等,帮助开发者构建高效且稳定的JSF应用。 最后,本书可能会包含一些实战项目案例,让读者有机会将所学知识应用于实际场景...

    jsf+spring整合

    4. **性能优化**:合理使用JSF的缓存机制和Spring的数据缓存,减少不必要的数据库查询。 整合JSF和Spring可以带来高效的开发体验和健壮的应用架构,但同时也需要开发者对两个框架都有深入的理解,才能充分发挥其...

    JSF 很全面的帮助文档

    JSF应用的性能可以通过多种方式优化,包括减少视图状态的大小、使用懒加载、正确配置缓存策略以及选择合适的组件库。 10. JSF的未来: 随着JavaEE更名为JakartaEE,JSF也在持续发展。最新的JSF版本(如JSF 3.0)...

    JSF 详解

    JSF 详解 JSF(JavaServer Faces)是一种基于Java技术的Web应用程序框架,用于简化Web应用程序的开发。JSF的核心概念是控件树,以MVC模式为基础,提供了一个灵活的Web应用程序开发框架。 结构 JSF的结构图可以分为...

    ajax4jsf-demo

    在使用Ajax4JSF时,需要注意性能优化,如减少不必要的网络请求,合理设计Ajax更新区域,避免全页面刷新,以及使用缓存等策略。同时,良好的代码组织和测试也是必不可少的。 综上所述,"ajax4jsf-demo"项目为学习和...

    EJB JSF开发员工信息系统

    2. **缓存**:通过EJB的缓存机制,提高数据读取效率。 3. **异步处理**:使用消息驱动bean处理耗时任务,避免阻塞用户界面。 4. **可扩展性**:设计模块化,便于添加新功能或整合其他系统。 综上所述,"EJB JSF开发...

    jsf 1.2 jar 应用包

    10. **性能优化**:虽然JSF 1.2相对后来的版本可能在性能方面稍显不足,但仍然可以通过合理的缓存策略、减少不必要的请求处理和优化组件使用等方式来提高性能。 综上所述,JSF 1.2作为一个成熟的Java Web框架,提供...

    JSF and MyFaces 类库

    10. **性能优化**:MyFaces提供了一些性能优化选项,如通过设置`org.apache.myfaces.USE_TRANSLATIONS_CACHE`属性启用翻译缓存,或者使用Mojarra的Partial State Saving来减少服务器负载。 总的来说,JSF和MyFaces...

    jsf第一步

    - **性能优化**:这一章节可能涵盖如何减少不必要的请求处理,缓存策略,以及如何利用Partial State Saving来提高JSF应用的性能。 学习JSF的第一步通常是理解这些基础概念,然后通过实践逐步熟悉框架的工作原理。...

    ajax4jsf使用中文手册

    手册中会介绍如何利用Ajax4JSF的特性,如缓存和批量更新,来提升性能。此外,还提供了调试工具和日志配置的指导。 ### 10. 示例与实战 手册提供了丰富的示例代码和步骤,帮助读者理解和实践Ajax4JSF。从简单的按钮...

    jsf自带分页

    此外,缓存策略和异步加载也是提升分页性能的有效手段。 7. 用户体验: 考虑到用户体验,可以添加诸如“跳转到指定页”、“每页显示条目数可选”等功能。这些可以通过额外的输入框和选择器来实现,配合后端逻辑...

    JSF2新特性以及配置

    3. **Component Tree缓存**:JSF2引入了组件树缓存,提高了页面渲染性能。这使得在处理多个请求时,可以重用组件树,减少了不必要的计算。 4. **Partial State Saving**:JSF2实现了部分状态保存,只保存发生更改的...

    jsf+EJB开发实例

    6. **性能优化**:结合JSF的缓存机制和EJB的缓存策略,可以提高系统的响应速度和处理能力。 综上所述,JSF和EJB的结合使用,能够构建出功能强大且结构清晰的企业级应用。开发者可以通过JSF的组件化和声明式编程方式...

    ajax的框架dwr整合jsf

    9. **性能优化**:在实际应用中,考虑性能和安全性,可以对DWR的缓存策略、异步处理、安全设置等进行调整,确保应用的高效和稳定运行。 通过以上步骤,我们可以成功地在JSF应用中集成DWR,利用其强大的Ajax功能。...

    JSF api,很详细,很全

    1. **恢复视图**: JSF从服务器缓存中恢复已渲染的视图。 2. **应用请求值**: 将请求参数绑定到组件的属性。 3. **过程验证**: 验证组件的输入数据。 4. **更新模型值**: 如果验证成功,将组件的值更新到模型中。 5. ...

    VisualWebJSF架构使用教程.rar

    7. **最佳实践和优化**:可能还包括一些提升性能和用户体验的建议,例如缓存管理、错误处理等。 而“VWJSFProject”文件很可能是示例项目,它包含了一个完整的VisualWebJSF应用,供你参考和学习。通过分析和修改这...

Global site tag (gtag.js) - Google Analytics