仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2090|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA网站制作之Java 进修杂谈(十):Struts2仓酷云

[复制链接]
透明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:36:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
JAVA学习必须明确这是一项投资,对于大多数的人来说,学习JAVA是为了就业,还有就是刚走向工作位置的朋友想尽快赶上工作的节奏。比来专业工夫笔者一向JavaVirtualMachine的研讨,因为练习分派到项目组内里,不想夙昔那末闲了,十分困难才抽出工夫来持续这个话题的帖子。我盘算把J2ee的部分停止以后,再谈谈JVM和JavaScript,只需笔者有最新的进修条记总结出来,必定会拿来实时和人人分享的。衷心但愿与酷爱Java的关年夜同仁配合前进……

此次筹办持续前次的话题先讲讲Struts-2,部下冗长回忆一段汗青:跟着工夫的推移,Web使用框架常常变更的需求,发生了几个下一代Struts的办理计划。个中的StrutsTi持续保持MVC形式的基本上改善,持续Struts的乐成履历WebWork项目是在2002年3月公布的,它对Struts式框架举行了反动性改善,引进了很多新的头脑,观点和功效,但和原Struts代码其实不兼容。WebWork是一个成熟的框架,经由了好几回严重的改善与公布。在2005年12月,WebWork与StrutsTi决意合拼,再此同时,StrutsTi更名为StrutsActionFramework2.0,成为Struts真实的下一代。

看看Struts-2的处置流程:
1)Browser发生一个哀求并提交框架来处置:依据设置决意利用哪些拦阻器、action类和了局等。
2)哀求经由一系列拦阻器:依据哀求的级别分歧拦阻器做分歧的处置。这和Struts-1的RequestProcessor类很类似。
3)挪用Action:发生一个新的action实例,挪用营业逻辑办法。
4)挪用发生了局:婚配resultclass并挪用发生实例。
5)哀求再次经由一系列拦阻器前往:历程也可设置削减拦阻器数目
6)哀求前往用户:从control前往servlet,天生Html。

这里很分明的一点是不存在FormBean的感化域封装,间接能够从Action中获得数据。这里有一个Strut-2设置的web.xml文件:
<filter>
<filter-name>controller</filter-name>
<filter-class>org.apache.struts.action2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>cotroller</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

