jsf第一步 办公用品管理系统示例 学习笔记

简述一下JSP和JSF的区别 这是JSF(一个简单的登录页面) <%@ page contentType="text/html;charset=GBK"%> <!-- 设置网页的编码为GBK --> <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %><!-- 引入JSF核心标记库 --> 阅读详情

1.登陆页面的全局错误提示
<h:messages globalOnly="true"></h:messages>
error_password对应你输入的密码有错!

 //声明一个没有登录成功的消息
                FacesMessage msg=MessageFactory.getMessage
                             (facesContext,"error_password","");  //第二个是消息的内容,第三个是设置参数             
                //为了与原来例子保持一致,这里设置了消息的严重等级
                msg.setSeverity(FacesMessage.SEVERITY_WARN);
                //将消息保存在facesContext中,供其他过程使用
                facesContext.addMessage(null,msg);
                //返回loginAction方法的结果,
                //该结果是一个字符串,用于与导航规则比较,
                //导航到登录失败后的页面
                return "failure";

???第二种设置消息的方法:使用异常类
            //捕获UserNotExistException异常,其余参见上面else处的注释
            FacesMessage msg=MessageFactory.getMessage(facesContext,
                          ue.getMessage(),new Object[]{ue.getUsername()});
            msg.setSeverity(FacesMessage.SEVERITY_WARN);
            facesContext.addMessage(null,msg);
            //在日志中记录尝试登录的用户ID
            log.warn(userName + ": want log in!");           
            return "failure";
UserNotExistException..
private String username;
 public UserNotExistException(String newUsername) {
                //super("Username " + newUsername + " does not exist");
                /////////////////
                super("error_usernotexist");
                this.username = newUsername;
        }
 public String getUsername() {
                return this.username;
        }

error_usernotexist对应用户名:{0} 找不到!
  

2.
需求分析
分析人员用统一建模语言(UML)的用例(use Case)来描述
需求。
用例一般用用例图配合文档来表示。
用例文档的书写。
用例文档一般包含下列内容;
用例文档,页面说明文档和业务规则说明和其他
要求等文件,综合起来,最终形成所谓的规则说明书。

3.myfaces的上传组件

 <h:form id="form1" name="form1" enctype="multipart/form-data" >
<t:inputFileUpload id="fileupload"
                               accept="image/*"
                               value="#{newArticle.upFile}"
                               storage="file"
                               styleClass="fileUploadInput"
                               required="true"/>
newArticle的upFile方法
  FacesContext facesContext =
                  FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest)
                     facesContext.getExternalContext().getRequest();
        //取得应用程序的在服务器上的真实目录,进而得到文件上传的目标目录       
        String filePath=request.getSession().getServletContext()
                     .getRealPath("/")+"image//";
        //得到上传源文件的文件名      
        String srcFileName=uploadFile.getName();
        //找到源文件扩展名前的“.”号在文件名字符串中的位置
        int i=srcFileName.lastIndexOf(".");
        //得到源文件的扩展名
        String extName=srcFileName.substring(i);
   //计算上传目标文件的路径以及文件名和扩展名
   String targetFile=filePath+randomID+extName;
   //取得上传文件的字节
         byte[] bytes=uploadFile.getBytes();
         //调用业务服务的上传文件方法
         articleService.uploadFile(targetFile, bytes);

articleService的uploadFile方法。就是二进制流。
  ?限制文件的类型和上传的大小。

13.1:Java掌握JSF框架的核心概念和技术! (课程共8700字,2个代码举例) 本课程提供了一个丰富的Java编程知识库,包括基础知识、经典案例代码和实用技巧。通过学习本课程,我们可以建立扎实的Java基础,并掌握一些实用的编程技巧和最佳实践。然而,尽管本课程非常详细和全面,但仍然有许多细节和注意事项可能被忽略或者没有详细讨论。因此,我们应该保持学习的态度,不断探索和学习新的知识和技能。 阅读详情

相关推荐

