jsf入门实例
来源:互联网 发布:矩阵乘以矩阵的转置 编辑:程序博客网 时间:2024/06/01 13:59
百科上定义:引入了基于组件和事件驱动的开发模式,使开发人员可以使用类似于处理传统界面的方式来开发Web应用程序。提供了行为与表达的清晰分离。 不用特别的脚本语言或者标记语言来连接UI组件和Web层。JSF技术API被直接分层在Servlet API的顶端。 技术为管理组件状态提供一个丰富的体系机构、处理组件数据、确认用户输入和操作事件。
如果之前使用过Struts或者SpringMVC那么就应该很清楚JavaEE的前端框架都需要一个“入口”,要么这个入口是拦截器(Struts2)要么是Servlet(Struts,SpringMVC)。JSF也不例外,FacesServlet就是这个“入口”,jsf更像Struts。
1. 当JSF页面上的一个事件发生时(比如:用户单击了一个按钮),事件通知通过HTTP发往服务器。服务器端使用FacesServet这个特殊的Servlet处理该通知。
2. FacesServlet一接收到用户的请求就创建一个FacesContext对象(JSF上下文,它存放了应用程序的所有数据)。在处理过程中,主要修改的就是这个FaceContext对象。
3. 接着就是处理过程,处理器是一个叫作Lifecycle的对象。FacesServet把控制权转交给Lifecycle对象。该对象分阶段来处理FacesContext对象以生成响应,最后将响应发回客户端。
入门实例如下:
web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- 该参数配置使用指定JSF配置文件所在的位置 --> <context-param> <param-name>javax.faces.CONFIG_FILES</param-name> <param-value>/WEB-INF/faces-config.xml</param-value> </context-param> <!-- 该servlet用来配置JSF的前端控制器, --> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <!-- 该servlet-mapping用来配置对哪些请求需要交由上面所配置的servlet --> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.faces</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>
faces-config.xml
<?xml version='1.0' encoding='UTF-8'?><faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd" version="1.2"> <managed-bean> <managed-bean-name>UserNumberBean</managed-bean-name> <managed-bean-class> org.chen.controller.UserNumberBean </managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> <navigation-rule> <!-- from-view-id指定跳转的起点 --> <from-view-id>/greeting.jsp</from-view-id> <navigation-case> <from-outcome>result</from-outcome><!--字符串导航--> <to-view-id>/response.jsp</to-view-id> </navigation-case> </navigation-rule></faces-config>
UserNumberBea.java
package org.chen.controller;import java.util.Random;/** * @author chen * @version 1.0 * */public class UserNumberBean { private Integer randomInt = null; private Integer userNumber = null; private String response = null; private long maximum = 10; private long minimum = 0; public UserNumberBean() { Random randomGR = new Random(); randomInt = new Integer(randomGR.nextInt(10)); System.out.println("Duke's number: " + randomInt); } public String check() { if ((userNumber != null) && (userNumber.compareTo(randomInt) == 0)) { this.response = "恭喜你,你猜对了!"; } else { if(userNumber > randomInt){ this.response = "你猜大了,请猜小一些!"; }else{ this.response = "你猜小了,请猜大一些!"; } } return "result"; } public void setUserNumber(Integer user_number) { userNumber = user_number; } public Integer getUserNumber() { return userNumber; } public long getMaximum() { return (this.maximum); } public void setMaximum(long maximum) { this.maximum = maximum; } public long getMinimum() { return (this.minimum); } public void setMinimum(long minimum) { this.minimum = minimum; } public String getResponse() { return response; } public void setResponse(String response) { this.response = response; }}
greeting.jsp
<%@ page language="java" pageEncoding="GB18030"%><%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %><%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head></head> <!-- 该页面用来提示用户输入数字, --><body> <f:view> <!-- 该标签用来生成一个html中的表单 --> <h:form> <!-- 该标签用来生成一个html中的label,value属性用来指定该label的内容 --> <!-- jsf表达式以 --> 请输入一个从<h:outputLabel value="#{UserNumberBean.minimum}"/>到 <h:outputLabel value="#{UserNumberBean.maximum}"/>范围的数字<br/> <!-- 输入标签的value属性用来指定把用户输入的信息存放到那个位置上 --> <h:inputText id="userNmuber" value="#{UserNumberBean.userNumber}"> <f:validateLongRange minimum="#{UserNumberBean.minimum}" maximum="#{UserNumberBean.maximum}"></f:validateLongRange> </h:inputText><br/> <h:commandButton value="提交" action="#{UserNumberBean.check}"/> <h:message for="userNmuber"></h:message> </h:form> </f:view></body></html>
response.jsp
<%@ page language="java" pageEncoding="GB18030"%><%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %><%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head></head><body> <f:view> <h:outputLabel value="#{UserNumberBean.response}"/> </f:view></body></html>
阅读全文
0 0
- JSF入门实例
- JSF入门实例
- JSF入门实例
- JSF入门实例
- JSF简单入门实例
- JSF入门实例分析
- jsf入门实例
- JSF入门实例--简明版
- jsf:jsf入门案例
- JSF入门
- JSF入门
- JSF入门
- JSF 入门
- JSF入门
- JSF入门
- JSF入门
- JSF入门
- jsf入门
- 图例画法
- 关于 android 6.0 上的 nuplayer 播放时的图像卡顿
- 01背包问题
- ccpc湘潭邀请赛 h-highway(树的直径)
- tensorflow的一些代码分析(五) tensorflow模型保存和可视化
- jsf入门实例
- Unsupported Modules Detected: Compilation is not supported for following modules: 搞坏了
- mybatis源码之解析xml文件
- HttpServletRequest和HttpServletResponse
- HashSet集合和TreeSet集合
- IDEA将Maven项目中src源代码下的xml配置文件编译进classes
- eclipse Tomcat配置与启动
- Android学习八 Service服务
- util.js v1.0