环境 :
eclipse3.7
Version: Indigo Service Release 2
Build id: 20120216-1857
JBoss5.1.0 GA
下载地址:
http://downloads.sourceforge.net/project/jboss/JBoss/JBoss-5.1.0.GA/jboss-5.1.0.GA-jdk6.zip?r=http%3A%2F%2Fsourceforge.net%2Fpr
JavaEE SDK1.5
下载地址:
http://download.oracle.com/otn-pub/java/javaee5u8_6_20/java_ee_sdk-5_08-jdk-6u20-windows.exe
1、eclipse 创建一个 Dynamic Web Project
name : jsfDemo
Target Runtime : JBoss v5.0 (如果没有,就new Runtime)
Dynamic web module version : 2.5
Configuration : Default Configuration for JBoss v5.0
--> next --> 修改 Default output folder为 WebRoot\WEB-INF\classes
-->next-->修改 Content directory:WebRoot
Generate web.xml deployment descriptor 打上勾
-->finish。
2、在新建项目 jsfDemo上右键 -->Properties--》点击 Project Facts--》在Project Fact中把 JavaServer Faces打上勾 ,同时选择2.0版本,然后点击
Further Configuration available...
弹出Modify Facted Project
在Type中选择 User Liberay
manage Library 弹出Preferences(Filtered)
通过new ,--》Jboss JSF 2.0,然后 Add JARs,把JSF2.0的jar包加进来
回到 Properties for jsfDemo界面,点击 Apply按钮 ,点击OK按钮。
3、添加 托管Bean:UserBean.java
在src目录上右键 new class : UserBean.java
package org.cai; public class UserBean { private String name; //用户名 private String pass; //用户密码 private String locale ; //国际化 语言 public String getLocale() { return locale; } public void setLocale(String locale) { this.locale = locale; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } public String getErrMessage() { return errMessage; } public void setErrMessage(String errMessage) { this.errMessage = errMessage; } private String errMessage; public void setName(String name) { this.name = name; } public String getName() { return name; } /** * 登录验证 * @return */ public String login() { if (name.equals("cai") && "cai".equals(pass)) { return "login"; } this.setErrMessage("您的用户名称和密码不符合。"); return "failure"; } }
4、修改WebRoot\WEB-INF中的文件
4.1、web.xml文件修改后内容如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <session-config> <session-timeout>30</session-timeout> </session-config> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.faces</url-pattern> </servlet-mapping> </web-app>
4.2、faces-config.xml文件修改后内容如下:
<?xml version="1.0"?><!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN" "http://java.sun.com/dtd/web-facesconfig_1_0.dtd"> <faces-config> <application> <!-- 配置定义国际化语言 --> <locale-config> <default-locale>zh_CN</default-locale> <supported-locale>en_US</supported-locale> </locale-config> </application> <!-- 配置导航规则 --> <navigation-rule> <!-- 请求为 index.faces时,如果返回success,则重定向到login.jsp,静态规则 --> <from-view-id>/pages/index.jsp</from-view-id> <navigation-case> <from-outcome>success</from-outcome> <to-view-id>/pages/login.jsp</to-view-id> <redirect/> </navigation-case> </navigation-rule> <navigation-rule> <!-- 请求为login.faces时,如果返回为login,则跳转到welcome.jsp ,返回failure时跳转到login.jsp--> <from-view-id>/pages/login.jsp</from-view-id> <navigation-case> <from-outcome>login</from-outcome> <to-view-id>/pages/welcome.jsp</to-view-id> </navigation-case> <navigation-case> <from-outcome>failure</from-outcome> <to-view-id>/pages/login.jsp</to-view-id> </navigation-case> </navigation-rule> <!-- 定义托管Bean, 有效范围为session --> <managed-bean> <managed-bean-name>user</managed-bean-name> <managed-bean-class>org.cai.UserBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> </faces-config>
5、添加国际化properties文件
此两文件均放在src目录下
5.1 messages_en_US.properties
titleText=JSF Demo hintText=Please input your name and password zh_CNText=China en_USText=English nameText=name: passText=password: commandText=Submit
5.2 messages_zh_CN.properties
titleText=JSF \u793A\u8303 hintText=\u8BF7\u8F93\u5165\u540D\u79F0\u4E0E\u5BC6\u7801 zh_CNText=\u4E2D\u6587 en_USText=\u82F1\u6587 nameText=\u540D\u79F0: passText=\u5BC6\u7801: commandText=\u63D0\u4EA4
titleText=JSF 示范 hintText=请输入名称与密码 zh_CNText=中文 en_USText=英文 nameText=名称: passText=密码: commandText=提交
6、在 WebRoot中创建文件夹pages,然后创建一下jsp文件
6.1 index.jsp
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%> <%@page contentType="text/html;charset=UTF-8"%> <f:view> <f:loadBundle basename="messages" var="msgs" /> <html> <head> <!-- 第一個JSF程式 --> <title>选择语言</title> </head> <body> <center> <h:form> <h:selectOneRadio value="#{user.locale}"> <f:selectItem itemValue="zh_CN" itemLabel="#{msgs.zh_CNText} " /> <f:selectItem itemValue="en_US" itemLabel="#{msgs.en_USText} " /> </h:selectOneRadio> <p> <h:commandButton value="#{msgs.commandText }" action="success" /> <p> </h:form> </center> </body> </html> </f:view>
6.2 login.jsp
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%> <%@page contentType="text/html;charset=UTF-8"%> <f:view locale="#{user.locale}"> <f:loadBundle basename="messages" var="msgs" /> <html> <head> <!-- 第一個JSF程式 --> <title><h:outputText value="#{msgs.titleText }" /></title> </head> <body> <h:form> <!-- 名稱: 請輸入您的名稱 <h3>請輸入您的密码</h3>--> <h3><h:outputText value="#{msgs.hintText }" /></h3><h:outputText value="#{msgs.nameText }" /> <h:inputText value="#{user.name}" /> <!-- 密码: --> <h:outputText value="#{msgs.passText }" /><h:inputText value="#{user.pass}" /> <p><!-- 送出 --> <h:commandButton value="#{msgs.commandText }" action="#{user.login }" /> <p> <h2> <font color="red"> <h:outputText value="#{user.errMessage }" /> </font> </h2> </h:form> </body> </html> </f:view>
6.3、welcome.jsp
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@page contentType="text/html;charset=GBK"%> <html> <head> <title>第一個JSF程式</title> </head> <body> <f:view> <h:outputText value="#{user.name}" /> 您好! <h3>歡迎使用 JavaServer Faces!</h3> </f:view> </body> </html>
7、在WebRoot\lib中增加jar包:
commons-beanutils-1.6.jar
commons-collections-3.1.jar
commons-digester-2.0.jar
jstl.jar
standard.jar
-------------------------------以上为使用eclipse创建一个简单示例----------------------------------------------
下面为发布项目到JBoss5.1.0 GA中,有两种方法发布:
1、通过eclipse ->Export :生成war包,然后把此war包放到jboss-5.1.0.GA\server\default\deploy\目录即可;
2、直接把项目的webRoot复制到jboss-5.1.0.GA\server\default\deploy\中,需要注意 ,如果项目的访问上下文为 jsfDemo,则 需要在
jboss-5.1.0.GA\server\default\deploy\下创建目录 jsfDemo.sar,然后在此目录中创建jsfDemo.war (此文件夹中的jsfDemo好像可以随便起名字,不要含有空格和中文即可),最后把WebRoot中的内容复制到jsfDemo.war中。
启动jboss-5.1.0.GA\bin\run.bat
http://localhost:8080/jsfDemo/pages/index.faces
注:
1、如果想通过ip访问,即http://192.168.0.4:8080/jsfDemo/pages/index.faces
则需要修改jboss-5.1.0.GA\server\default\deploy\jbossweb.sar\server.xml
中的<Connector protocol="HTTP/1.1" port="8080" "${jboss.bind.address}"
connectionTimeout="20000" redirectPort="8443" />
为 <Connector protocol="HTTP/1.1" port="8080" address="192.168.0.4"
connectionTimeout="20000" redirectPort="8443" />
不知道怎么放工程连接,如需要,联系我给发...
至此,估计应该可以了...
参考:http://caterpillar.onlyfun.net/Gossip/JSF/FirstJSF.htm