13.6:基于JSF的企业开发JAVA实战经验! (课程共7600字,2个代码举例)

本课程是一门非常实用和有价值的课程,通过学习本课程,我们可以更好地理解和应用 JSF 框架,提高应用程序的开发效率和可维护性。在今后的工作中,我们将会更加注重细节问题的注意和处理,以确保应用程序的质量和稳定性。

小兔子平安 123

《威博文件管理系统》从JSF1.2升级到JSF2的过程

jsfrichfacesjavaeejavajbosstomcat 随着JavaEE6规范的推出,计划把《威博文件管理系统》迁移到JavaEE6的基础架构上,在做完《威博文件管理系统》3.1.1版后,决定首先进行,JSF1.2到JSF2的升级迁移,下面就是具体过程:   1、首先确保web.xml的版本如下:     Java代码      version="

echo space 1419

大学学生管理系统:JSF + 后台Bean的实战项目开发指南

JavaServer Faces (JSF) 是一种基于Java的服务器端用户界面组件框架,用于开发Java Web应用程序。它允许开发者快速创建具有丰富用户界面的Web应用程序。JSF抽象了GUI组件和服务器之间的通信,通过后端bean和托管bean来管理页面状态和请求处理。核心特点包括:组件驱动的UI:JSF提供了一组丰富的组件,这些组件可用于创建具有复杂数据输入、验证、导航和部署功能的用户界面。声明式事件处理。

weixin_42174098的博客 1145

web开发框架——JSF开发实战

JSF开发实战的第一篇(jsf开发实战一)演示了如何建立一个最简单的JSF应用,从那个例子中我们可以观察到JSF的页面组件是如何与后台的 javabean绑定的,也看到了JSF标签的最基本使用。在本文中我们会演示一个更加复杂的应用,它包含了更丰富的JSF标签。    要开发的例子是一个用户管理程序,管理员输入帐号与密码登陆,然后它可以看到所有用户的列表,并且可以修改或者删除其中的一些数据。利用my

2087

综合在线就业管理系统开发项目:JSF+Hibernate实践

Ajax(Asynchronous JavaScript and XML)是一种编程技术,它允许Web页面异步(不重新加载整个页面)请求服务器的数据。JSF通过其内置的Ajax支持简化了Ajax的使用,允许开发者在用户界面的特定部分进行快速更新。EasyUI是一个基于jQuery的前端UI框架,它提供了一系列可复用的界面组件,让开发者能够快速构建具有现代感的Web应用程序。与传统的前端库相比,EasyUI的一个显著优势是它的组件化,这使得开发者能够按照需要轻松地添加或移除界面元素。

weixin_35755823的博客 761

JSF+EJB企业级开发实战项目详解

JSF(JavaServer Faces)作为Java EE平台的标准Web框架,采用组件化和事件驱动模型,显著提升了企业级应用的可维护性与开发效率。其核心基于MVC设计模式:作为Model层管理数据与业务逻辑,Facelets页面(.xhtml)构成View层负责UI渲染,而控制器逻辑通过动作方法和事件监听器在后台处理用户交互,完成Control职责。上述LoginBean与Facelets页面通过EL表达式。

weixin_31961675的博客 919

jsf中的页面跳转

csdn编辑器支持直接复制图片,8错。在做管理系统时就觉着jsf中的webapp间的页面跳转就只有一个jsp页面做中转而实现么?这次在资源系统中又遇到了:admin-tool登录后跳转到首页catalog-tool,不想再用jsp做中转,想移植到back bean里,jsf中已经将HttpServletResponse和HttpServletRequest内置到了FacesContext中。所以ip地址比较好获得:FacesContext face = FacesContext.getCurrentIn

三分之一理想的专栏 4134

JSF开发必备完整Jar包集合(2011年最新版)

