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"/>
JSF和JPA整合
最新推荐文章于 2020-05-10 20:03:03 发布