前段时间做了一个jsf+spring+hibernate的test,只做了查询部分,今天把增删改查一并做完,我们来分解一下这个test。
从三个方面来分解这个test:前台页面层(*.jsp页面),中间依赖注入spring层(*.xml配置文件),后台数据和业务层(*.java源文件)。
前台页面层(*.jsp页面):
在前台我们总共设计了7个页面,分别是:index.jsp,login.jsp,welcome.jsp,showpass.jsp,save.jsp,editok.jsp,deleteok.jsp,这7个页面的作用分别是:index.jsp,一般jsf的web程序都有,主要只是用于跳转到主页,在这个页面中我们一般只有如下一行代码“<jsp:forward page="/pages/login.jsf" />”,通过这个代码我们跳转到我们的首页,一般这个页面是自动生成,生成以后会有一个一起同时生成的注释,它的注释是这么写的“Redirect default requests to a JSF welcome page. All JSF requests must go through the Faces Servlet, which is mapped to /faces/* by default.”;login.jsp,一般是登陆页面,用于处理登陆事件,在这里我把所有的业务逻辑的处理都放在了这个页面里面;welcome.jsp,显示登陆成功信息的页面;showpass.jsp,根据login.jsp页面里面输入的name,显示相对应的pass,其实就是完成一个查询功能;save.jsp,进行保存操作成功后,返回的页面;editok.jsp,进行编辑操作成功后,返回的页面;deleteok.jsp,进行删除成功后,返回的页面。
页面前台就只是设计给用户展示的页面,里面可以存放各种各样的展示控件,由于jsf的特性所以在页面部分我们最重要的是处理好页面控件和后台java类的属性,方法的绑定。在这个test中,我主要使用了三种绑定。一般遇到的情况就是这三种。
第一种是text控件和后台java的属性的关联(input属性,一般属性),这样做的主要目的是,通过input属性的绑定取得页面的用户输入的值以便做为后台java类操作的参数,和存入数据库的记录,和一般属性的关联是为了能取得这个值,作为显示操作,例如:
<h:inputText value="#{login.pass}" binding="#{login.inputPass}"/>,前面就是只是和一般属性关联并取值,后面就是和input属性的绑定传参数。
第二种是button和后台java类的方法的绑定,这样做的目的是不同的button调用后台的不同的方法,并且跳转到不同的页面,例如:
<h:commandLink action="#{login.save}" style="text-decoration: none">
<h:commandButton value="save"/>
<f:param id="saveok" name="saveok" value="true"/>
</h:commandLink>
action就是调用后台方法,f:param id就是关联后台java的返回值的id,这个值同时和face-config.xml里面的标签相对应,来确定跳转页面。
第三种是控件和常量的绑定,一般也是常量属性,通常情况下把经常使用的常量和他的赋值放在一个application.properties的文件里面
Test分解
最新推荐文章于 2021-02-27 20:22:07 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)