JavaServer Faces(JSF)是Java EE平台中用于构建Web用户界面的标准框架,自JSR-127提出以来,逐步演进为服务端UI组件模型的规范。它采用事件驱动编程模型,通过标签库和UI组件树实现可重用、声明式的页面开发。JSF支持MVC设计模式,将视图(View)、控制器(Controller)与业务逻辑(Model)清晰分离,并借助托管Bean完成数据绑定与交互处理。

weixin_42620563的博客 668

JSF开发实战

      JSF将是J2EE5.0中所包含的web开发框架,这应该是第一个成为jcp标准,并且随j2eesdk一起发布的web框架,可以看出sun对它的期望很高。JSF最大的竞争对手是tapestry,是apache的产品,但是apache又弄出了个myfaces,是对jsf标准的一个实现。也许你也和我一样,在jsf和tapestry之间犹豫很久,将来从apache的态度上应该可以看出二者的走向

技术就是个纸老虎---为之,则难者亦易矣;不为,则易者亦难矣。 3899

LCL滤波器参数设计实战:从理论约束到工程选型指南

本文提供了LCL滤波器参数设计的实战指南,从理论约束到工程选型逐步拆解。核心在于平衡总电感量、电感比与电容值,确保谐振频率落在安全区间,以满足并网电流谐波标准并维持系统稳定。文章以10kW并网逆变器为例,给出了具体的参数计算流程与选型步骤,并强调了寄生参数、阻尼设计等工程实现细节。

c6d7e8f9g的博客 921

从零开始:TexLive(Latex)安装与配置全指南

本文提供了一份详尽的TexLive(Latex)安装与配置全指南,旨在帮助用户从零开始快速搭建LaTeX工作环境。内容涵盖从镜像下载、安装步骤详解、环境验证到高效编辑器(如VS Code)配置,并特别强调了中文排版支持与宏包管理,确保用户能顺利处理学术论文等专业文档的排版需求。

weixin_29284885的博客 903

把《威博文件管理系统》从JSF1.2升级到JSF2的过程

随着JavaEE6规范的推出,计划把《威博文件管理系统》迁移到JavaEE6的基础架构上,在做完《威博文件管理系统》3.1.1版后,决定首先进行,JSF1.2到JSF2的升级迁移,下面就是具体过程: 1、首先确保web.xml的版本如下:  Java代码     version="2.5"      xmlns="http://java.sun.

pute2000的专栏 1579

迈创Cameralink采集卡与MIL软件集成开发实战指南

本文详细介绍了迈创Cameralink采集卡与MIL软件的集成开发实战指南,涵盖硬件安装、驱动配置、MIL软件深度设置及图像采集处理等关键步骤。特别适合工业视觉检测和医疗影像领域,通过优化配置和性能调优,实现高速稳定的图像处理。

weixin_29204205的博客 422

《struts2权威指南》学习笔记之struts2整合jsf

1.安装jsf插件   为了在struts2应用中使用JSF组件(实际上就是MyFaces组件,因为Myfaces是jsf的一个实现,必须将myfaces的lib路径下的jar文件都复制到web应用的WEB-INF/lib下)2.将struts2框架下的struts2-jsf-plugin-2.06.jar复制到WEB-INF/lib下3.修改web.xml文件,增加MYFaces的支

我的世界我的梦 3358

LightRAG实战:5分钟快速搭建一个轻量级法律问答系统(附完整代码)

本文通过实战指南,详细介绍了如何使用LightRAG技术快速搭建一个轻量级法律问答系统。该方案通过构建扁平化实体关系网络和混合检索策略,在5分钟内即可完成从环境准备到智能问答的完整流程,并附有完整代码,为中小团队和个人开发者提供了高效、低成本的AI应用解决方案。

time3的博客 277

把 NAST 变成你的遥控器:用 ABAP 程序精确触发与处理 Output Type

