Seam的配置详解

在Seam应用中,需要Seam参与到Servlet容器的生命周期中,在应用启动初始阶段,通过Servlet容器引导Seam启动,此时Seam启动它自有的上下文关系的容器并扫描组件和开始服务创建组件实例,配置方法如下: Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet *.seam 在上面的配置中,url-pattern决定了所有JSF页面的后缀名,这个后缀名我们可以实际需要进行设置,页面文件运行时,服务器只接收以.seam结尾的请求,例如项目中有一个页面文件login.xhtml,那么在浏览器地址栏中运行该文件时,应输入的文件名应该为login.seam,如果把上面的url-pattern值改为*.jsp,那么输入的文件名应为login.jsp。另外,除了这些配置外,还需要在web.xml 文件中加上Seam的侦听器,在运行过程中,当HTTP会话被打开和关闭时,Servlet容器也会通知Seam。Seam通过注册一个Servlet过滤器和一个JSF时期 Listener来加入到处理Servlet请求的工作中来。这样通过处理这些Servlet和JSF周期事件,Seam可以管理它的容器。配置方法如下: org.jboss.seam.servlet.SeamListener 配置这个SeamListener类主要是负责引导Seam,以及销毁Seam会话和应用程序。每不Seam组件被调用时,它开始扫描组件所在的classpath。这个组件扫描器将组件的定义放置在Seam容器中。任何被标记为 application-scoped启动的组件(例如:使用@Startup和@Scope(ScopeType.APPLICATION)的组件)将被自动初始化。这种启动组件常用于执行程序初始化工作,比如服务启动时自动生成模块导航树,定时服务等功能。 1.6.2 Seam资源管理器 在JSF 规范中没有提供如何把诸如图片、CSS、JavaScript这类共用性资源给浏览器的实现方法。在实际应用中,最常见的解决方式是使用自定义的JSF时期Listener 将这些请求匹配相应的路径。而这样却打乱了JSF生命周期。而Seam通过使用自定义SeamResourceServlet处理来这些资源。 在配置Seam Resource Servlet时,需要在 web.xml 中有以下项: Seam Resource Servlet org.jboss.seam.servlet.SeamResourceServlet Seam Resource Servlet /seam/resource/* 1.6.3 在Seam限 制访问资源可以通过在web.xml配置文件中用部署描述符中的security-constraint元素允许不通过编程就可以限制对某个资源的访问。security-constraint元素中用web-resource-collection子元素来标识需要保护的资源。所有security-constraint元素必须包含至少一个web-resource-collection。该元素有一个web-resource-name元素,后者提供一个任意的标识名,还包含一个url-pattern元素以指出哪些URL需要保护。另一个可选的http-method元素为保护应用指定HTTP命令(GET,POST等;默认是所有方法),还有一个可选的description元素用于提供文本说明。比如,下面的web-resource-collection(在一个security-constraint元素中)配置了Web应用程序proprietary目录下所有的文档都需要保护。务必注意,url-pattern只能应用于可以直接访问资源的客户端。在某种特殊情况下,它不能够应用在通过MVC框架的RequestDispatcher或jsp:forward访问的页面。这个不对称性如果利用得当,将非常好。比如,在MVC框架中一个servlet查找存储在bean中的数据,然后跳转请求到一个从bean中提取数据并显示数据的页面。需要确保JSP页面不能够被直接访问,只能通过页面将要用来创建bean的servlet才能访问。url-pattern和auth-constraint元素可以通过声明任何用户都不能直接访问这个JSP页面来达到此目的。但这个不对称性使开发人员放松了警惕,允许他们偶尔能够不受限制的访问保护资源。 1.6.4 Seam Servlet过滤器 Serlvet 过滤器把整个request的处理过程包裹得严严实实,可以在处理请求之前和处理请求之后执行逻辑。Seam使用单独一个SeamFilter类来封装 JSF Servlet,以使其在JSF生命周期之外“节外生枝”或者是处理JSF没有捕捉的请求。但这个过滤器并不限于处理JSF请求。它处置所有的请求,也允 许非JSF请求访问Seam容器。Seam可以不依赖于过滤器工作,但这些被安装的过滤器对Seam额外添加的服务很有用处。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值