`
icess
  • 浏览: 253348 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
使用JSF的人都知道,JSF本身是一个很优秀的Web Model 2框架, 具有很多优秀的思想.

但是有些时候JSF的使用还是不是十分方便. 尤其是对于初学者而言, 常常被一些莫明其妙的问题搞得晕头转向.
相信很多初学者都见到过这个Exception吧:

严重: Servlet.service() for servlet jsp threw exception
javax.servlet.jsp.JspException: Cannot find FacesContext

当我在学习JSF的时候,看到这个Exception我找了半天都没有发现我的代码哪里错了(代码不可能出错,因为是直接copy的书中的源代码 呵呵), 后来不经意间才发现原来访问页面的URL错了, 在JSF配置文件中配置的servlet映射为.jsf,所以访问的URL应该是 .... index.jsf, 而不是.... index.jsp., 就这么一点疏忽就让人白忙活了半天. 郁闷哦.

随着学习的深入,这种基本错误是很少再出现了(就算出现也可以马上知道问题的根本), 但是JSF其他的一些限制又是让人感到很郁闷的. 比如 Form数据的提交, JSF规范中为了维护服务端的组件树 只能使用Post提交, 而不可以使用Get. 而Get方法在很多地方还是非常有用的.

另外还有Faces API使用起来不是十分直接的问题, 要把一个数据放入到session中就要一大串的操作( FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(name, val); ),让人感觉很不爽.

....

如果你经常遇到这些问题, 那么现在我将告诉你一个好消息, 有了Frails 这些问题都可以轻而易举的解决了.

我们先来看看Frails是什么?

在Frails主页上定义 http://frails.hexiao.cn/what-is-frails.html

what is frails?

Frails 是基于JSF上的一个开发效率和RoR可以向媲美的JavaEE框架 !

Ruby On Rails(RoR)因为在开发web程序的高效性而风行一时(可能现在仍然很热), 那些RoR的支持者说, RoR可以比java的开发效率高出10倍以上,我们对此观点持怀疑的态度. 我们相信,如果有正确的开发方法来支持现在的Java web framework,则 Java web开发的效率 不会如此的低下.所以 我们研究了一下RoR的实现机制,来实现我们Java框架中的RoR. 因此, 我们提供一个在开发效率上和RoR可以媲美的JavaEE开发框架 -- Frails !

知道了Frails是什么后, 我们再来看看Frails有什么特性, 能给JSF带来什么功能上的增强.


在Frails主页上列举了Frails的如下主要特性: http://frails.hexiao.cn/frails-features.html

Frails(Java Server Faces On Rails)基于Java Server Faces (JSF),并将提供对 Hibernate和Spring的支持. 主要特征如下:

Frails 让开发者使用约定(习惯)和注解(annotations)来省略在 faces-config.xml 文件中 managed-bean 和 navigation-rule的配置.
Frails 提供一个更简单的方法来使用 Faces API.
Frails 重定向非 faces 请求为一个 faces 请求,这样可以避免因为URL输入的疏忽导致的异常.
Frails 提供一些预定义的 Managed Bean 基类让开发者扩展 .
Frails 可以让开发者在 Managed Bean 中使用注解(Annotation)来支持AOP功能 ,如 函数拦截(method interception).
Frails 提供 Managed Bean 属性的injection 和 outjection
Frails 中的Hibernate GenericDao 对象提供了基本的 CRUD 函数 和 其他一些有用(常用)的数据访问函数.
Frails 还提供了一些有用的注解(annotations)来简化JSF的开发.
Frails 完全支持 jsf 1.1 和 jsf 1.2 规范,并且可以自动的探测你使用的版本.
Frails 提供了对action Method 和 Listener 函数的增强,在这些函数中现在你可以传递参数了.


知道这这么多Frails的东东, 那么你不禁要问,如何使用Frails呢.

这个是很简单的.   你只需要在web.xml文件中添加下面的配置:

<filter>
<filter-name>FacesFilter</filter-name>
<filter-class>net.sf.frails.filters.FacesFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>FacesFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


然后把你下载的frails4jsf1.X.jar 放到类路径中就可以使用了.

现在可以使用了, 你不禁要问, 如果在使用过程中我遇到了问题, 要到哪里得到帮助呢,如果我有好的Frails改进建议要到哪里提议呢.
关于frails的服务问题, 你可以到JavaCafe http://www.hexiao.cn/jsf/ 论坛的Frails专区中取得帮助.

ok, 这次Frails 简介就先到这里, 希望Frails能在你开发Java web app时给你带来一丝清爽.


资源:

Frails英文主页 http://frails.sf.net
Frails中文主页 http://frails.hexiao.cn
Frails中文论坛 http://www.hexiao.cn/jsf
分享到:
评论
19 楼 ahuaxuan 2007-03-30  
chenxu 写道

  只不过get方法被设计为“适合于”从服务器得到数据,但并不是不能向服务器
  提交数据。get方法是将向服务器提交的数据直接放在url请求后的,比如一些
  简短的用户名、密码数据什么的。同时,其向服务器提交的数据量是有限的。好像是
  1M.

所谓的‘重定向’意思
就是将来到这个页面以前向服务器提交的那些‘大量’数据重新向服务器提交一次。
 

1好像不是大小的问题,我记得是长度的问题,使用get提交数据时url的长度是有限制的,大概是几百个字符串。

2重定向的工作原理是:通过在http头吧一个302的http返回码和新的位置一并发送给浏览器,然后浏览器将自动发出一个指向这个新位置的http请求,也就是说使用重定向其实是包含了浏览器的两次请求。使用重定向会引起少许的性能损失,不过这个影响是非常微小的
18 楼 liangguanhui 2007-03-30  
懂HTTP协议的应该对get和post的认识比较深刻。

我们知道,http协议中,请求的格式是

GET(或者post) 路径 版本CLCR
http头的key:http头的valueCLCR
CLCR
内容体

实际上,如果是get的话,参数是放在路径那里,用&符号分割,如果是post的话,数据是放在内容体那里,也是用&符号分割。

两者之前的差别,是get的参数是有一点限制的,而post的则没有。
17 楼 icess 2006-11-29  
这下没有人疑惑了吧.
16 楼 chenxu 2006-11-24  
我来说一下吧,  实际上是这样的:

  post 和get 都是用于向服务器发起请求,然后服务器向客户端返回结果。

  只不过get方法被设计为“适合于”从服务器得到数据,但并不是不能向服务器
  提交数据。get方法是将向服务器提交的数据直接放在url请求后的,比如一些
  简短的用户名、密码数据什么的。同时,其向服务器提交的数据量是有限的。好像是
  1M.

  post方法被设计为适合于向服务器提交数据,所以其向服务器提交的数据量理论上是没有
  限制的。但是并不是说其就不能从服务器得到数据。实际上post一个请求后一般是
  调用服务器一个方法然后执行页面重定向。这个“页面重定向”的页面html实际上就是
  post方法从服务器获得的数据。


      所以 不要被那种说法 所迷惑了,这两种方法都是能提交数据并获取数据的。
   post方法用于需要向服务器提交大量的数据,需要安全性的数据;
   get方法用户去服务器取一些数据,比如获取一个页面,但是同时也灵活的允许你‘取’
   的时候提交一些简单的数据,比如菜单的固定配置参数什么的。

      另外,通过post方法返回的页面 被刷新时是需要 ‘重定向’的,所谓的‘重定向’意思
    就是将来到这个页面以前向服务器提交的那些‘大量’数据重新向服务器提交一次。
      而get方法得到的页面再刷新时就不需要这个动作了,因为其本身就时向服务器获取数据,
     即便其也向服务器提交了一些数据。因为是加在url请求后的,自动也就发给服务器了。
 

 
15 楼 jianfeng008cn 2006-11-23  
liangguanhui 写道
icess 写道
dongbin 写道
icess 写道
alang 写道
>比如 Form数据的提交, JSF规范中为了维护服务端的组件树 只能使用Post提交, 而不可以使用Get. 而Get方法在很多地方还是非常有用的.

post的严格使用,会让你的应用更安全。


post是比较好, 但是有时候Get还是有用的, 尤其在网络通信比较紧张的情况下.



Get 还是 POST和网络通信紧不紧张没有任何关系。
1. get是从服务器上获取数据,post是向服务器传送数据。

    2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
 3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。

 4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。

 5. get安全性非常低,post安全性较高。

对于只有一两个参数的提交, 在传输相同参数的情况下, 是get 还是post传输的总数据量更少呢


“1. get是从服务器上获取数据,post是向服务器传送数据。”这句话我真是不理解,get跟post都是发送然后获取,怎么会是一个获取,一个发送?

“3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。”这位仁兄是不是在说asp?


“5. get安全性非常低,post安全性较高。”所谓的安全性高只不过是用户在地址栏看不到而已。


同惑!!!
14 楼 liangguanhui 2006-11-22  
icess 写道
dongbin 写道
icess 写道
alang 写道
>比如 Form数据的提交, JSF规范中为了维护服务端的组件树 只能使用Post提交, 而不可以使用Get. 而Get方法在很多地方还是非常有用的.

post的严格使用,会让你的应用更安全。


post是比较好, 但是有时候Get还是有用的, 尤其在网络通信比较紧张的情况下.



Get 还是 POST和网络通信紧不紧张没有任何关系。
1. get是从服务器上获取数据,post是向服务器传送数据。

    2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
 3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。

 4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。

 5. get安全性非常低,post安全性较高。

对于只有一两个参数的提交, 在传输相同参数的情况下, 是get 还是post传输的总数据量更少呢


“1. get是从服务器上获取数据,post是向服务器传送数据。”这句话我真是不理解,get跟post都是发送然后获取,怎么会是一个获取,一个发送?

“3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。”这位仁兄是不是在说asp?


“5. get安全性非常低,post安全性较高。”所谓的安全性高只不过是用户在地址栏看不到而已。
13 楼 eltonto 2006-11-22  
FRAILS 有项目出来了吗
12 楼 bayers 2006-11-22  
icess 写道
alang 写道
>比如 Form数据的提交, JSF规范中为了维护服务端的组件树 只能使用Post提交, 而不可以使用Get. 而Get方法在很多地方还是非常有用的.

post的严格使用,会让你的应用更安全。


post是比较好, 但是有时候Get还是有用的, 尤其在网络通信比较紧张的情况下.


有没有量化测试过呐?
11 楼 SteveGY 2006-11-21  
哎~~,JSF,是一个……,怎么说好呢,这东西是应对asp.net的,但又缺少asp.net很有优势的user defined web control支持,写一个jsf的web控件,难度不比写一个jsp tag小。web控件或者叫界面控件的可重用性,还是asp.net做的最好,jsf在这里根本没有优势,所谓的“拖放式”的界面开发,对严肃的web项目开发,有可能是一场噩梦。举一个例子,有一系列的页面都有固定的header和footer,你如何使用jsf,又不用在每一个jspf的页面上重复header和footer? <include>?呵呵,有用过jsf include的人就有体会了,那叫一个难受啊。
10 楼 yy77 2006-11-21  
get的话,可以实现一些pretty url的。但是用post就不行了。
比方说,想要生成http://bloghost/myblog/2006/11/21/这样的机能,用jsf就会比较麻烦。
9 楼 icess 2006-11-21  
yuesefa 写道
icess是华工软院的么,
我和佳良一个年级的,2班的 呵呵, 终于见到frails了 呵呵 好久没去看了


呵呵, 在javaeye还可以见到同学, 高兴. 我们是一班的. 1.2刚刚发布, 添加了一点特性.
你现在在学校吗?
8 楼 yuesefa 2006-11-21  
icess是华工软院的么,
我和佳良一个年级的,2班的 呵呵, 终于见到frails了 呵呵 好久没去看了
7 楼 icess 2006-11-20  
dongbin 写道
icess 写道
alang 写道
>比如 Form数据的提交, JSF规范中为了维护服务端的组件树 只能使用Post提交, 而不可以使用Get. 而Get方法在很多地方还是非常有用的.

post的严格使用,会让你的应用更安全。


post是比较好, 但是有时候Get还是有用的, 尤其在网络通信比较紧张的情况下.



Get 还是 POST和网络通信紧不紧张没有任何关系。
1. get是从服务器上获取数据,post是向服务器传送数据。

    2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
 3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。

 4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。

 5. get安全性非常低,post安全性较高。

对于只有一两个参数的提交, 在传输相同参数的情况下, 是get 还是post传输的总数据量更少呢
6 楼 dongbin 2006-11-20  
icess 写道
alang 写道
>比如 Form数据的提交, JSF规范中为了维护服务端的组件树 只能使用Post提交, 而不可以使用Get. 而Get方法在很多地方还是非常有用的.

post的严格使用,会让你的应用更安全。


post是比较好, 但是有时候Get还是有用的, 尤其在网络通信比较紧张的情况下.



Get 还是 POST和网络通信紧不紧张没有任何关系。
5 楼 番茄有益 2006-11-20  
由于Java Studio Creator 拖拽的页面采用的是CSS定位,和以前做页面的感觉确实不同,整个应用风格也由其提供的theme包来提供,打开JSP源码面对的都是tag,美化起来多少有些问题,

我觉得其优点在于其数据访问是非常简单,利用JDBC CachedRowSet,像多记录同时修改这样的问题,实现起来异常简单。
4 楼 icess 2006-11-20  
Java Studio Creator 2是不错, sun计划把它打造为于微软的Visual Studio向媲美的工具. 用来开发jSF还是比较方便的. 不过它拖出来的页面. 好像不是很好美化. 没有怎么用过它来开发页面
3 楼 番茄有益 2006-11-19  
对SUN 的 Java Studio Creator 2 了解如何,SUN 的这个工具应用JSF实现WEB应用的类似VB的拖拽式开发,个人感觉这个工具还是不错的,组件式开发,配合转换器,验证器,页面导航器,dataProvider等,在Netbeans5.5中,其作为visual web 组件提供,还是看出来SUN 对此产品的信心。
SUN 的网站上也有一些简单的教程,作的还不错,

http://gceclub.sun.com.cn/prodtech/javatools/jscreator/index.html

不知道那位同学用过,有什么经验可以交流。
2 楼 icess 2006-11-18  
alang 写道
>比如 Form数据的提交, JSF规范中为了维护服务端的组件树 只能使用Post提交, 而不可以使用Get. 而Get方法在很多地方还是非常有用的.

post的严格使用,会让你的应用更安全。


post是比较好, 但是有时候Get还是有用的, 尤其在网络通信比较紧张的情况下.
1 楼 alang 2006-11-17  
>比如 Form数据的提交, JSF规范中为了维护服务端的组件树 只能使用Post提交, 而不可以使用Get. 而Get方法在很多地方还是非常有用的.

post的严格使用,会让你的应用更安全。

相关推荐

    JSF-Frails入门

    JSF-Frails入门学习资料

    Frails-开源

    **Frails 框架详解** `Frails`,全称 `Faces On Rails`,是一个专为 Java Web 开发者设计的开源框架。这个框架的核心目标是通过引入注解驱动的开发模式,来极大地简化使用 JavaServer Faces (JSF) 构建应用程序的...

    (175797816)华南理工大学信号与系统Signal and Systems期末考试试卷及答案

    内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

    深圳建设施工项目安全生产奖惩管理制度.docx

    深圳建设施工项目安全生产奖惩管理制度

    离散数学课后题答案+sdut往年试卷+复习提纲资料

    离散数学课后题答案+sdut往年试卷+复习提纲资料

    自考04741计算机网络原理真题及答案及课件

    04741计算机网络原理 2018(尚德).pdf 13年试题(2套).pdf 2015年10月自考计算机网络原理04741试题及答案解析.docx 2021年4月自考04741计算机网络原理真题及答案.docx 2021年4月自考04741计算机网络原理试卷.bak.docx 计算机网络原理 课后题答案 全 李全龙版 自考04741.zip.zip 计算机网络原理课件 计算机网络原理课件.rar

    C++实现rpc,全程手写

    C++实现rpc,全程手写

    前端拿到的列表数据里id都一样的处理办法.txt

    前端拿到的列表数据里id都一样的处理办法.txt

    最新仿720云全景制作源码-krpano仿720云全景网站源码 新增微信支付+打赏+场景红包

    最新仿720云全景制作源码|krpano仿720云全景网站源码(新增微信支付+打赏+场景红包等)是一款基于php+mysql开发制作的全景在线制作网站源码,包含全景图片,全景视频等。数据存储全部存于OSS云端或本地,源码完全开源可自行二次开发。 环境要求:PHP5.5.X+MYSQL5.6.X+伪静态 熟悉linux系统推荐使用LAMP,web服务器最好使用apache,不要使用nginx(发布大全景图需要时间可能需要20多分钟, nginx超时机制不好控制)。 Windows系统推荐使用phpstudy。Liunx推荐宝塔控制面板apache 前端为HTML5开发,自适应手机版! 1、支持VR虚拟现实、全景视频、环物全景、说一说、点赞评论、重力感应、智能视频嵌入、场景切换热点、加载进度条、 地图导航、光晕flash特效、物体全景嵌入、场景自播、场景解说、雷达导航等业内前沿功能。 2、支持windows、Linux、Mac、安卓、IOS等几乎所有的系统观看。支持CDN图片转存,极大的减轻的服务器流量费用。 3、支持用户权限分配。方便会员制收费。

    YOLO算法-可乐罐子数据集-336张图像带标签-可乐.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    环境监测系统源代码全套技术资料.zip

    环境监测系统源代码全套技术资料.zip

    【编码解码】基于matlab罗利衰落信道编解码器设计【含Matlab源码 9930期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    四轮转向系统横摆角速度控制simulink仿真模型,利用滑模控制算法,基于八自由度车辆模型,控制有比较好的效果,附参考说明

    四轮转向系统横摆角速度控制simulink仿真模型,利用滑模控制算法,基于八自由度车辆模型,控制有比较好的效果,附参考说明。

    YOLO算法-工作场所安全隐患数据集-859张图像带标签-倒下的工人-配备个人防护装备的工人-无个人防护装备的工人-火.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    自学考试02331数据结构试题及答案2021-2022

    02142数据结构导论历年真题及答案(2012-2018共13套).rar 02331数据结构历年真题共267页2009.10-2019.4.rar 24数据结构201704_8.pdf 25数据结构201710_10.pdf 26数据结构201804_11.pdf 27数据结构201810_9.pdf 全国2021年04月高等教育自学考试02331数据结构试题及答案.docx 全国2022年04月高等教育自学考试02331数据结构试题及答案.docx 数据结构-课件.rar 第l六讲.ppt 第一讲.ppt 第七讲.ppt 第三讲.ppt 第九讲.ppt 第二讲.ppt 第五讲.ppt 第八讲.ppt 第四讲.ppt

    验收确认单表格.docx

    验收确认单表格.docx

    内存搜索工具(易).rar

    内存搜索工具(易).rar

    饮食管理系统项目源代码全套技术资料.zip

    饮食管理系统项目源代码全套技术资料.zip

    计算机视觉项目:Swin-Transformer 【tiny、small、base】模型实现的图像识别项目:番茄病害图像分类

    【项目简介】 代码主干网络采用Swin-Transformer 家族系列,包括【tiny、small、base】三种模型。pretrained和freeze_layers参数为是否采用官方预训练模型和是否仅训练分类头。为了做对比消融试验,优化器采用了Adam和SGD、AdamW三种。损失函数采用多类别的交叉熵、学习率优化策略采用cos余弦退火算法 【评估网络】 评估的指标采用loss和准确率(accuracy),分别会在训练集和验证集上进行评估、输出、绘制曲线图像。同时会在训练集、验证集进行一系列评估,包含混淆矩阵、recall、precision、F1 score等等曲线图像,以及recall、precision、F1 score、特异度的输出信息等等。 【具体各类别的指标在json文件中查看】 【如果想要更换数据集训练,参考readme文件】 【本项目为8种番茄病害图片(约4k张数据),包含数据集和标签,可以一键运行】

    (177121232)windows电脑下载OpenHarmony鸿蒙命令行工具hdc-std

    windows电脑下载OpenHarmony鸿蒙命令行工具hdc_std。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

Global site tag (gtag.js) - Google Analytics