JSF和JPA整合

2009年2月19日晚上9:00-9:50
================做例子==========================
学习JSF进程:
JSF:(java server Face) 另外一种(jsp 3.0)
1,sun提出来的规范
2,特点:组件式视图开发,事件驱动模型
3,运行机制
   * 也是一个MVC模式
   * 控制器是:Faces Servlet (*.faces)
   * Face Servlet.class---》Lifecycle.class
   * 表单提交--》构建视图(以树状结构构建)
             --》触发事件(验证事件)-true
             --》填充一个JavaBean
             --》触发事件(自定义事件)
             --》导航(跳转)
4,例子:
   * 不用到JSTL是自带的
   * 驱动连接 --JAR包
   * 导JSF环境
   * 导JPA环境
       --转到数据库视图 表上右键JPA Reverse Engineering
          *勾选 Entity Bean || Java Data A...
          *包名加类名
       --改主键生产机制
          *切换到persistence.xml视图 打开实体类,
             选择@Id然后在选择PK Generation 里的Strategy选择Identity选项
       --在DAO里添加事务提交
          *在save方法里添加事务
              this.getEntityManager().getTransaction().begin();
       getEntityManager().persist(transientInstance);
       this.getEntityManager().getTransaction().commit();
          *在delete方法添加事务
                this.getEntityManager().getTransaction().begin();
  getEntityManager().remove(persistentInstance);
  this.getEntityManager().getTransaction().commit();
       --写个测试类测试一下
                Usertab user=new Usertab("bbb","bbb","bbb","bbb");
              UsertabDAO userdao=new UsertabDAO();
                userdao.save(user);
                System.out.println("----"+userdao.findAll().size()); 
   * 写一个事务管理的Bean
       *里面有页面操作属性
       *事件 
         --public void del(ActionEvent e){
  System.out.println("---del---");
  FacesContext cxt=FacesContext.getCurrentInstance();
  Map request=cxt.getExternalContext().getRequestParameterMap();
  int id=Integer.parseInt(request.get("id").toString());
  Usertab user=dao.findById(id);
  dao.delete(user);
  }
       *导航方法:(不能有参数)
         --public Stirng forward(){
             User u=new User(name,address,tel,email);
             dao.save(u);    
             return "success";
           }
       *加List 只要个get方法--实现查询
          public List getUsers(){
           return dao.findAll();
          }
       *在faces-config.xml注册(操作:右边添加BEAN ,你自己写的BEAN)
          --name:你自定义的名称(user)
          --class:包名在类名
       *添加有JSF的模版的JSP页面
          --<f:view>     --定义范围
               <h:form>
                    <h:paneGrid columns="3">  --布局面板
                        <h:outputLabel  value="名称"/> --标签
                        <h:inputText id="name" value="#{user.name}" />--双向绑定
                        <h:message for="name" /> --
                       ---通过事件来完成     在userBean里事件--
                       <h:commandButton actionListener="#{user.click}" value="提交" />
                       ---通过导航来实现
                        <h:commandButton action="#{user.forward}" value="提交" />
                            ---需要注册 在faces-config.xml注册(操作:右边添加BEAN ,Navigation Rules)
                                *From View 来源页面
                                *From Outcome :自定义名称
                                *To View:跳转到页面
                                *Redirect 可以清空
                    </h:paneGrid>
                    <hr />-----下面式显示
                    <h:dataTable border="1" var="u" value="#{user.users}" width="500px" cellpadding="0" cellspacing="0">
      <h:column id="column0">
       <f:facet name="header">
        <h:outputText value="编号"></h:outputText>
       </f:facet>
       <h:outputText value="#{u.id}"></h:outputText>
      </h:column>
      <h:column id="column5">
       <f:facet name="header">
        <h:outputText value="操作"></h:outputText>
       </f:facet>
       <h:commandLink value="删除" actionListener="#{user.del}">
        <f:param value="#{u.id}" name="id"></f:param>
       </h:commandLink>
      </h:column>
     </h:dataTable>
               </h:form>
            </f:view>
           
       *在index.jsp里
       <jsp:forward pag="user.faces"/>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值