注重到以往的servlet酿成了filter,ActionServlet酿成了FilterDispatcher,*.do酿成了/*。filter设置界说了称号(供联系关系)和filter的类。filtermapping让URI婚配乐成的的哀求挪用该filter。默许情形下,扩大名为".action"。这个是在default.properties文件里的"struts.action.extension"属性界说的。

default.properties是属性界说文件,经由过程在项目classpath路径中包括一个名为“struts.properties”的文件来设置分歧的属性值。而Struts-2的默许设置文件名为struts.xml。因为1和2的action扩大名分离为.do和.action,以是很便利能共存。我们再来看一个Struts-2的action代码:
publicclassMyAction{
publicStringexecute()throwsException{
//dothework
return"success";
}
}

很分明的区分是不必再承继任何类和接口,前往的只是一个String,无参数。实践上在Struts-2中任何前往String的无参数办法都能够经由过程设置来挪用action。一切的参数从那里来取得呢?谜底就是InversionofControl手艺(把持反转)。笔者只管以最普通的体例来注释,我们先试图让这个Action取得reuqest对象,如许能够提取页面提交的任何参数。那末我们把request设为一个成员变量,然后必要一个对它的set办法。因为年夜部分的action都必要这么做,我们把这个set办法作为接口来完成。
publicinterfaceServletRequestAware{
publicvoidsetServletRequest(HttpServletRequestrequest);
}

publicclassMyActionimplementsServletRequestAware{
privateHttpServletRequestrequest;

publicvoidsetServletRequest(HttpServletRequestrequest){
this.request=request;
}

publicStringexecute()throwsException{
//dotheworkdirectlyusingtherequest
returnAction.SUCCESS;
}
}

那末谁来挪用这个set办法呢?也就是说谁来把持这个action的举动,以往我们都是本人在得当的中央写上一句action.setServletRequest(…),也就是把持权在程序员这边。但是把持反转的头脑是在那里挪用交给正在运转的容器来决意,只需使用Java反射机制来取得Method对象然后挪用它的invoke办法传进参数就可以做到,如许把持权就从程序员这边转移到了容器何处。程序员能够加重良多烦琐的事情更多的存眷营业逻辑。Request能够如许注进到action中,其他任何对象也都能够。为了包管action的成员变量线程平安,Struts-2的action不是单例的,每个新的哀求城市发生一个新的action实例。

那末有人会问,究竟谁来做这个对象的注进事情呢?谜底就是拦阻器。拦阻器又是甚么工具?笔者再来只管普通的注释拦阻器的观点。人人要了解拦阻器的话,起首必定要了解GOF23种计划形式中的Proxy形式。

A对象要挪用f(),它但愿代办署理给B来做,那末B就要取得A对象的援用,然后在B的f()中经由过程A对象援用挪用A对象的f()办法,终极到达A的f()被挪用的目标。有无人会以为如许很贫苦,为何明显只需A.f()就能够完成的必定要封装到B的f()办法中往?有哪些优点呢?

1)这里我们只要一个A,当我们有良多个A的时分,只必要监督B一个对象的f()办法就能够从全局上把持一切被挪用的f()办法。
2)别的,既然代办署理人B能取得A对象的援用,那末B能够决意在真正调A对象的f()办法之前能够做哪些前置事情,调完前往前可有做哪些后置事情。

讲到这里,人人看出来一点拦阻器的观点了么?它拦阻下一调f()办法的哀求,然后一致的做处置(处置每一个的体例还能够分歧,剖析A对象就能够分辨),处置终了再放行。如许像不像对活动的河水横切了一刀,对一切想经由过程的水份子举行搜身,然后再放行?这也就是AOP(AspectofProgramming面向切面编程)的头脑。

Anyway,Struts-2只是使用了AOP和IoC手艺来加重action和框架的耦合干系,力争到最年夜水平重用action的目标。在如许的手艺促动下,Struts-2的action成了一个复杂被框架利用的POJO(PlainOldJavaObject)而已。实事上AOP和IoC的头脑已遍及新出来的每个框架上,他们并非何等新的手艺,使用的也都是JDK早已能够最到的事变,它们代表的是加倍面向接口编程,进步重用,增添扩大性的一种头脑。Struts-2只是部分的利用这两种头脑来计划完成的,别的一个比来很火的框架Spring,更年夜水平上代表了这两种计划头脑,笔者将于下一篇来进一步切磋Spring的布局。

PS:关于Struts-2笔者也没真正怎样用过,这里是看了网上一些先辈的帖子以后写下本人的进修体验,不敷的地方请包涵!
来自:http://topic.csdn.net/u/20070924/21/18482496-082f-4907-8751-b80ab5d56622.html?seed=1386683868

windows系统样,他们做了什么事或者留了一些后门程序,谁都不知道,二,java开发是跨平台,任何系统上都可以运行,对于保密型系统和大型系统开发这是必要的
精灵巫婆 该用户已被删除
沙发
发表于 2015-1-21 10:55:19 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
分手快乐 该用户已被删除
板凳
发表于 2015-1-30 16:07:01 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
蒙在股里 该用户已被删除
地板
发表于 2015-2-1 22:49:41 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
活着的死人 该用户已被删除
5#
发表于 2015-2-7 15:35:33 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
飘灵儿 该用户已被删除
6#
发表于 2015-2-8 19:38:29 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
乐观 该用户已被删除
7#
发表于 2015-2-15 20:40:18 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
第二个灵魂 该用户已被删除
8#
发表于 2015-3-4 13:15:40 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
海妖 该用户已被删除
9#
发表于 2015-3-4 15:36:25 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
小女巫 该用户已被删除
10#
发表于 2015-3-7 21:11:04 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
只想知道 该用户已被删除
11#
发表于 2015-3-10 19:11:00 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
灵魂腐蚀 该用户已被删除
12#
发表于 2015-3-14 15:43:25 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
不帅 该用户已被删除
13#
发表于 2015-3-17 20:10:34 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
金色的骷髅 该用户已被删除
14#
发表于 2015-3-24 23:44:47 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
山那边是海 该用户已被删除
15#
发表于 2015-3-27 18:09:33 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
再现理想 该用户已被删除
16#
发表于 2015-3-30 08:36:35 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
莫相离 该用户已被删除
17#
发表于 2015-4-1 00:08:23 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
因胸联盟 该用户已被删除
18#
发表于 2015-4-1 13:09:15 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
简单生活 该用户已被删除
19#
发表于 2015-4-22 09:54:40 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
变相怪杰 该用户已被删除
20#
发表于 2015-5-5 23:10:17 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 02:32

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表