`
hexiaodong
  • 浏览: 65202 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

我为什么不用struts

阅读更多

在我眼里,struts还有几个关键的缺点,所以我用了3-5个项目后就不用了。

主要的缺点有这么些:

1、输入输出变量范围定义不清晰。在一个action中,所有输入输出变量都是作为对象变量存在的,既无法区分某个变量是属于哪个方法的,也不能区分哪个变量是输入变量还是输出变量。有人说,我每个请求都用单独的action来处理不就行了。这个办法的确可以区分每个请求之间的输入输出,但是你会面临action数量急剧膨胀的问题。

     输入输出变量定义不清晰的带来的问题是代码可读性比较差。使用struts的时候,极端情况下,你得把jsp+action+js结合起来看才能确定某个请求有哪些输入输出。这对项目的维护者来说实在是件很痛苦的事情。

 

2、struts在处理ajax请求的时候太不方便了,虽然你可以配置一个插件让strus具备返回json result的功能。但是目前的插件距离我的实际需要还是有差距的。主要的问题在于,struts现有的json插件不能定义java对象序列化到json对象时的映射策略。就拿User对象来说吧,假如我目前设计的是订单界面,订单又引用了User对象作为订单的制单人属性。那么在序列化Order对象到前端的时候,我只需要序列化User对象的id,name就够了,user对象的其他属性可以统统不要。但我如果在维护用户的模块中,显示用户列表的时候,通常要显示用户对象的大部分属性。因此java对象到json对象的序列化策略应该是运行时动态设定的,不可能用annotation来申明。但struts以及struts插件并没有提供运行时根据请求为某个类选择不同映射策略的功能。

 

struts2,学习成本不可谓不高,功能不可谓不强大,但不符合我的需求。

 

学习strus2,假如不花个把月时间静下心来学习和实践,估计没人敢说自己精通strus2了。但mvc真的有必要那么复杂么?

 

mvc是什么?他应该能干什么?他的核心价值在哪?最小的mvc应该包含哪些功能?我们自己写一个mvc如何?自己写一个mvc框架需要超过一个月时间么?

分享到:
评论
58 楼 Agrael 2011-04-18  
<div class="quote_title">hexiaodong 写道</div>
<div class="quote_div">前几天为了整理下思路才写下了上面的文字,没想到引来这么多攻击。<br>这里有我的不是,我确实很久没用struts2了,不了解他很多插件的用法。但是这么多人号称精通或者熟练struts2,实际上用的好的人的确很少,这也是个事实。<br><br>有人让我把自己的框架写出来,再来评论struts2。这个框架我自然是有的,已经用个很多年了。框架的主要的特点是灵活和简单。<br><br>让我们来梳理下mvc的功能先:<br>mvc作为一个交互层框架,核心功能无非有3个:简化输入处理、分发请求、简化输出处理。<br>先看输入处理的简化吧。输入无非有2种类型:一种是仅仅输入一两个参数的,大部分get请求都是这种类型,比如你请求阅读、删除一个对象的时候,参数通常只有一个Id。还有一种输入是向服务器端提交一个复杂的对象、对象集合或者对象图的。<br>在我的mvc框架中,对于第一种输入,我仅仅提供了简单的类型转换,框架提供了一个Input类,该类提供了getLong(String key),getInt(String key),getDate(String key)等方法。对于第二种类型输入,我采用json格式来提交。服务器端通过java-json序列化工具的反序列化方法可以很方便获得复杂的对象或者对象图,对于action来说,通常仅仅需要调用inupt.getValue(key,Class)就可以了。我知道struts2本身可以处理较为简单的表单提交,它能够直接把表单参数注入到action某个对象变量中,虽然它的form中input的命名比较恶心点,但总是能做的。<span style="color: #ff0000;">但我的确不清楚struts如何处理一个复杂的对象图,在企业应用中,这种情况还是比较常见的,就拿订单录入来说吧:订单对象本身关联了客户、制单人、客户联系人,订单还关联了订单明细,订单明细中又关联了商品,商品目录,商品单位等等。</span>像这样一个交互,我估计大多数struts2的所谓高手,可能会把交互过程写的很复杂,或者代码很难看。但是在我的框架中,前端可以很简单的处理:var order = form.getValue();order.details = grid.getValue()。服务器端的代码如下:input.getValue("order",Order.class)就可以了。如果struts2中也可以这么简单,如果能指点我一下,我很感谢。虽然这里只是举了一个例子而已,实际上,因为前端采用json格式提交数据,你可以在前端尽可能发挥想象,可以组装任意的对象图提交到服务器端,而服务器单又能很简单的把它反序列化到java对象。UED将不会因为表单只能提交扁平的信息而烦恼。<br><br>另外看看输入处理吧。我的框架中主要处理4种类型的输出:jsp输出、jsp模板输出、重定向输出和json输出。无论哪种输出,action首先调用output.put(key,value)把领域对象设置到一个输出Map中。对于然后调用:return "dispatcheTo xx/aa.jsp" 或者 return "Wrap a.jsp in b.jsp" 或者 return "redirectTo url?key=${key}",对于json输出,你可以reutrn null。对了,这里面除了json输出需要配置映射策略,其他地方无需任何配置。<br><br>请求分发,是根据约定来处理的,url的形式是:http://host/action/method.do<br><br>除了可以处理复杂的交互之外,这个框架还很简单,只需要20个左右的class就够了,学习成本大约2个小时吧。2小时候是真正的熟悉,可以熟练使用,处理复杂交互了。当然,复杂的交互是需要有相当的Js基础的。但框架本身你用2小时足够了。<br><br>废话不多说了,你爱随大流我没意见。但我希望有人能够静下心来想一想,交互层核心是什么?有没有必要用几百个class来处理? </div>
<p> </p>
<p>&lt;input type="text" name="order.user.id"/&gt;这样是Order对象中的User对象的id为你输入的值。如果Order和关联的User是存在的,则直接赋值,如果不存在,则使用默认构造方法创建。</p>
<p> </p>
<p>&lt;input type="text" name="order.details.product.id"/&gt;这样是你说的订单中的订单明细中商品的关联,输入的值是最终被关联的商品的id。</p>
<p> </p>
<p>不知道我这样说你是否明白。</p>
<p> </p>
57 楼 ctoeye 2011-04-18  
hexiaodong 写道
前几天为了整理下思路才写下了上面的文字,没想到引来这么多攻击。
这里有我的不是,我确实很久没用struts2了,不了解他很多插件的用法。但是这么多人号称精通或者熟练struts2,实际上用的好的人的确很少,这也是个事实。

有人让我把自己的框架写出来,再来评论struts2。这个框架我自然是有的,已经用个很多年了。框架的主要的特点是灵活和简单。

让我们来梳理下mvc的功能先:
mvc作为一个交互层框架,核心功能无非有3个:简化输入处理、分发请求、简化输出处理。
先看输入处理的简化吧。输入无非有2种类型:一种是仅仅输入一两个参数的,大部分get请求都是这种类型,比如你请求阅读、删除一个对象的时候,参数通常只有一个Id。还有一种输入是向服务器端提交一个复杂的对象、对象集合或者对象图的。
在我的mvc框架中,对于第一种输入,我仅仅提供了简单的类型转换,框架提供了一个Input类,该类提供了getLong(String key),getInt(String key),getDate(String key)等方法。对于第二种类型输入,我采用json格式来提交。服务器端通过java-json序列化工具的反序列化方法可以很方便获得复杂的对象或者对象图,对于action来说,通常仅仅需要调用inupt.getValue(key,Class)就可以了。我知道struts2本身可以处理较为简单的表单提交,它能够直接把表单参数注入到action某个对象变量中,虽然它的form中input的命名比较恶心点,但总是能做的。但我的确不清楚struts如何处理一个复杂的对象图,在企业应用中,这种情况还是比较常见的,就拿订单录入来说吧:订单对象本身关联了客户、制单人、客户联系人,订单还关联了订单明细,订单明细中又关联了商品,商品目录,商品单位等等。像这样一个交互,我估计大多数struts2的所谓高手,可能会把交互过程写的很复杂,或者代码很难看。但是在我的框架中,前端可以很简单的处理:var order = form.getValue();order.details = grid.getValue()。服务器端的代码如下:input.getValue("order",Order.class)就可以了。如果struts2中也可以这么简单,如果能指点我一下,我很感谢。虽然这里只是举了一个例子而已,实际上,因为前端采用json格式提交数据,你可以在前端尽可能发挥想象,可以组装任意的对象图提交到服务器端,而服务器单又能很简单的把它反序列化到java对象。UED将不会因为表单只能提交扁平的信息而烦恼。

另外看看输入处理吧。我的框架中主要处理4种类型的输出:jsp输出、jsp模板输出、重定向输出和json输出。无论哪种输出,action首先调用output.put(key,value)把领域对象设置到一个输出Map中。对于然后调用:return "dispatcheTo xx/aa.jsp" 或者 return "Wrap a.jsp in b.jsp" 或者 return "redirectTo url?key=${key}",对于json输出,你可以reutrn null。对了,这里面除了json输出需要配置映射策略,其他地方无需任何配置。

请求分发,是根据约定来处理的,url的形式是:http://host/action/method.do

除了可以处理复杂的交互之外,这个框架还很简单,只需要20个左右的class就够了,学习成本大约2个小时吧。2小时候是真正的熟悉,可以熟练使用,处理复杂交互了。当然,复杂的交互是需要有相当的Js基础的。但框架本身你用2小时足够了。

废话不多说了,你爱随大流我没意见。但我希望有人能够静下心来想一想,交互层核心是什么?有没有必要用几百个class来处理?

说你是月经贴,还没完没了了。不就是显摆你会写mvc框架吗?简单的mvc框加也就那点东西。但是struts2、springmvc等框架为了通用和强大,自然有很多类。
说到学习成本,struts2,根本就是半小时的事。就写一个action就完事了,就一个中转的东西,根本没什么好弄的。至于strtus2的标签的学习,你可以不用,毕竟是附加的东西。

引用
就拿订单录入来说吧:订单对象本身关联了客户、制单人、客户联系人,订单还关联了订单明细,订单明细中又关联了商品,商品目录,商品单位等等。像这样一个交互,我估计大多数struts2的所谓高手,可能会把交互过程写的很复杂,或者代码很难看。但是在我的框架中,前端可以很简单的处理:var order = form.getValue();order.details = grid.getValue()。服务器端的代码如下:input.getValue("order",Order.class)就可以了。如果struts2中也可以这么简单,如果能指点我一下,我很感谢。

复杂的对象组合,是在service层完成。action本身就不应该做这些东西。你在action做这些封装本身就是你设计的失误!action只是简单的中转。也就是说你这个order直接放在action的属性中,或者可以定义model驱动。界面直接order.xx.xx就完事了。多麻烦的事?
还json,还map,不知道你要搞什么?你搞的那点东西就你自已懂,别人怎么办?以后的人怎么办?struts是大家都懂的,后来的人学习成本低。也利于产品的维护。不懂就学,别jjyy。
我以前公司有个人拿他写的所谓的mvc框架给我看,说多么多么好,被我一陈批。不知道这个人是不是你。
56 楼 hexiaodong 2011-04-18  
前几天为了整理下思路才写下了上面的文字,没想到引来这么多攻击。
这里有我的不是,我确实很久没用struts2了,不了解他很多插件的用法。但是这么多人号称精通或者熟练struts2,实际上用的好的人的确很少,这也是个事实。

有人让我把自己的框架写出来,再来评论struts2。这个框架我自然是有的,已经用个很多年了。框架的主要的特点是灵活和简单。

让我们来梳理下mvc的功能先:
mvc作为一个交互层框架,核心功能无非有3个:简化输入处理、分发请求、简化输出处理。
先看输入处理的简化吧。输入无非有2种类型:一种是仅仅输入一两个参数的,大部分get请求都是这种类型,比如你请求阅读、删除一个对象的时候,参数通常只有一个Id。还有一种输入是向服务器端提交一个复杂的对象、对象集合或者对象图的。
在我的mvc框架中,对于第一种输入,我仅仅提供了简单的类型转换,框架提供了一个Input类,该类提供了getLong(String key),getInt(String key),getDate(String key)等方法。对于第二种类型输入,我采用json格式来提交。服务器端通过java-json序列化工具的反序列化方法可以很方便获得复杂的对象或者对象图,对于action来说,通常仅仅需要调用inupt.getValue(key,Class)就可以了。我知道struts2本身可以处理较为简单的表单提交,它能够直接把表单参数注入到action某个对象变量中,虽然它的form中input的命名比较恶心点,但总是能做的。但我的确不清楚struts如何处理一个复杂的对象图,在企业应用中,这种情况还是比较常见的,就拿订单录入来说吧:订单对象本身关联了客户、制单人、客户联系人,订单还关联了订单明细,订单明细中又关联了商品,商品目录,商品单位等等。像这样一个交互,我估计大多数struts2的所谓高手,可能会把交互过程写的很复杂,或者代码很难看。但是在我的框架中,前端可以很简单的处理:var order = form.getValue();order.details = grid.getValue()。服务器端的代码如下:input.getValue("order",Order.class)就可以了。如果struts2中也可以这么简单,如果能指点我一下,我很感谢。虽然这里只是举了一个例子而已,实际上,因为前端采用json格式提交数据,你可以在前端尽可能发挥想象,可以组装任意的对象图提交到服务器端,而服务器单又能很简单的把它反序列化到java对象。UED将不会因为表单只能提交扁平的信息而烦恼。

另外看看输入处理吧。我的框架中主要处理4种类型的输出:jsp输出、jsp模板输出、重定向输出和json输出。无论哪种输出,action首先调用output.put(key,value)把领域对象设置到一个输出Map中。对于然后调用:return "dispatcheTo xx/aa.jsp" 或者 return "Wrap a.jsp in b.jsp" 或者 return "redirectTo url?key=${key}",对于json输出,你可以reutrn null。对了,这里面除了json输出需要配置映射策略,其他地方无需任何配置。

请求分发,是根据约定来处理的,url的形式是:http://host/action/method.do

除了可以处理复杂的交互之外,这个框架还很简单,只需要20个左右的class就够了,学习成本大约2个小时吧。2小时候是真正的熟悉,可以熟练使用,处理复杂交互了。当然,复杂的交互是需要有相当的Js基础的。但框架本身你用2小时足够了。

废话不多说了,你爱随大流我没意见。但我希望有人能够静下心来想一想,交互层核心是什么?有没有必要用几百个class来处理?
55 楼 eyeieye 2011-04-18  
xiaodong还趟je的浑水啊?这里回帖的大部分人全职做过的项目还没有你兼职玩过的,就一帮只会扯蛋的
54 楼 arong 2011-04-18  
i got it.
53 楼 ansjsun 2011-04-18  
action不会爆炸的...
你看看springside就知道了..不解释

...struts的属性范围..我不知道你想表达什么..一直用..基本没出现过问题..不过碰到过..关键字重复..所以你定义变量的时候别太那个了

还有struts2 中ServletActionCOntext.getRquest() 很容易取得..request..你想要什么就拿吧..和servlet没区别的..

自己写框架倒是也支持..不过..自己写了..多少人爱用..会用就是个问题了..

还有struts的ajax..你可以用点别的啊..我很少用json ,dwr或者别的..直接用jquery div iframe ...或者直接response...


这是一种习惯吧..人都有恋旧情节的呵呵..用了三年struts2 的飘过..

顺路说说spring-mvc 其实不错..用他做过个项目..感觉很轻量级...小项目可以试试..大项目还是保守点吧..毕竟不是你一个人再做...

写程序就是往傻往楞..往简单里写 simple is beautiful
52 楼 shenjianwangyi 2011-04-18  
问一下 大家用框架的目的是什么?
不管是使用springmvc还是struts 最终的目的不是为了提高生产力吗?
至于使用什么框架,就看个人的喜好以及项目的要求了。
51 楼 wendal 2011-04-18  
zozoh 写道
wendal 写道
不如试试 Nutz

嘿嘿,广告回复,小心关你小黑屋哦。
我个人认为,Nutz 知道的人越少,对现在已有用户越有利 

哈哈, 来啊,小黑屋啊
50 楼 amwiacel 2011-04-18  
哎,这种帖子值的吵吗?
49 楼 soutnila 2011-04-18  
那就用JSF吧、、
48 楼 qq123zhz 2011-04-18  
用flex 的飘过。。。。
47 楼 洪帮主 2011-04-18  
我只是觉得你用不用哪种技术,跟开发成本,维护成本,你的能力,还有收入挂钩吧,东西弄出来,收到钱之后,那才是王道。
46 楼 aimicheng 2011-04-18  
完美的编程应该学习框架而不限于框架
45 楼 aimicheng 2011-04-18  
MVC框架应该支持数据,逻辑处理,界面显示的分离。Struts做到了这点,但是的确太复杂了。个人认为,数据这一层只需有个将与界面交互数据对象化的库,数据持久化的库;
控制这一层只需普通的Servlet就可以了;
界面这一层只需有一个输出数据的模板库就OK了。
44 楼 sxpyrgz 2011-04-17  
兄弟,也给说说吧,其实不管是那个MVC,主要是要了解这个思想、MVC的运行基理、了解服务器怎么个加载这些MVC,然后又是怎么去通过服务器取到这些个ACTION,以及实例化,这对你以后优化别人的MVC或自已开发MVC都有莫大的帮助呵
43 楼 zozoh 2011-04-17  
wendal 写道
不如试试 Nutz

嘿嘿,广告回复,小心关你小黑屋哦。
我个人认为,Nutz 知道的人越少,对现在已有用户越有利 
42 楼 wensky222 2011-04-17  
好东西要用的,每个人都有自己的认识
41 楼 com0606 2011-04-17  
teclogid 写道
连个简单的struts都学不会,还牛逼哄哄说一个月写一个。你写完了再说。
最烦那些懂点皮毛自我感觉良好,学不会便批这批那的烂货了。
不会,你可以问啊,只会埋怨。
1.method共享的变量才定义在方法外,内部的,某个请求独有的,你可以通过request取啊,也可以通过xxxaware接口注入啊。清不清晰取决于你自己的设计,框架只是提供很多方式让你选择而已。
2.拜托你看清楚json-plugin的文档行吗? root,includeProperties,excludeProperties参数。

用struts做了几个项目了,还是这水平?
框架这种东西,你要是对mvc有common sense的话,看一个礼拜的官方文档,应该差不多了吧?
还号称自己写。这种话,只能写出来了再说。




讲得好哦,在理
40 楼 ahyyxx222 2011-04-17  
<div class="quote_title">accphc 写道</div>
<div class="quote_div">
<div class="quote_title">Agrael 写道</div>
<div class="quote_div">
<div class="quote_title">hexiaodong 写道</div>
<div class="quote_div">
<p>在我眼里,struts还有几个关键的缺点,所以我用了3-5个项目后就不用了。</p>
<p>主要的缺点有这么些:</p>
<p>1、输入输出变量范围定义不清晰。在一个action中,所有输入输出变量都是作为对象变量存在的,既无法区分某个变量是属于哪个方法的,也不能区分哪个变量是输入变量还是输出变量。有人说,我每个请求都用单独的action来处理不就行了。这个办法的确可以区分每个请求之间的输入输出,但是你会面临action数量急剧膨胀的问题。</p>
<p>     输入输出变量定义不清晰的带来的问题是代码可读性比较差。使用struts的时候,极端情况下,你得把jsp+action+js结合起来看才能确定某个请求有哪些输入输出。这对项目的维护者来说实在是件很痛苦的事情。</p>
<p> </p>
<p>2、struts在处理ajax请求的时候太不方便了,虽然你可以配置一个插件让strus具备返回json result的功能。但是目前的插件距离我的实际需要还是有差距的。主要的问题在于,<span style="color: #ff0000;">struts现有的json插件不能定义java对象序列化到json对象时的映射策略。</span>就拿User对象来说吧,假如我目前设计的是订单界面,订单又引用了User对象作为订单的制单人属性。那么在序列化Order对象到前端的时候,我只需要序列化User对象的id,name就够了,user对象的其他属性可以统统不要。但我如果在维护用户的模块中,显示用户列表的时候,通常要显示用户对象的大部分属性。因此java对象到json对象的序列化策略应该是运行时动态设定的,不可能用annotation来申明。但struts以及struts插件并没有提供运行时根据请求为某个类选择不同映射策略的功能。</p>
<p> </p>
<p>struts2,学习成本不可谓不高,功能不可谓不强大,但不符合我的需求。</p>
<p> </p>
<p>学习strus2,假如不花个把月时间静下心来学习和实践,估计没人敢说自己精通strus2了。但mvc真的有必要那么复杂么?</p>
<p> </p>
<p>mvc是什么?他应该能干什么?他的核心价值在哪?最小的mvc应该包含哪些功能?我们自己写一个mvc如何?自己写一个mvc框架需要超过一个月时间么?</p>
</div>
<p>建议看看json返回类型的includeProperties和excludeProperties。</p>
<p>最近JE上出现的文章常见到如“struts2的一个大bug”、“struts2悲剧的bug”等等文章,到底是struts2的问题还是使用者自身的问题。。。。。。</p>
<p>也建议测试struts2和springMVC性能的同学,最好不用default拦截器栈来测试,那个拦截器栈功能过多,有很多是用不到但是比较消耗性能的。</p>
</div>
<p>如果不用struts-default定义的默认拦截器,那该如何精简,可否给个具体的说法。。。</p>
<p>最起码也得搞清楚那些默认的拦截器是干什么用的吧。</p>
<p>对于我来说,坚决不用struts2的类型转换功能,对于数据校验,视项目而定。</p>
</div>
<p>你居然连换拦截器都不会就来评论struts2?把配置的defaultStack换成basicStack很难么?</p>
<p>十多个拦截器,每个拦截器的作用都非常分明,随意google一下,说明文章遍地都是,可以自己随意组合各种拦截器,还可以进行按需对包进行继承调用。</p>
<p>数据转换也不用这就没啥好说的了,想象下一个Long型id,每次传参代码里都自己写一个Long.parseLong(String)来把id转过来,不嫌麻烦?一个Date型日期,每次都自己写代码调方法从String转成Date不嫌麻烦?</p>
<p>是自己的转换比他的效率高还是转得更准确?</p>
39 楼 ahyyxx222 2011-04-17  
想当初开始学习STRUTS2时,上手非常快,感觉实在太方便了,至今也没遇到不能实现的功能。
当然这是从网站用户的使用角度说的,要是非要按某种习惯来写代码去说,没什么框架能满足所有开发者。
但是,屡次学习spring mvc3,发现上手实在痛苦,各种教程,例子,视频都看过,感觉除了REST路径好用以外就一原始的玩意。
struts2要区分输入输出参数降低效率?那spring mvc为每个请求重写各种参数定义算不算降低效率。
要说性能,JSP SERVLET还当之无愧第一呢。

相关推荐

    struts2 最新版 不用去官网上下载了

    Struts2是一个非常知名的Java Web开发框架,由Apache软件基金会维护。它基于MVC(Model-View-Controller)设计模式,极大地简化了Java Web应用程序的开发过程,提供了强大的功能和可扩展性。在标题和描述中提到的...

    Struts2+jQuery(不用JSON)实现局部刷新

    - **jQuery的AJAX请求**:使用jQuery的$.ajax()方法,设置URL为Struts2的Action路径,成功回调函数内解析响应内容并更新DOM。 5. **示例代码**: - Struts2 Action代码可能如下: ```java public class ...

    struts2.0.11 jar 包

    - `xwork-2.0.4.jar`:XWork是Struts2的基础,提供了动作处理、类型转换、数据绑定等基础功能,为Struts2提供了强大的业务逻辑处理能力。 4. **OGNL(Object-Graph Navigation Language)**: - `ognl-2.6.11.jar...

    struts2配置2.5版

    可设置为本地【xml输入语法快捷提示】,就不用远程获取了:window--&gt;preference--&gt;输入Catalog--&gt;xml下的Catalog--&gt;Add--&gt;location:解压缩struts-core-2.5.16.jar 后,文件struts-2.5.dtd文件路径。 ...

    Struts2-2.3.16 全jar包

    例如你建一Web Project,名为Struts2 导入项目所需要的jar包,放入/Struts2/WebRoot/WEB-INF/lib下面 方法一: 在struts2存放目录(以我的举例说明) F:\JavaWeb教程\ssh-jar\struts-2.2.3.16-all\struts-2.2.3.16\...

    struts试题

    在 Struts.xml 文件中,有一个名为 `reload` 的常量,可以实现不用重新启动服务就可以得到反馈。 4. Package 的作用: 在 Struts2 中,Package 用于组织 Action。Package 可以为空,如果为空,则表示该包为默认...

    javaweb-struts2

    9. **国际化与本地化**:Struts2内置了对多语言的支持,开发者可以轻松地为应用程序添加不同语言的资源文件,实现内容的国际化。 10. **插件体系**:Struts2拥有丰富的插件库,如Struts2-dojo-plugin用于AJAX支持,...

    struts-2.3.20-lib.zip

    Struts 2是Java Web开发领域中一个广泛应用的...通过使用Struts 2,开发者可以更加专注于业务逻辑,而不用过多关注底层的HTTP处理和页面渲染。对于企业级应用来说,选择Struts 2.3.20可以带来高效、稳定的开发体验。

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...

    struts1和struts2的增删改查

    Struts2还支持动态方法调用,这意味着可以不用为每个CRUD操作创建单独的Action方法,而是在一个Action中使用通用的方法,通过参数决定执行哪个操作。此外,拦截器可以实现通用的功能,如权限检查、日志记录等,使得...

    struts框架的最简单应用,懂的就不用下了

    在Struts框架中,配置文件(通常为struts-config.xml或struts2的struts.xml)是非常重要的。这个配置文件定义了Action类与URL的映射,以及视图的跳转规则。压缩包可能包含了一个简单的配置示例,用于演示如何设置...

    struts2图书馆管理系统

    总的来说,这个"struts2图书馆管理系统"项目为初学者提供了一个了解和实践Struts2框架的机会,尽管它可能存在一些功能上的局限,但通过这个项目,学习者可以深入理解MVC架构,掌握Struts2的核心概念,并初步接触Web...

    Struts2 JDBC 增删改查

    项目中主键是通过sequence来自增的,这意味着数据库(如Oracle、PostgreSQL等支持序列的数据库)会自动为新记录生成唯一ID。在JDBC中,通常需要调用序列的nextval()函数来获取这个ID,然后插入到对应字段。 此外,...

    struts2 资料struts2 资料struts2 资料struts2 资料

    9. **技术选型**:《开源技术选型手册.pdf》可能包含关于为什么选择Struts2作为开发框架的讨论,对比其他框架的优势,以及在不同场景下的适用性。 10. **中文文档**:《starting-struts2-chinese.pdf》是Struts2的...

    Struts2jar包及dtd文件

    它的核心是基于MVC(Model-View-Controller)设计模式的,为开发者提供了丰富的功能和灵活性,使得开发者可以专注于业务逻辑,而不用过于关心底层的实现细节。 首先,我们来了解"jar包"。在Java开发中,jar(Java ...

    struts1总结

    Struts1是一个经典的Java Web开发框架,由Apache软件基金会维护,它主要负责处理MVC(Model-View-Controller)架构中的Controller部分。本篇文章将深入探讨Struts1的核心概念、工作原理及其在实际开发中的应用。 一...

    Struts2漏洞检查工具2017版

    采用scanner读数据流,再也不用担心s16不能执行net user/ipconfig/netstat -an等命令了。 增加复杂数据包(multipart/form-data)提交方式进行漏洞利用,可绕过部分防护。可执行命令,暂时无法上传文件。 2014-11-12...

    在struts2中使用freemarker模版

    在`struts.xml`配置文件中,定义一个action,比如`test`,并指定其结果类型为`freemarker`,这样当用户触发这个action时,Struts2会将控制权交给FreeMarker模板来渲染视图。例如: ```xml ...

    struts-2.5.12

    总之,Struts 2.5.12是一个功能强大且成熟的Web框架,它的设计理念和特性使得开发人员能够更专注于业务逻辑,而不用过于关心底层的实现细节。通过理解并熟练运用这些知识点,开发者可以构建出高效、可维护的Java Web...

    [Struts 2权威指南--基于WebWork核心的MVC开发(高清完整版) 1/12

    不用多说了,Struts 2权威指南--基于WebWork核心的MVC开发(高清完整版),解压出来有200多M,因为权限不怎么够,我一共分了12卷,是一本不可多得的好书。第一卷附目录: 第1章 Struts 2概述,第2章 Struts 2下的Hello...

Global site tag (gtag.js) - Google Analytics