从零到英雄:一步步构建你的首个 JSF 应用程序,揭开 JavaServer Faces 的神秘面纱

简介: 【8月更文挑战第31天】JavaServer Faces (JSF) 是一种强大的 Java EE 标准,用于构建企业级 Web 应用。它提供了丰富的组件库和声明式页面描述语言 Facelets,便于开发者快速开发功能完善且易于维护的 Web 应用。本文将指导你从零开始构建一个简单的 JSF 应用,包括环境搭建、依赖配置、Managed Bean 编写及 Facelets 页面设计。

JavaServer Faces (JSF) 是一个强大的 Java EE 标准,用于构建企业级 Web 应用程序。它提供了一套完整的组件库和一套声明式的页面描述语言 Facelets,使得开发者能够快速开发出功能丰富且易于维护的 Web 应用。本文将引导你从零开始构建一个简单的 JSF 应用程序,帮助你了解 JSF 的基本概念和工作原理。

首先,确保你的开发环境中已经安装了 Java SE Development Kit (JDK) 以及一个支持 Java EE 的应用服务器,比如 Apache Tomcat 或者 WildFly。接下来,使用 Eclipse 或 IntelliJ IDEA 创建一个新的 Dynamic Web Project 或 Java EE Web Application。

在 Eclipse 中,选择 "File" > "New" > "Dynamic Web Project"。在项目名称处输入 "MyFirstJSFApp",选择合适的服务器版本(至少需要支持 Java EE 6),然后点击 "Finish"。

创建完项目后,需要添加 JSF 依赖。如果使用 Maven,可以在 pom.xml 文件中添加如下依赖:

<dependencies>
    <dependency>
        <groupId>javax.faces</groupId>
        <artifactId>javax.faces-api</artifactId>
        <version>2.3.2</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.faces</artifactId>
        <version>2.3.2</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>javax.el</groupId>
        <artifactId>javax.el-api</artifactId>
        <version>3.0.1-b09</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>javax.el</artifactId>
        <version>3.0.1-b09</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.primefaces</groupId>
        <artifactId>primefaces</artifactId>
        <version>11.0</version>
    </dependency>
</dependencies>

如果你不使用 Maven,可以直接下载 JSF 和 EL 的 JAR 文件,并将它们添加到项目的 classpath 中。

接下来,在 WEB-INF 目录下创建 web.xml 文件,配置 JSF servlet。

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <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>*.jsf</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>

</web-app>

上述配置指定了一个名为 Faces Servlet 的 servlet,该 servlet 处理所有扩展名为 .jsf 的请求,并设置了默认欢迎页面为 index.xhtml

现在,创建一个简单的 HelloWorldBean Managed Bean。这个 bean 将会包含一些简单的属性和方法。

package com.example.bean;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean(name = "helloWorldBean")
@RequestScoped
public class HelloWorldBean {
   

    private String message;

    public String getMessage() {
   
        return message;
    }

    public void setMessage(String message) {
   
        this.message = message;
    }

    public String sayHello() {
   
        message = "Hello, World!";
        return "index";
    }
}

在上述代码中,@ManagedBean 注解表示这是一个 Managed Bean,@RequestScoped 注解指定了它的作用域为请求范围。sayHello 方法用于设置 message 属性的值,并返回一个页面导航结果。

接下来,创建一个 Facelets 页面 index.xhtml,展示来自 bean 的信息。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html">

<h:head>
    <title>JSF Hello World Example</title>
</h:head>
<h:body>
    <h:form>
        <h:commandButton value="Say Hello" action="#{helloWorldBean.sayHello}" />
        <h:outputText value="#{helloWorldBean.message}" />
    </h:form>
</h:body>
</html>

index.xhtml 页面中,<h:commandButton> 标签用于创建一个按钮,当用户点击该按钮时,会触发 sayHello 方法的执行。<h:outputText> 标签用于显示 bean 中的 message 属性值。

最后,部署并运行你的应用程序。启动应用服务器,并在浏览器中访问 http://localhost:8080/MyFirstJSFApp/index.jsf。你应该看到一个带有 "Say Hello" 按钮的页面。点击按钮后,页面会显示 "Hello, World!" 的信息。

通过上述步骤,你已经成功地创建了一个简单的 JSF 应用程序。这个示例不仅介绍了如何配置 JSF 环境,还包括了如何编写 Managed Bean 和 Facelets 页面。掌握了这些基础知识后,你可以继续探索 JSF 的更多高级功能,如事件处理、表单验证、国际化支持等,逐步提高你的开发技能。

相关文章
|
6月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1077 152
|
6月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
841 156
|
6月前
|
SQL 监控 关系型数据库
SQL优化技巧:让MySQL查询快人一步
本文深入解析了MySQL查询优化的核心技巧,涵盖索引设计、查询重写、分页优化、批量操作、数据类型优化及性能监控等方面,帮助开发者显著提升数据库性能,解决慢查询问题,适用于高并发与大数据场景。
|
6月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
6月前
|
SQL 监控 关系型数据库
查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量
以上步骤提供了直观、实用且易于理解且执行的指导方针来监管和优化数据库服务器配置。务必记得,在做任何重要变更前备份相关配置文件,并确保理解每个参数对系统性能可能产生影响后再做出调节。
614 11
|
6月前
|
SQL Web App开发 安全
SQL Server 2025 年 9 月更新 - 修复 CVE-2025-47997 SQL Server 信息泄露漏洞
SQL Server 2025 年 9 月更新 - 修复 CVE-2025-47997 SQL Server 信息泄露漏洞
328 0
SQL Server 2025 年 9 月更新 - 修复 CVE-2025-47997 SQL Server 信息泄露漏洞
|
6月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
453 158
|
6月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
6月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
454 156
|
6月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(上)
最终建议:当前系统是完美的读密集型负载模型,优化重点应放在减少行读取量和提高数据定位效率。通过索引优化、分区策略和内存缓存,预期可降低30%的CPU负载,同时保持100%的缓冲池命中率。建议每百万次查询后刷新统计信息以持续优化
539 161

推荐镜像

更多