A Web Module That Uses JavaServer Faces Technology: The hello1 Example

一、JSF

JavaServer Faces技术是用于构建基于Java技术的Web应用程序的服务器端组件框架。

JavaServer Faces技术包括以下内容:

  • 用于表示组件和管理其状态的API; 处理事件,服务器端验证和数据转换; 定义页面导航; 支持国际化和可获取性; 并为所有这些功能提供可扩展性
  • 标记库,用于向Web页面添加组件以及将组件连接到服务器端对象

JavaServer Faces技术提供了定义良好的编程模型和各种标记库。标记库包含实现组件标记的标记处理程序。这些功能显着减轻了使用服务器端用户界面(UI)构建和维护Web应用程序的负担。只需很少的努力,您就可以完成以下任务。

  • 创建一个网页。
  • 通过添加组件标记将组件拖放到网页上。
  • 将页面上的组件绑定到服务器端数据。
  • 将组件生成的事件连接到服务器端应用程序代码。
  • 保存并恢复超出服务器请求生命周期的应用程序状态。
  • 通过自定义重用和扩展组件。

JavaServer Faces应用程序提供的功能类似于任何其他Java Web应用程序。典型的JavaServer Faces应用程序包括以下部分。

  • 一组网页,其中布置了组件。
  • 用于向网页添加组件的一组标记。
  • 一组托管bean,它是轻量级容器管理对象(PO??JO)。在JavaServer Faces应用程序中,托管bean用作支持bean,它定义页面上UI组件的属性和功能。
  • Web部署描述符(web.xml文件)。
  • (可选)一个或多个应用程序配置资源文件,例如faces-config.xml文件,可用于定义页面导航规则以及配置Bean和其他自定义对象(如自定义组件)。
  • (可选)一组自定义对象,可以包括应用程序开发人员创建的自定义组件,验证程序,转换程序或侦听程序。
  • (可选)一组自定义标记,用于表示页面上的自定义对象。

下图显示了典型JavaServer Faces应用程序中客户端和服务器之间的交互。响应客户端请求,Web页面由实现JavaServer Faces技术的Web容器呈现。

该Web页面myfacelet.xhtml是使用JavaServer Faces组件标记构建的。组件标签用于向组件添加组件view (myView在图中表示),这是页面的服务器端表示。除了组件之外,网页还可以引用对象,例如:

  • 在组件上注册的任何事件侦听器,验证器和转换器
  • JavaBeans组件,用于捕获数据并处理组件的特定于应用程序的功能

根据客户端的请求,视图将呈现为响应。渲染是基于服务器端视图,Web容器生成可由客户端(例如浏览器)读取的输出(例如HTML或XHTML)的过程。

二、具体实例

这个实例的下载链接如下:https://github.com/javaee/tutorial-examples(可以指网页下载,或者使用git下载:git clone https://github.com/javaee/tutorial-examples)

关于如何使用maven打包并部署到glassfish服务器中去,参见博客《Maven+glassfish基础搭建与使用》,此篇博客主要是介绍JSF技术与其中一个具体实例hello1中的hello.java文件和web.xml文件

下载并解压tutorial-examples-master,找到目录tutorial-examples-master\web\jsf\hello1\src\main\java\javaeetutorial\hello1下的hello.java文件。个人阅读源码的理解,以注释的形式展出。

hello.java

 1 /**
 2  * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
 3  *
 4  * You may not modify, use, reproduce, or distribute this software except in
 5  * compliance with  the terms of the License at:
 6  * https://github.com/javaee/tutorial-examples/LICENSE.txt
 7  */
 8 package javaeetutorial.hello1; //这是一个javaee教程的一个实例hello1包
 9
10
11 import javax.enterprise.context.RequestScoped;//导入注释类型RequestScoped包
12 import javax.inject.Named;//导入依赖注入Named包
13
14 @Named
15 @RequestScoped
16 public class Hello {
17
18     private String name; //私有变量name
19
20     public Hello() {
21     }
22
23     public String getName() {
24         return name;
25     }//获取变量name的值
26
27     public void setName(String user_name) {
28         this.name = user_name; //给name赋值
29     }
30 }

tutorial-examples-master\web\jsf\hello1\src\main\webapp\WEB-INF目录下的

web.xml

 1 <?xml version="1.0" encoding="UTF-8"?> <!--xml的版本信息和编码方式-->
 2 <web-app version="3.1" <!--webapp的版本信息-->
 3          xmlns="http://xmlns.jcp.org/xml/ns/javaee" <!--使用符合XML规范的XHTML文档-->
 4          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <!--使用xsi作为前缀的Namespace-->
 5          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> <!--定义了XML Namespace和对应的XSD(Xml Schema Definition)文档的位置的关系。-->
 6     <context-param> <!--上下文参数-->
 7         <param-name>javax.faces.PROJECT_STAGE</param-name><!--参数名-->
 8         <param-value>Development</param-value><!--参数值-->
 9     </context-param>
