ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用Netbeans开发Seam应用(一)

使用Netbeans开发Seam应用(一)

原创 Linux操作系统 作者:银河使者 时间:2008-05-06 19:33:04 0 删除 编辑
Seam是一个挺不错的框架,但是用netbeans来开发它,却有点难度,因为目前netbeans没有seam插件,不像Eclipse有jboss 提供的官方插件,但是插件是死的,人是活的,它要能跑起起来,一定有它的配置,下面我们就用netbeans做为IDE来开发一个seam的应用.

当然,我们还有另外一个方法,那就是利用seam自带的seam-gen工具,生成一个工程的框架,然后可以用netbeans打开,但是有一些不太好的地方,那就是所有的工程内容都混到一起去了,WEB的工程和EJB的工程都在同一个工程下面,并且由于是基于ant的,所以工程的目录看得可能不太习惯. 但它也有一个好处,那就是它会为你生成各种必须的配置文件,而不需要手工的编写,但是它的坏处就是,如果你后面想要添加EJB或者添加网页内容,就不太方便了,因为目录的组织是怪怪的,不是标准的Netbeans工程组织方式,所以我还是觉得自己建标准的netbeans工程,然后手工添加这些配置文件, 并且这些配置文件也不一定需要自己全部手工编写,完全可以复制过来,然后在一些细节的地方改动一下就可以了.并且配置好以后,要添加工程内容,就可以完全按照netbeans标准工程的方式来添加了.

由于自己也是前几天接触的seam,所以错误之处难免,还望大家指出.

首先我们说一说周边的东西,那就是要添加哪些配置文件,配置文件大概是什么内容,以及各个工程都需要哪些库,这些是基础,也是很重要的,否则布署工程的时候就会出现一大堆的错误.
在正式工作之前,先准备好要用到的工具,我这里的工具列表如下:
1,Netbeans6.1,可以到http://www.netbeans.org下载,下载的时候,选择下载全部的版本,也就是最大的那个版本.
2,Jboss-4.2.2.GA,可以到http://www.jboss.org下载.
3,Jboss-seam-2.0.1.GA,也可以到http://www.jboss.org下载
以上具体地址我就不给了,可以自己到首页上去找,这个应该不难吧.
至于richfaces就不用准备了,seam里面都带了,什么spring,hibernate等等,它里面都有自带.

本文的流程如下,先是大概介绍每个工程的配置文件有哪些,以及它们需要哪些库文件,然后才真正写一个示例程序,所以前面的配置文件内容仅供参考,让我们知道,里面包括了哪些元素,因为实际的工程和它不一定是一样的.

