随笔-14  评论-34  文章-0  trackbacks-0
最近在做一个需要JSF和Spring整合的项目,之前不知道如何在后台管理Bean获取被Spring管理的业务类对象,现在解决了,可以跑起来了!

  1. web.xml
     1 <?xml version="1.0"?>
     2 <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
     3   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
     5     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
     6   version="2.4">
     7  
     8   <display-name>example</display-name>
     9 
    10     <context-param>    
    11         <param-name>contextConfigLocation</param-name>
    12         <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
    13     </context-param>
    14 
    15     <listener>
    16       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    17     </listener>

    18 
    19     <servlet>
    20         <display-name>FacesServlet</display-name>
    21         <servlet-name>FacesServlet</servlet-name>
    22         <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    23         <load-on-startup>0</load-on-startup>
    24     </servlet>
    25 
    26     <servlet-mapping>
    27       <servlet-name>FacesServlet</servlet-name>
    28       <url-pattern>*.faces</url-pattern>
    29     </servlet-mapping>
    30      
    31 </web-app>

  2. faces-config.xml
     1 <?xml version='1.0' encoding='UTF-8'?>
     2 <!DOCTYPE faces-config PUBLIC
     3 "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
     4 "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
     5 <faces-config>
     6     <application>
     7         <variable-resolver>
     8             org.springframework.web.jsf.DelegatingVariableResolver
     9         </variable-resolver>
    10     </application>


    12 <managed-bean>
    13   <managed-bean-name>infoBean</managed-bean-name>
    14   <managed-bean-class>
    15       com.jam.managedbeans.InfoBean
    16   </managed-bean-class> 
    17   <managed-bean-scope>request</managed-bean-scope>
    18 </managed-bean>
    19 
    20 </faces-config>


  3. InfoBean.java
    假如InfoBean中需要使用业务类UserService的方法,而UserService交由Spring管理(id="userService"),InfoBean可以这样写:
    package com.jam.managedbeans;

    import java.util.Map;

    import javax.faces.context.ExternalContext;
    import javax.faces.context.FacesContext;

    import org.springframework.context.ApplicationContext;
    import org.springframework.web.jsf.FacesContextUtils;

    import com.jam.hibeinate.po.Bloguser;
    import com.jam.service.UserService;

    /**
     * 
    @author Jam Chan
     * 
     
    */
    public final class InfoBean extends Object {

        
    /**
         * 用户名
         
    */
        
    private String userName;
        
    /**
         * 业务类
         
    */
        
    private UserService userService;
        
    /**
         * 密码
         
    */
        
    private String password;

        
    /**
         * 登陆验证
         * 
         * 
    @return
         
    */
        
    public String loginValidate() {
            FacesContext facesContext 
    = FacesContext.getCurrentInstance();
            ExternalContext extnContext 
    = facesContext.getExternalContext();
            // POJO类
            Bloguser objUser 
    = new Bloguser();
            objUser.setUsername(getUserName());
            objUser.setPassword(getPassword1());
            
    // 从Spring中获取需要的业务类UserService,我就是在这里被卡住,终于OK了
            ApplicationContext appContext = FacesContextUtils.getWebApplicationContext(facesContext);
            userService 
    = (UserService) appContext.getBean("userService"
    );

            
    // 验证用户
            boolean result = userService.loginValidate(objUser);
            
    // 获取SessionMap
            Map sessionMap = extnContext.getSessionMap();
            
    if (result) { // 登陆成功
                /* 把用户名设置在Session中 */
                sessionMap.put(
    "userName", getUserName());
                
    return "success";
            } 
    else { // 登录失败
                /* 清空session */
                
    if (sessionMap.containsKey("userName")) {
                    sessionMap.remove(
    "userName");
                }
                
    return "failed";
            }
        }
        // setter getter省略
    暂时写到这,可能还要查漏补缺,发现问题继续加上!


posted on 2008-03-20 20:44 Jam Chan 阅读(1941) 评论(0)  编辑  收藏 所属分类: SSH整合

只有注册用户登录后才能发表评论。


网站导航: