NetBeans中JSF应用开发(1)

JSF Web应用开发实战:从零开始 本文详细介绍了一个基于JavaServer Faces (JSF)的Web应用开发过程。从创建默认的index.xhtml页面开始,逐步介绍了如何编辑页面元素、定义后端逻辑、以及如何通过NetBeans IDE进行代码自动完成和调试。文中还涉及了JSF应用的模型-视图-控制器(MVC)架构,以及如何使用JSF的常用组件来构建用户界面。 阅读详情
 
这是JSF技术系列讲座的第1个,整个讲座包括两大部分,第1部分是在NetBeans中的开发过程,第二部分是JSF相关技术的全面介绍。
JavaServer Faces是Web应用中构建用户接口组件的标注Java API。可以把JSF框架想象成充满随时可以使用的组件的工具箱,这些组件可以在Web应用中快速和方便的重用。这些组件可能是简单的,例如存取用户数据的输入框,可能非常复杂,例如使用弹出式日历来格式化日期的输入框。可以把这些组件嵌入到JSP页面,然后使用框架来处理不同页面之间的导航。
目标:创建一个JSF应用。
使用JSF框架创建一个Web应用
在NetBeans中,可以在创建应用的时候为Web应用添加JSF支持,也可以为已有的应用添加JSF支持。Sun应用服务器已经包含了JSF库,所以不需要下载和安装。我们在创建应用的时候添加JSF支持。
  1. 选择 File > New Project (Ctrl-Shift-N), 从Web目录中的 Web Application,点击Next.
  2. 指定工程的名字为jAstrologer, 并为工厂指定位置,选择Sun应用服务器作为服务器,设置Java EE的版本为Java EE 5,然后点击Next.
  3. 选中JavaServer Faces 复选框,然后点击Finish.
NetBeans完成Web应用的创建。展开工程的Libraries 中的 Sun Java System Application Server节点.可以看到JSF库,例如jsf-impl.jar已经添加到classpath中了。展开Configuration Files可以看到IDE已经创建了faces-config.xml文件,该文件控制Web应用中JSF组件的行为。IDE还在web.xml部署描述符中注册了FacesServlet。FacesServlet处理JSF框架所控制的JSP页面之间的导航。
创建JSP页面
我们将创建一个新的JSP页面greeting.jsp,该页面作为欢迎界面并且用于收集他们的信息,然后创建一个success.jsp,为用户显示祝贺信息。
创建欢迎页面
  1. 右键点击工程节点,选择 New 选择 JSP,命名为greeting, 点击Finish. 确保选中JSP File (Standard Syntax) 。
  2. 现在需要在JSF文件中声明JSF标签库,修改下面的代码;
<%--
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
--%>
改成:
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
注意可以使用代码生成器帮助添加标签名字和属性。代码生成器同样可以帮助你添加标签库的URI。
  1. 把title和h1标签改成Welcome to jAstrologer.
  2. 向文件中添加一个JSF表单。在Palette中,点击JSF Form按钮,然后拖拽到h1标签的下面。在对话框中,选择Empty Form,然后点击OK。IDE会生成如下代码(粗体部分)。
<h1>Welcome to jAstrologer</h1>
 
    <f:view>
        <h:form>
        </h:form>
    </f:view>
 
</body>
  1. 我们准备使用inputText组件获取用户输入,实用commandButton组件提交表单。在源文件编辑区,把h:form元素的内容修改成:
    <f:view>
        <h:form>
            <p>Enter your name: <h:inputText value="name" /></p>
            <p>Enter your birthday: <h:inputText value="birthday" /></p>
            <h:commandButton value="Submit" action="submit" />
        </h:form>
    </f:view>
创建成功的页面
现在要创建一个仅仅输出"Congratulations"的页面。
  1. 像上面一样创建一个新的JSP文件,命名为success。
  2. 把文件的内容修改成:
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Congratulations</title>
    </head>
    <body>
 
    <h1>Congratulations</h1>
 
    <p>You've successfully registered with jAstrologer.</p>
 
    </body>
</html>
注意:我们这里使用的是纯HTML,所以不需要声明JSF标签库。
设置页面导航
JSF框架中页面的导航是由faces-config.xml文件控制的,该文件位于工程窗口中的Configuration Files节点下。对于每个页面,你可以设置一个包含一个或多个导航情况的导航规则。现在,我们仅仅将commandButton的submit动作提交给success.jsp,因此不论用户在输入框中输入什么信息,都可以看到成功的消息。
  1. 双击faces-config.xml打开Source Editor。
  2. 右键单击文件的任何地方,选择Java ServerFaces,然后选择 Add Navigation Rule。然后在Rule from View 输入框中输入/greeting.jsp,然后输入规则的描述(可选的),然后点击Add。
在faces-config.xml中生成了下面的代码:
    <navigation-rule>
        <description>
            handle user input
        </description>
        <from-view-id>/greeting.jsp</from-view-id>
    </navigation-rule>
  1. 在faces-config.xml中右键单击,然后选择Java ServerFaces选择Add Navigation Case,设置如下:
n         From View: /greeting.jsp
n         From Outcome: submit
n         To View: /success.jsp
点击Add。在faces-config.xml中生成了下面的代码(粗体部分):
    <navigation-rule>
        <description>
            handle user input
        </description>
        <from-view-id>/greeting.jsp</from-view-id>
        <navigation-case>
            <from-outcome>submit</from-outcome>
            <to-view-id>/success.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
配置和运行程序
现在对IDE进行设置,当运行这个应用的时候,显示greeting.jsp,然后测试这个应用。
  1. 右键点击工程,然后先择Properties.
  2. 点击Run,然后在Relative URL输入框中输入/faces/greeting.jsp,然后点击OK。
  3. 右键点击工程,然后选择Run。IDE会build工程,启动应用服务器,部署应用,并在浏览器中显示下面的页面。
当您点击Submit按钮的时候,可以看到下面的输入结果:
关于JSF的基本概念可以参考书上第11章JSF概述,和第12章一个简单的JSF应用。
书:《Java EE 5实用教程》
 
 
Netbeans6.5开发jsf Jsf简单介绍,netbeans6.5开发javaserver face具体步骤 立即下载

相关推荐

利用NetBeans IDE构建JSF应用

在基于J2EE技术的三层架构软件开发过程中,大部分程序员比较习惯于所谓的SSH架构,即Struts+Spring+Hibernate。其中Struts框架负责“视图View—控制器Control—模型Model”的导航。而JSF的出现,给了程序员们一个取代Structs的机会。笔者也是初接触JSF,但很快被它的方便、简洁所吸引。笔者以一个实际的从数据库里查询的例子来演示一下JSF的使用。

NetBeans中JSF应用开发(4)

  目标:修改默认的错误消息每种类型的验证错误所显示的错误信息是由Message.properties文件控制的,该文件位于jsf-impl.jar中的javax.faces包中。可以通过如下方式查看,展开Libraries > Sun Java System Application Server > jsf-impl.jar > javax.faces,然后双击Messages.prop

李绪成的一亩三分地 2496

YOLOv8中间特征层可视化

在通过观察这些特征,可以清楚地看到模型如何逐步将输入图像转化为有意义的表示。

weixin_45314480的博客 6891

netbean创建jsf项目

开发JSF步骤:1、开发页面2、开发托管Bean3、配置托管Bean(可选) or 注解4、定义导航规则。

有勇气的牛排博客 253

EU 2021/646 eCall工程拆解:MSD、测试模式与型式核准

紧急呼叫系统(eCall)是车载通信中面向事故救援的安全功能,其原理是在碰撞或人工触发后,通过蜂窝网络向公共安全应答点发送最小数据集(MSD),并建立语音链路。技术价值在于缩短救援响应时间、提升事故后生存率,应用场景覆盖乘用车、轻型商用车及车载T-Box等前装通信模块。面向欧盟市场时,EU 2021/646把eCall从安装要求推进到型式核准测试,关注触发链路、备用电源、GNSS定位、MSD字段、音频质量与回拨能力。工程落地需要围绕测试模式、字段校验、配置管理和送检样件建立可交付合规方案。

weixin_31815843的博客 210

GAMIT基线解算实战:从RINEX数据准备到精度报告解读(附2024年tables更新攻略)

本文详细解析了2024年GAMIT基线解算全流程,从RINEX数据准备到精度报告解读,特别更新了tables配置攻略。涵盖工程目录设计、数据预处理、关键配置文件更新及基线解算策略优化,帮助用户掌握高精度GNSS数据处理技术,提升解算效率和结果可靠性。

weixin_42520374的博客 305

netbeans8.2简单使用JSF

#netbeans8.2简单使用JSF ##1.创建一个JAVAweb项目 服务器都是用默认的服务器。在框架选择处选择javaServer faces,首选页面语言为JSP。未说明的默认选项就好。 ##2.创建JSF配置文件 2.在javaweb项目下的源包创建一个java包mycontrol,并且创建JSF受管bean文件controler 3.编写受管bean内容 @ManagedBean(name ="controler") @SessionScoped public class control

build_zzz的博客 648

WebDriverAgent 菜鸟解析篇

WebDriverAgent 是一个用于模拟移动设备浏览器的 Python 库,可以用来在 PC 上模拟移动设备的浏览器操作,从而进行自动化测试。下面是一个菜鸟对 WebDriverAgent 源码的解析篇,希望能对初学者有所帮助。

DJ355的博客 1223

NetBeans中JSF应用开发(2)

 目标:在JSF应用中使用管理Bean在上一节中,我们使用JSF组件创建了一个简单的web应用。但是,我们的Web应用还不能做任何有意义的事情。为了丰富我们的JSF应用的功能,可以建立辅助Bean(Backing Bean)与UI组件的关联。辅助Bean又称为JSF管理Bean,是一个普通的JavaBean组件,但是他们的属性和方法可以供JSF组件访问。在我们的例子中,我们将创建一个U

李绪成的一亩三分地 3501

YOLOv11【第一章:零基础入门篇·第1节】YOLOv11核心架构深度解析与环境配置,一文搞定!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。 本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 5512

YOLOv11 改进 - 注意力机制 | 空间增强注意力SEAM(Spatially Enhanced Attention Module)提升遮挡场景检测鲁棒性

本文介绍了分离与增强注意力模块(SEAM)在YOLOv11中的结合应用。SEAM模块旨在增强面部特征学习能力,特别是处理面部遮挡问题。它采用多头注意力机制强调面部区域、抑制背景区域,第一部分使用深度可分离卷积减少参数并学习通道重要性,通过1x1卷积增强通道联系,利用两层全连接网络融合通道信息,经指数归一化后作为注意力权重与原始特征相乘。我们将SEAM集成到YOLOv11的检测头中,并进行相关注册和配置。实验表明,该方法有助于提升模型检测性能。

魔改工程师的博客 1667

Visual Web Pack 私人经验(待续)

  以下都是在netbeans5.5.1 + visual web pack5.5.1 + tomcat5.5.17开发程序时的私人经验(引用请注明出处,本人email是liangguanhui@163.com)。   为了说明上的方便,Visual Web Pack将会简称为vwp。   1、在安装了vwp之后,netbeans的帮助里就会包含vwp的帮助,如果你安装的时中文版,...

独占鳌头 205

第1章第11节:创建可容纳多行滚动文字的输入框TextEditor [SwiftUI快速入门到实战]

TextField可以让用户输入单行的文字内容,若想输入多行的文字内容,可以使用能够容纳多行滚动文字的 TextEditor。 定义一个字符串属性,用来存储用户输入的文字内容。接着定义一个布尔属性,用来标识是否弹出警告窗口,以显示用户输入的内容。 TextEditor是由UIKit中的UITextView演变而来,因此可以在init方法中,通过UITextView修改TextEditor的外观属性。 添加一个VStack视图,作为子视图的容器。 创建一个TextEditor,Te..

互动教程网[www.hdjc8.com] 832

NetBeans中JSF应用开发

这是JSF技术系列讲座的第1个,整个讲座包括两大部分,第1部分是在NetBeans中的开发过程,第二部分是JSF相关技术的全面介绍。JavaServer Faces是Web应用中构建用户接口组件的标注Java API。可以把JSF框架想象成充满随时可以使用的组件的工具箱,这些组件可以在Web应用中快速和方便的重用。这些组件可能是简单的,例如存取用户数据的输入框,可能非常复杂,例如使用弹出式日历

meteorWJ's Home—Floating clound 1596

用 DCL 编写 DEFINE ROLE:把 ABAP CDS 的访问控制做对、做实、做漂亮

摘要: 本文详细讲解如何在ABAP CDS中使用DCL(数据控制语言)实现行级授权,确保业务数据安全。核心要点包括: DCL原理:通过DEFINE ROLE将访问条件绑定到CDS实体,自动附加到查询条件(类似隐式WHERE),保障授权一致性。 关键语法: 必需注解@MappingRole: true声明映射角色。 ASPECT pfcg_auth关联PFCG权限对象,动态控制访问。 注解@AccessControl.authorizationCheck定义授权检查策略(如#CHECK启用强制控制)。 优先级

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

深度学习工具包 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")

NetBeans下JSF框架编码简介

本文是介绍在 NetBeans IDE 中使用 JavaServer Faces 框架编码 Web 应用程序系列文章中的第一篇。通过本系列教程的学习,我们将创建名为 jAstrologer 的 Web 应用程序,此程序可获取用户的姓名和生日,然后返回用户的十二宫图、诞生石和星座等信息。JavaServer Faces (JSF) 框架是标准的 Java API,用于在 Web 应用程序中构建用

.NET博文收藏 337

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

jsf netbeans_NetBeans Java EE技巧9:从数据库创建JSF应用程序

jsf netbeans 您需要非常快速地创建数据库前端吗? NetBeans IDE允许人们以很少的代码就为一组数据库表开发JSF应用程序前端。 现在,本教程是一个老歌,但是一个好东西……对于那些不了解它的人来说,值得再次提及。 首先,创建您的应用程序。 在这种情况下,我通过选择“ New Project”->“ Maven”->“ Web Application”来创建Ma...

最佳 Java 编程 236

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

NetBeans6.8下JSF可视化入门(未完)

吕海鹏 in 优快云 Blog 2735

NetBeans Java EE技巧9:从数据库创建JSF应用程序

您需要非常快速地创建数据库前端吗? NetBeans IDE允许人们以极少的编码就非常快速地为一组数据库表开发JSF应用程序前端。 现在,本教程既是老歌,又是老歌……对于那些不了解它的人来说,值得再次提及。 首先,创建您的应用程序。 在这种情况下,我通过选择“ New Project”->“ Maven”->“ Web Application”来创建Maven Web应用程序...

最佳 Java 编程 234
上一篇: Java持久性API(JPA)第7讲——实体生命周期及生命周期回调方法
下一篇: NetBeans中JSF应用开发(2)
老李-大连
博客等级 码龄20年 3206粉丝 308原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值