准备工作做好以后,就可以开始了,打开我们熟悉的Netbeans,选择新建工程,然后选择新建Web工程,在建WEB工程的时候, 不要选择使用任何框架,因为现在还没有seam的netbeans插件,所以,一切的配置都得靠手写.建好了WEB工程以后,在WEB-INF文件夹下面添加如下文ages.xml,components.xml,faces-config.xml,而web.xml是我们本来就有的,但是我们要修改一下里面的内容,好让它可以配合seam框架运行.更改好的web.xml内容大致如下:
如果你的WEB容器支持JAVAEE5,则下面的web-app version就可以等于2.5了,如果是支持J2EE1.4的,那么就要把它改成2.4的版本,建议是利用netbeans生成的web.xml基础上改,也就是只改内容,而不改xml的头部说明,也就是下面的web-app部份,一般不要去改,我们只改动里面的元素而已.

    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-app_2_5.xsd">
   
    Test
   
    <!-- Seam -->
     
   
        org.jboss.seam.servlet.SeamListener
   

   
   
        Seam Resource Servlet
        org.jboss.seam.servlet.SeamResourceServlet
   

   
   
        Seam Resource Servlet
        /seam/resource/*
   

   
   
        Seam Filter
        org.jboss.seam.servlet.SeamFilter
   


   
        Seam Filter
        /*
   

   
    <!-- 这里用了facelets的技术,我们的例子里面没有用到 -->
   
   
        javax.faces.DEFAULT_SUFFIX
        .xhtml
   


   
        
            javax.faces.STATE_SAVING_METHOD
        

        server
   


   
        facelets.DEVELOPMENT
        true
   

   
   
        Faces Servlet
        javax.faces.webapp.FacesServlet
        1
   

   
   
        Faces Servlet
        *.seam
   


   
        10
   
   
   


在添加其它三个文件的内容之前,先说一下那三个文件是干什么用的,首先components.xml,这个文件里面写的是seam组件的配置,它是必不可少的,一般来说,它可以放在很多地方,但是最好还是放在WEB-INF下面,下面来看看它里面的内容:


            xmlns:core="http://jboss.com/products/seam/core"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation=
              "http://jboss.com/products/seam/core
               http://jboss.com/products/seam/core-2.0.xsd
               http://jboss.com/products/seam/components
               http://jboss.com/products/seam/components-2.0.xsd">
   
   


上面的配置几乎是最简单的配置,它给出了查找EJB的时候,JNDI的形式,以及对话(conversation)的超时时间.
然后我们再来看faces-config.xml,它是标准的JSF的说明文件,但是它在SEAM里面并没有完全起到在JSF里面的作用,在JSF里面, 它定义backingbean,并且定义导航规则,但是在SEAM里面,它总是很小,backingbean不需要在这里定义了,因为在SEAM里面,我们可以把EJB做为backingbean,并且用注释的方式来指定它的名字以及范围,另外一个,导航规则也不用在这里定义了,我们可以用另外一个专门的文件来定义,那就是pages.xml,所以在SEAM的应用里面,虽然用到了JSF的技术,但是JSF的主要配置文件faces-config.xml 却不用怎么配置了,当然,你也可以在这里面配置导航规则,只有当我们使用了facelets技术以后,才确定要在这个文件里面配置一些东西,否则,这个文件空在那里也没什么关系,facelets是SEAM框架里面推荐使用的技术,当然,我们也可以不用,也可以只用JSF,如果我们使用facelets的话,就需要要faces-config.xml里面添加如下的声明以支持facelets:

              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">
   
   
        com.sun.facelets.FaceletViewHandler
   




最后我们再来看pages.xml,它是定义页面之间的导航规则的,这个文件是可有可无的,SEAM启动的时候,会找这个文件,找到了就读里面的配置,找不到也没关系,就当什么也没有发生.
它的大概内容如下:


       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://jboss.com/products/seam/pages

http://jboss.com/products/seam/pages-2.0.xsd"

       no-conversation-view-id="/main.xhtml"
                 login-view-id="/home.xhtml">

   
   
                    execute="#{register.invalid}"/>
   
        
            
               
            

        

        
   


   
   
        
            
               
            

        

        
   

   
              login-required="true">
   
        
            
               
            

        

        
   


              login-required="true">
   
        
            
        

        
        
            
        

        
   

   
              conversation-required="true"
          login-required="true">
         
        View hotel: #{hotel.name}
        
        
            
        

        
   


              conversation-required="true"
          login-required="true">
         
        Book hotel: #{hotel.name}
        
        
            
               
            

        

        
   


              conversation-required="true"
          login-required="true">
         
        Confirm booking: #{booking.description}
        
        
            
        

        
   

   
   
   
        
            
        


        
            
        

        
   

   
   
        
            You must be logged in to use this feature
        

   




一般来讲,SEAM可以配合richfaces来使用,这样可以补充标准的JSF组件不足的情况,并且richfaces和seam都是一家产品,所以运用起来可能会方便一些,在做SEAM应用的时候,推荐用richfaces做JSF的组件库,当然,你也可以用别的组件库,如apache的 MyFaces.在配置文件建好模型以后,再为WEB工程添加项目所需要的库,一般来说,需要添加的库如下:
jboss-seam-debug.jar 调试的时候用
jboss-seam-ui.jar    调用seam的组件,比如 jsf-facelets.jar     JSF的facelets技术
richfaces-impl.jar   richfaces的实现库
richfaces-ui.jar     richfaces的UI库
当然,根据不同的应用,可能所要包含的库会有点不同,具体库的依赖性,可以查看SEAM的官方说明.WEB项目的部份大概就这些,下一章,我们再说一说EJB项目的部份.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12921506/viewspace-263083/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2008-02-08

  • 博文量
    174
  • 访问量
    1085637