从今天开始研究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 "-//W 3C//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 "-//W 3C//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>

Java Server Faces(JSF)历险(一)相关推荐

  1. Java Server Faces (JSF)页面转换与验证(二)

    2019独角兽企业重金招聘Python工程师标准>>> 这个案例分析的目的是将一个单字段字符串值转换为一个  PhoneNumber对象.我们将一步一步地完成这个转换过程. 第 1 ...

  2. java server faces

    引用:http://baike.baidu.com/view/3420290.htm 材料参考:http://wenku.baidu.com/view/83b1f8659b6648d7c1c74667 ...

  3. java的jsf是什么_什么是 JSF(Java Server Faces)

    JSF为JAVA的 Web应用用户界面的开发人员提供了标准的编程接口.丰富可扩展的UI组件库(一个核心的JSP标记库用来处理事件.执行验证以及其他非UI相关的操作和一个标准的HTML 标记库来表示 U ...

  4. Java Server Faces_用JavaServer Faces开发Web应用(4) (转)

    用JavaServer Faces开发Web应用(4) (转)[@more@] 6.事件处理. XML:namespace prefix = o ns = "urn:schemas-micr ...

  5. java server模式 设置_JVM client模式和Server模式的区别

    这里向大家描述一下JVM client模式和Server模式两者的区别和联系,JVM如果不显式指定是-Server模式还是-client模式,JVM能够根据下列原则进行自动判断(适用于Java5版本或 ...

  6. Java Server Page

    JSP JSP全称是Java Server Page,基于Java和Servlet一样是sun公司推出的一套开发动态web资源的技术,称为JSP/Servlet规范.JSP的本质其实就是一个Servl ...

  7. JSP:Java Server Page(1)

    JSP:Java Server Page JSP的本质:Jsp是一种动态网页技术! 动态生成网页数据,而不是有动态效果的网页!--动态效果用JavaScript实现 常见的几种动态网页技术:jsp.A ...

  8. 500错误无法为jsp编译类:_JSP(Java Server Pages)的相关使用

    JSP,即Java Server Pages,可解释为ava服务器页面,其根本是一个简化的Servlet设计: Jsp也是一种动态网页技术!( 指数据的动态显示 ) 注:以下内容均是在tomcat服务 ...

  9. JSP简介-什么是Java Server Pages?

    JSP全称是Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开始以%>结束. JSP是一种Java servle ...

最新文章

  1. [RN] React Native 自定义 底部 弹出 选择框 实现
  2. 求一个简单的java线程代码,Java线程代码的实现方法
  3. 神策数据实战学堂开课,分享行业最佳业务和技术实践
  4. C# List泛型集合中的GroupBy用法
  5. 如何判断线程池已经执行完所有任务了?
  6. 一道c++小编程题,
  7. 可以运行的Oracle Advanced Queue的例子
  8. 12306崩了,90%的人都用过这三款抢票工具
  9. 12.4 Borüvka算法
  10. 实用计算机理论基础知识试题及答案,计算机基础知识试题库及答案(5)
  11. 倾斜摄影行业背景知识介绍
  12. VLDB 历年最佳论文汇总
  13. GPT分区相关的操作
  14. 几何画板中去除画出的线段的教程
  15. 新上线的“闪电”算法
  16. 杂事记诗-- 读网文《穷鬼的上下两千年》有感
  17. Java基础知识梳理
  18. 如何用JavaScripte和HTML 实现一整套的考试答题卡和成绩表
  19. CodeMonkey过关学习笔记系列:46-55关 数组
  20. Jsp中实现搜索查找功能

热门文章

  1. 常用视频会议产品对比分析
  2. 软件工程初探 -- Homework 1
  3. 对计算机英语课的作文,有趣的电脑课作文5篇
  4. 【Unity基础】UI——小地图的制作 UI界面显示人物模型
  5. 【数学分析】实/复分析系列文章汇总目录(持续更新中!)
  6. 为什么super()和this()调用语句不能同时在一个构造函数中出现的解释
  7. 如何让kibana零等待时间升级插件(前后端分离的部署)
  8. 干货 | 自闭症预测 You can you up
  9. GPU分配问题0 successful operations. 0 derived errors ignored.
  10. C# 大帧头数据转化 备忘