JSF 是基于事件驱动的
所以 下面 就 基于 在JSF阶段事件(生命周期事件)中控制页面的访问权限
<!--EndFragment-->
主要是 实现一个生命周期监听接口 javax.faces.event.PhaseListener
public class SecurityLifeListener implements PhaseListener{
public void afterPhase(PhaseEvent arg0) {
}
public void beforePhase(PhaseEvent event) {
//设置 ViewRoot
FacesContext fc = event.getFacesContext().getCurrentInstance();
UIViewRoot uiv = new UIViewRoot();
//根据实际情况 设置跳转页面
uiv.setViewId("/login.jsp");
fc.setViewRoot(uiv);
//或者直接根据你配置文件的导航 来设置
// logout 来自配置文件
NavigationHandler nh = fc.getApplication().getNavigationHandler();
nh.handleNavigation(fc, null, "logout");
<!--EndFragment-->
//还可以使用 常用的HTTP对象
(HttpServletRequest) FacesContext.getCurrentInstance()
.getExternalContext().getRequest()
}
/**
* 参数说明 Restore_View:当(重新)访问JSP的时候,重建server端组件树。
*
* Apply_Request Value:将request parameters 复制到component submitted values。
*
* Process_Validators:执行验证。
*
* Update_Model Values:更新model数据:<h:inputText value="#{user.name}"/>
*
* Invoke_Application:调用应用程序:Action。
*
* Render_Response:渲染Response:保存状态并装载下一个视图。
*
*/
public PhaseId getPhaseId() {
return PhaseId.RENDER_RESPONSE;
}
}
当然我们使用 javax.servlet.Filter 来进行访问权限控制 也行 ,但是没有比上面的方法来得更直接的了
我们通过上面的方法就明白 ,其实这个生命周期监听 和拦截器 很相似的 。它主要是控制某个生命周期的前后做什么处理
当然我们想让这个 监听响应的JSF生命周期的类生效 还需要下面的配置:
<lifecycle> <phase-listener id="securityListener"> com.SecurityLifeListener </phase-listener> </lifecycle>
下面说明它的优点:
不影响原有的业务逻辑代码的情况下,对页面进行权限控制;
集中处理页面权限,简单而高效。
分享到:
相关推荐
8. **安全**:Spring Security可以被用来保护应用程序的资源,控制用户的访问权限。 9. **国际化和本地化**:JSF支持资源包,可以处理多语言内容。 在深入研究JSFDemo项目的源代码和配置文件时,我们可以更详细地...
**用户权限管理**是JSF应用中的一个重要方面。通常,这涉及到身份验证和授权机制,确保只有经过认证和授权的用户才能访问特定资源。JSF可以与Spring Security、Apache Shiro等安全框架集成,实现登录验证、角色控制...
在JSF应用中集成Spring Security,可以实现细粒度的权限控制,保护应用程序免受非法访问。例如,可以设置特定的URL或方法需要特定的角色才能访问,或者根据用户权限动态调整界面展示内容。 5. **Spring TestSuite**...
在JSF+SSH组合中,Spring主要负责业务逻辑和数据访问层的协调。 3. **Struts框架**: Struts是基于MVC设计模式的Web应用框架,主要用于控制应用程序的流程。它通过Action类来处理用户的请求,并决定接下来的视图。在...
此外,Spring Security可以用于权限管理和认证,确保只有授权用户才能访问特定的预订功能。 **文件"chap04"可能包含的内容** "chap04"可能是项目中的第四章或第四部分,通常会详细讲解系统的某些关键功能或模块。这...
在IT领域,JavaScript Server Faces(JSF)...在实际项目中,还可以结合其他技术和工具,如Spring Security进行权限控制,PrimeFaces提供更丰富的UI组件,以及JUnit和Mockito进行单元测试,以提高代码质量和可维护性。
通过这种方式,你可以利用JSF 的组件模型、Hibernate 的数据访问能力以及Tiles 的布局管理,为用户提供一致且易于管理的用户体验。这个登录实例是此类整合的一个基础应用,但你可以根据需求扩展它,例如添加权限控制...
4. **企业级应用架构**:一个典型的企业级应用通常包括多个模块,如用户认证、权限管理、数据访问、业务逻辑和服务层等。JSF作为前端展示层,Spring负责业务逻辑和依赖管理,而iBATIS处理数据库交互。这种架构使得每...
此外,对于大型应用,可能还需要结合Spring Security或Apache Shiro等安全框架来进行更复杂的权限管理。 总之,JSF登录实例是学习JSF的一个基础但重要的实践。通过这个过程,开发者能够理解JSF的组件模型、Managed ...
7. **安全性与性能优化**:系统可能采用了Spring Security进行权限控制,防止未授权访问。同时,通过缓存机制、数据库连接池和优化的SQL查询,提升系统响应速度和资源利用效率。 8. **部署与维护**:系统可能使用...
- 文件存储:合理规划服务器上的文件存储位置,考虑文件的访问权限、备份和清理策略。 - 用户体验:提供明确的上传进度提示和错误反馈,以及友好的下载体验。 通过以上步骤,你可以在JSF应用中实现文件上传和下载...
- 权限管理:根据用户角色设置不同的访问权限,如读、写、执行等。 总结来说,这个"JSF+primefaces 网盘实现代码前端"项目将利用JSF的强大力量,结合PrimeFaces的丰富组件,以及HTML、CSS和JavaScript的基础技术,...
3. **数据访问层**:使用Hibernate进行数据库操作,包括商品库存管理、用户信息存储和订单记录等。 4. **持久化模型**:定义Java实体类,对应数据库中的表,通过Hibernate的注解进行配置。 5. **配置文件**:包括...
**Spring**是一个全面的企业级应用开发框架,核心特性包括依赖注入(DI)、面向切面编程(AOP)、以及大量的模块如Spring MVC(用于Web开发)、Spring Data(数据库访问)、Spring Security(安全控制)等。...
此外,Spring Security可以集成到JSF应用中,实现权限控制和认证。 **Spring与Hibernate集成**:Spring通过其数据访问模块(如Spring JDBC和Spring Data JPA)提供了对Hibernate的全面支持。开发者可以使用Spring的...
JSF与模型的交互主要通过Managed Beans实现,这是一个简单的Java类,可以包含业务逻辑和属性,供视图和控制器访问。 4. **控制器(Controller)**: JSF中的控制器主要由事件处理机制完成。当用户操作组件时,会触发...
1. ** Managed Beans**:JSF中的Managed Beans是简单的Java对象,它们存储业务数据和方法,可以通过JSF EL表达式访问。 2. **转换和验证**:JSF支持在组件级别或全局级别的数据转换和验证,确保输入数据的有效性。 3...
表达式语言是JSF中的一个重要特性,它允许开发者在JSF页面中访问JavaBean属性、执行简单运算等操作。EL的使用可以显著减少页面代码量,提高代码的可读性和可维护性。 **4. 组件树** JSF通过组件树来表示Web页面的...
- 通过配置 Spring Security 过滤器,可以拦截并处理用户的登录请求,同时在 JSF 页面上展示相应的权限控制。 5. **AOP 在 JSF 中的应用**: - Spring 的 AOP 功能可以在 JSF Managed Bean 的方法调用前后添加切...
JSF可以与Spring、Hibernate、PrimeFaces等其他框架无缝集成,进一步扩展其功能,例如Spring Security用于权限管理,Hibernate用于持久化数据,PrimeFaces提供更多的UI组件和特效。 综上所述,JSF是一个强大且灵活...