10     <servlet>
11         <servlet-name>Faces Servlet</servlet-name> <!--servlet名-->
12         <servlet-class>javax.faces.webapp.FacesServlet</servlet-class><!--servlet所从属的类-->
13         <load-on-startup>1</load-on-startup> <!--加载的第一步-->
14     </servlet>
15     <servlet-mapping> <!--servl映射-->
16         <servlet-name>Faces Servlet</servlet-name><!--映射名-->
17         <url-pattern>*.xhtml</url-pattern><!--映射路径-->
18     </servlet-mapping>
19     <session-config><!--会话配置信息-->
20         <session-timeout><!--会话刷新时间30ms-->
21             30
22         </session-timeout>
23     </session-config>
24     <welcome-file-list><!--首页文件列表-->
25         <welcome-file>index.xhtml</welcome-file><!--首页展示的文件名-->
26     </welcome-file-list>
27 </web-app>

web.xml文件注释只是个人学习所用,直接保存后,当项目运行时会报错的,需要去掉注释即可正确运行项目。

原文地址:https://www.cnblogs.com/TomFord/p/10564628.html

时间: 2024-10-16 19:23:12

A Web Module That Uses JavaServer Faces Technology: The hello1 Example的相关文章

JavaServer Faces 2.2 requires Dynamic Web Module 2.5 or newer

Description Resource Path Location Type JavaServer Faces 2.2 can not be installed : One or more constraints have not been satisfied. wxplatform line 1 Maven Java EE Configuration Problem Description Resource Path Location Type JavaServer Faces 2.2 re

解决JavaServer Faces 2.2 requires Dynamic Web Module 2.5 or newer问题

** 错误1: **在eclipse中新创建一个web项目的时候项目下的JSP文件中会爆出错误:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path.这个错误就是因为项目中还没有引入servlet的jar包.将jar引入进来就可以解决这个错误了,如果是maven项目则直接引入相关jar即可 <dependency> <groupId>javax&l

JavaServer Faces 2.0 can not be installed解决方案

问题描述:maven项目出现如下错误 JavaServer Faces 2.0 requires Dynamic Web Module 2.5 or newer..Maven Java EE Configuration     ProblemJavaServer Faces 2.0 can not be installed : One or more constraints have not been satisfied..line 1 Maven Java EE Configuration P

eclipse中,项目有红叉之-Cannot change version of project facet Dynamic Web Module to 3.1

1.打开Problems查看错误原因Window->Show View->Other->General->Problems 2.查看问题 3.发现是Cannot change version of project facet Dynamic Web Module to 3.1 4.根据2里截图的Resource,得到是哪个项目,项目右击->Properties->Project Faces->Dynamic Web Module,更据相应Dynamic Web M

[转]解决Cannot change version of project facet Dynamic web module to 2.5

我们用Eclipse创建Maven结构的web项目的时候选择了Artifact Id为maven-artchetype-webapp,由于这个catalog比较老,用的servlet还是2.3的,而一般现在至少都是2.5,在Project Facets里面修改Dynamic web module为2.5的时候就会出现Cannot change version of project facet Dynamic web module to 2.5,如图: 其实在右边可以看到改到2.5需要的条件以及有

eclipse如何修改dynamic web module version

在spring tool suite中开发maven项目的时候,通过新建maven-archetype-webapp方式来建立web项目,发现在更改项目的 Dynamic Web Module时出现 Cannot change version of project facet Dynamic Web Module to 3.0的问题,先将此问题的解决过程进行记录 1 问题由来 右键eclipse的工程,选择属性,再选择Project Facets里面中选择Dynamic Web Module ,

How to fix Cannot change version of project facet Dynamic Web Module to 3.0 Error in Eclipse---转载

How to fix Cannot change version of project facet Dynamic Web Module to 3.0 Error in Eclipse 原文:http://crunchify.com/how-to-fix-cannot-change-version-of-project-facet-dynamic-web-module-to-3-0-error-in-eclipse/ Today while converting Dynamic Web Proj

The server does not support version 3.0 of the J2EE Web module specification

1.问题: Eclipse + Tomcat6,run到Tomcat6时报这个版本支持问题. 2.原因: Tomcate6最多支持Servlet 2.5的,但是现在的项目是3.0, 所以要降低项目的版本 3.解决 在项目的根目录下有个.settings 文件夹,找org.eclipse.wst.common.project.facet.core.xml文件. 把  <installed facet="jst.web" version="3.0"/> 改成

Eclipse--Maven--Dynamic Web Module 3.0 requires Java 1.6 错误

用Eclipse创建Maven webapp项目时报错Dynamic Web Module 3.0 requires Java 1.6 错误 其实这个问题就是两者不匹配的问题Dynamic Web Module 和JDK 版本不匹配,具体问题看problems 两种方法解决, (1)上面Java 是1.4的,按向下三角形换用低版本的Dynamic Web Module,我试了一下,换成2.4以下就可以啦 (2)也可以根据Dynamic Web Module3.0为匹配对象,更换Java为1.6及