最近在做一個需要JSF和Spring整合的項目,之前不知道如何在后臺管理Bean獲取被Spring管理的業務類對象,現在解決了,可以跑起來了!
- 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>
- 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>
-
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 閱讀(1949)
評論(0) 編輯 收藏 所屬分類:
SSH整合