天天看点

JSH1基本配置 (JSF1.1 + Spring2.0 + Hibernate3.1)

JSF1.1 + Spring2.0 + Hibernate3.1

 图示:

<a href="http://blog.51cto.com/attachment/201012/154227163.jpg" target="_blank"></a>

 JSF1.1 Jar包:

<a href="http://blog.51cto.com/attachment/201012/154254361.jpg" target="_blank"></a>

 MyFaces1.1 Jar包:

<a href="http://blog.51cto.com/attachment/201012/154536777.jpg" target="_blank"></a>

 Spring与Hibernate包的配置与文章《SSH1基本配置(Struts1.2 + Spring2.0 + Hibernate3.1)》一致

web.xml 配置:

&lt;!-- JSF Configuration --&gt; 

    &lt;servlet&gt; 

        &lt;servlet-name&gt;FacesServlet&lt;/servlet-name&gt; 

        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt; 

        &lt;load-on-startup&gt;0&lt;/load-on-startup&gt; 

    &lt;/servlet&gt; 

    &lt;servlet-mapping&gt; 

        &lt;url-pattern&gt;*.do&lt;/url-pattern&gt; 

    &lt;/servlet-mapping&gt; 

    &lt;!-- Spring Configuration --&gt; 

    &lt;context-param&gt; 

        &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; 

        &lt;param-value&gt;/WEB-INF/applicationContext.xml&lt;/param-value&gt; 

    &lt;/context-param&gt; 

    &lt;listener&gt; 

        &lt;listener-class&gt; 

            org.springframework.web.context.ContextLoaderListener  

        &lt;/listener-class&gt; 

    &lt;/listener&gt; 

    &lt;filter&gt; 

        &lt;filter-name&gt;CharacterEncoding&lt;/filter-name&gt; 

        &lt;filter-class&gt; 

            org.springframework.web.filter.CharacterEncodingFilter  

        &lt;/filter-class&gt; 

        &lt;init-param&gt; 

            &lt;param-name&gt;encoding&lt;/param-name&gt; 

            &lt;param-value&gt;gb2312&lt;/param-value&gt; 

        &lt;/init-param&gt; 

    &lt;/filter&gt; 

    &lt;filter-mapping&gt; 

        &lt;url-pattern&gt;/*&lt;/url-pattern&gt; 

    &lt;/filter-mapping&gt; 

    &lt;!-- Sun for JSF Listener Configuration --&gt; 

            com.sun.faces.config.ConfigureListener  

    &lt;!-- MyFaces for JSF Listener Configuration --&gt; 

            org.apache.myfaces.webapp.StartupServletContextListener  

    &lt;welcome-file-list&gt; 

        &lt;welcome-file&gt;input.faces&lt;/welcome-file&gt; 

    &lt;/welcome-file-list&gt; 

faces-config.xml

        这里必须要配置Delegation Configuration

&lt;!-- Delegation Configuration --&gt; 

    &lt;application&gt; 

        &lt;variable-resolver&gt;org.springframework.web.jsf.DelegatingVariableResolver&lt;/variable-resolver&gt; 

    &lt;/application&gt; 

    &lt;!-- Bean Configuration --&gt; 

    &lt;managed-bean&gt; 

        &lt;managed-bean-name&gt;userBean&lt;/managed-bean-name&gt; 

        &lt;managed-bean-class&gt;com.jsf.beans.User&lt;/managed-bean-class&gt; 

        &lt;managed-bean-scope&gt;request&lt;/managed-bean-scope&gt;

&lt;!-- 注入Service,userService已在Spring中配置 --&gt; 

        &lt;managed-property&gt; 

            &lt;property-name&gt;service&lt;/property-name&gt; 

            &lt;value&gt;#{userService}&lt;/value&gt; 

        &lt;/managed-property&gt; 

    &lt;/managed-bean&gt; 

    &lt;!-- Navigation Configuration --&gt; 

    &lt;navigation-rule&gt; 

        &lt;from-view-id&gt;/input.jsp&lt;/from-view-id&gt; 

        &lt;navigation-case&gt; 

            &lt;from-outcome&gt;success&lt;/from-outcome&gt; 

            &lt;to-view-id&gt;/success.jsp&lt;/to-view-id&gt; 

        &lt;/navigation-case&gt; 

            &lt;from-outcome&gt;error&lt;/from-outcome&gt; 

            &lt;to-view-id&gt;/error.jsp&lt;/to-view-id&gt; 

    &lt;/navigation-rule&gt; 

applicationContext.xml

      这里的Service切忌将scope设置为prototype类型,该类型持有状态对象

&lt;!-- Service Configuration --&gt; 

&lt;bean name="userService" id="userService" class="com.jsf.service.UserService" 

        factory-method="getInstance" lazy-init="false" scope="prototype"/&gt; 

User.java 

      UserService与SSH1中的一致。 

package com.jsf.beans;  

import java.io.Serializable;  

import com.jsf.service.UserService;  

public class User  implements Serializable{  

    private String id;  

    private String name;  

    private String password;  

    private Integer age;  

    public User() {  

        super();  

    }  

    public String getId() {  

        return id;  

    public void setId(String id) {  

        this.id = id;  

    public String getName() {  

        return name;  

    public void setName(String name) {  

        this.name = name;  

    public String getPassword() {  

        return password;  

    public void setPassword(String password) {  

        this.password = password;  

    public Integer getAge() {  

        return age;  

    public void setAge(Integer age) {  

        this.age = age;  

    private UserService service;  

    public UserService getService() {  

        return service;  

    public void setService(UserService service) {  

        this.service = service;  

    public String execute() {  

        if(service.validate(this.id, this.password)) {  

            User user = service.getUser(this.id);  

            this.setAge(user.getAge());  

            this.setName(user.getName());  

            return "success";  

        }  

        return "error";  

}  

 总结:

    重点在于配置faces-config.xml中要托管的解析器DelegatingVariableResolver   

    在web.xml中使用Sun对JSF的监听,MyFaces的监听可不使用

本文转自 sundunjam 51CTO博客,原文链接:http://blog.51cto.com/sunspot/469029,如需转载请自行联系原作者