环境 :
eclipse3.7
Version: Indigo Service Release 2
Build id: 20120216-1857
JBoss5.1.0 GA
下载地址:
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