摘要 SAP中的Message Control机制通过NAST表记录输出状态,支持自动触发打印、邮件等操作。关键步骤包括: 构造NAST记录:定义输出类型、介质、处理状态等参数 调用处理函数:使用RV_MESSAGE_UPDATE_SINGLE更新表,通过WFMC_MESSAGES_PROCESS执行输出 典型应用场景: 单据补发(如PO邮件重发) 外部系统集成触发输出 故障恢复处理积压消息 注意事项: 需提交事务确保更新生效 区分S/4HANA新旧输出体系 正确处理派发时间(VSZTP)和状态(VSTAT

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 246

PrimeFaces BreadCrumb在JSF中的应用实例解析

在现代的Web应用开发中,面包屑导航(BreadCrumb)是一种非常实用的导航工具,它可以帮助用户清楚地了解自己在网站中的位置,并快速返回到上一级页面。PrimeFaces作为一款强大的JavaServer Faces(JSF)组件库,提供了简单易用的<p:breadCrumb>组件来实现面包屑导航功能。本文将通过一个具体的员工管理系统实例,详细解析如何在JSF项目中使用PrimeFaces的<p:breadCrumb>组件。

m0_74337424的博客 1134

科研级YOLOv8 Neck革新:BiFPN双向特征金字塔赋能,让多尺度融合更高效的实战指南

在文件夹下新建BiFPN.py,将上述BiFPNLayer和BiFPN类的代码写入其中。这一步是为了让YOLOv8的代码架构能识别我们的自定义Neck模块。

m0_64661770的博客 152

web开发框架——JSF开发实战二(图)

 JSF开发实战的第一篇(jsf开发实战一)演示了如何建立一个最简单的JSF应用,从那个例子中我们可以观察到JSF的页面组件是如何与后台的javabean绑定的,也看到了JSF标签的最基本使用。在本文中我们会演示一个更加复杂的应用,它包含了更丰富的JSF标签。    要开发的例子是一个用户管理程序,管理员输入帐号与密码登陆,然后它可以看到所有用户的列表,并且可以修改或者删除其中的一些数据。利用my

thinker28754的专栏 742

矩阵理论与应用:数理经济学中的投入产出模型分析

1. 背景介绍 矩阵理论是现代数学中的一个重要分支,它在各个领域都有广泛的应用。其中,投入-产出模型是矩阵理论在经济学中的一种应用,它可以用来分析一个国家或地区的经济结构和发展趋势。本文将介绍投入-产出模型的基本概念和原理,并通过实例来说明其应用。 2. 核心概念与联系 投入-产出模型是一

AI天才研究院 1486

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jsf+hibernate开发小项目杂谈(一)

 前言    关键字:框架 模式 DAO ORM CRUD    应监管部门要求,公司需要开发一个小型的MIS管理系统,要求能录入基本信息并维护浏览,并且基于录入的信息生成xml文档并打包成zip文件,供点击下载最后提交给监管部门。人手有限,数据库设计部分由同事完成,界面开发部分由本人完成。    对于这样一个迷你型项目,只有2个人参与,就无从谈起规范的软件开发流程(需求、分析、设计、编码、测

IT民工的小窝 1932

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

分页 jsf组件dataTable

http://java.sun.com/jsf/core" prefix="f" %>http://java.sun.com/jsf/html" prefix="h" %>http://java.sun.com/jsp/jstl/core" prefix="c" %>userlist                                                          

qlrhoo的专栏 1277

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Struts,Tapestry,JSF三种MVC架构比较

抽象一下表现层框架应有的技术架构,下图可以说所有表现层框架技术都必须实现的功能架构图:  在上图MVC模式基础上,一个表现层框架无外乎要实现图中的三个功能:1.在当前页面能够显示一个组件对象的内容;而不是象纯JSP那样,需要在Jsp页面写入“调用对象方法”的Java代码。2.当用户按下页面的提交按扭或链接后,事件发生,这时应该触发服务器端并将当前页面的参数提交给服务器。这种机制表现

3403
上一篇: JSF组件richfaces
下一篇: Hibernate 一对多连接表双向关联
facepp
博客等级 码龄22年 342粉丝 638原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值