分享
 
 
 

Java Server Faces(JSF)历险(一)

王朝java/jsp·作者佚名  2006-02-01
窄屏简体版  字體: |||超大  

从今天开始研究JSF(Java Server Faces),JSF作为最新的MVC框架,得到了sun等业界技术领袖的支持,我相信JSF必然会超越Struts,Tapestry成为主流开发技术。以后的系列日志会记录我学习JSF的历程。

Getting Start

1. 安装,下载如下软件包:

Java JDK 1.4.1

Tomcat 5.0+(我曾经用过Tomcat5.5,它的配置有些不同,另外,多数IDE对5.0的支持更好)

Java Server Faces 实现,SUN提供了参考实现,我选择了Apache的MyFaces

2. 开发工具

好的IDE可以使我的工作事半功倍,我选择了Eclipse+NitroX 3 Studio,在Matrix.org.cn可以找到破解。NitroX是我认为最好的Eclipse插件。另外,MyEclipse4也很好。如果你不想用D版,我推荐Exadel,它的Free版本提供了大量的功能,但是Exadel的下载地址有问题,你可以给support@exadel.com发邮件要一个可用地址。另外,建议安装PropertiesEditor,它对properties文件提供类似native2ascii的编码操作。

3. NitroX中建立一个Web Application,新建一个JSF页,login.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<%@ page language="java" contentType="text/html; charset=gb2312" %>

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<!—绑定资源文件,需要在src目录下建立resources/application.properties,如果使用NitroX,新建的web工程中就自带-->

<f:loadBundle basename="resources.application" var="msgs"/>

<f:view>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<!—引用资源文件的内容,这里作用相当于<%=%>,h:outputText是JSF静态文本tag(以上都是我现在的理解)-->

<title><h:outputText value="#{msgs['login.title']}"/></title>

</head>

<body><p></p><p></p>

<h:form>

<table align="center" border="1">

<tr>

<td><h:outputText value="#{msgs['login.username']}"/></td>

<!—绑定User类的username属性,User类是JSF的managed bean(在faces-config.xml注册的),下面会介绍。下面的语句相当于<input type=”text” value=”<%=user.getUsername()%>”>-->

<td><h:inputText value="#{user.username}"/></td>

</tr><tr>

<td><h:outputText value="#{msgs['login.password']}"/></td>

<td><h:inputSecret value="#{user.password}"/></td>

"<!—action代表了一个系统事件,点击按钮就会触发该事件,本例子中的事件名称为login,它需要在faces-config.xml中定义-->

</tr><tr><td><h:commandButton action="login" value="#{msgs['login.action']}"/></td><td></td></tr></table></h:form></body></html></f:view>

再建立一个:welcome.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<%@ page language="java" contentType="text/html; charset=gb2312" %>

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<f:loadBundle basename="resources.application" var="msgs"/>

<f:view><html><head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>欢迎</title>

</head><body><h3><h:outputText value="#{msgs['welcome']}"/><h:outputText value="#{user.username}"/></h3></body></html></f:view>

4. 在src(如果用NitroX,则为WEB-INF/src/java)目录下建立resources目录,并建立一个application.properties文件。这个文件必须是GBK或GB2312编码,可以在文件属性中设置。

如果要编辑中文,要在Properties Editor

#login

login.username=用户名:

login.password=密码:

login.title=系统登录

login.action=登录

#welcome

welcome=欢迎您,

5. 声明User类

package net.chinasam.learning.jsf;

import java.io.Serializable;

public class User implements Serializable {

private static final long serialVersionUID = 4300075184736836406L;

private String username;

private String password;

public String getPassword() {return password;}

public void setPassword(String password) {this.password = password;}

public String getUsername() {return username; }

public void setUsername(String username) {this.username = username;}}

6. Managed Bean

把User作为JSF的Managed Bean,你可以使用IDE提供的可视化编辑工具,也可以在faces-config.xml中直接编辑:

<managed-bean>

<!—Bean的名字,在JSP中使用的user.username就是来自这里-->

<managed-bean-name>user</managed-bean-name> <managed-bean-class>net.chinasam.learning.jsf.User</managed-bean-class>

<managed-bean-scope>session</managed-bean-scope> </managed-bean>

7. 导航规则

我们要求在login.jsf页面输入用户名和密码,然后进入welcome页面,该页面输出login.jsp输入的用户名。

<!—下面的导航规则告诉系统,从login.jsp产生一个login事件,改事件的结果就是页面导航到welcome.jsp-->

<navigation-rule>

<from-view-id>/jsflearning/login.jsp</from-view-id>

<navigation-case>

<!—这个就是我们提到的事件名称-->

<from-outcome>login</from-outcome>

<to-view-id>/jsflearning/welcome.jsp</to-view-id>

</navigation-case> </navigation-rule>

8. 其他工作

你必须加入myfaces.jar等package,修改web.xml文件,将jsf的功能加入进来。幸好IDE环境已经帮助我们作了这些工作,不过还是了解一下的好。

9. 启动Tomcat,本来没有什么好说,但是还是要注意,NitroX下需要在run…和References中配置一下。并且,你访问的是*.jsf而不是以前的*.jsp了,因为web.xml的代码决定了只有.jsf才可以使用JSF:

<servlet-mapping>

<!-- Faces Servlet Mapping -->

<servlet-name>faces</servlet-name> <url-pattern>*.jsf</url-pattern>

</servlet-mapping>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有