传智播客strus2
struts2

1.strust2框架来历简介:WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的J2EE Web框架。
(同时也是一个成熟的基于Web的MVC框架)MVC:Model View Controller,model是模型,view是视图,controller是控制器,是一种框架模式。
随着WebWork框架的发展,衍生出了strust2框架,因此strust2框架是WebWork的升级,而不是一个全新的框架,因此稳点性、性能等方面都有很好的保证,而且也同时吸收了struts1框架和WebWork俩者的优点.所以strust2框架也是一个基于Web的MVC框架注意:strust2框架并不是struts1框架的延续或者升级,俩者有着很大的不同2.web项目中的三层架构(和MVC是俩个完全不同的架构)1.表示层(Struts2框架就是工作在这个地方)2.业务逻辑层(service层,处理业务逻辑,比如判断用户名是否存在、密码是否正确、权限是否拥有、账号是否被冻结、账号是否异常、用户积分是否到达操作要求等等,多为一些执行某一个操作条件的判断)3.数据访问层(dao层,专门处理和数据库进行交换的事情,jdbc/hibernate就在这里使用)在项目中,这些不同的分层的表现形式,其实就是在我们自己建的不同的package 中写上各自分层中所使用的java类.比如在项目中我们建了三个package,三个package中java类的作用分别为表示层的代码、业务逻辑层代码、数据访问层代码。
注意:可以理解为,MVC架构是这里说描述的三层架构的一部分,即:三层架构中的表示层可以使用mvc架构的框架来实现,例如使用struts2框架.3.使用struts2框架的好处(为什么要使用struts2框架)减少编程人员代码的编写,使代码更加简洁明了,缩短开发时间,增加开发效率.4.struts2框架引入到web项目中首先使用Eclipse/MyEclipse中建一个web项目.1.把struts2相关jar包引入到项目中。
笔记-传智播客springMVC公开课

SpringMVC公开课笔记高浩阳2014-11-29目录1SpringMVC框架 (2)1.1SpringMVC框架 (2)1.2SpringMVC组件总结 (2)2开发SpringMVC的第一个程序 (3)2.1准备环境 (3)2.2开发SpringMVC的第一个程序 (3)2.2.1创建Java Web工程 (3)2.2.2向工程中填充SpringMVC的jar包 (3)2.2.3配置前端控制器 (4)2.2.4创建一个配置文件springmvc.xml(名称不固定) (7)2.2.5配置处理器映射器HandlerMapping (8)2.2.6配置处理器适配器HandlerAdapter (9)2.2.7配置视图解析器ViewResolver (12)2.2.8编写Handler (13)2.2.9在springmvc.xml中配置helloAction.java (16)2.2.10将工程部署到tomcat,启动tomcat (17)2.3小结: (18)3注解开发第一个例子 (19)3.1新建工程SpringMVCTest02 (19)3.2在springmvc.xml中配置 (20)3.3开发action (21)3.4配置action (22)3.5部署工程,运行Tomcat (24)4注解开发学生信息管理功能 (24)5SpringMVC特点 (33)6和Jquery easyui 整合完成数据列表 (33)1SpringMVC框架1.1SpringMVC框架1. 用户发起请求request(比如请求链接叫http://www.xxx/user.action)注册用户信息。
2. SpringMVC通过DispatcherServlet接受请求。
DispatcherServlet是一个前端控制器(想到struts2在web.xml配置一个filter前端控制器)相当于控制器Controller3. DispatcherServlet调用HandlerMapping(处理器映射器)根据user.action找到处理器(Handler)HandlerMapping负责分局user.action这个链接找到Handler,根据xml配置或注解配置找到Handler4. HandlerMapping将找到的Handler给DispatcherServlet前端控制器5. DispatcherServlet前端控制器调用HandlerAdapter(处理器适配器)去执行Handler处理器适配器负责执行Handler6. Handler将处理结果返回给HandlerAdapter(处理器适配器)处理结果就是ModelAndView(封装了模型数据和视图)7. DispatcherServlet调用视图解析器ViewResolver去解析视图8. 将View给用户相应1.2SpringMVC组件总结1. DispatcherServlet前端控制器(不需要程序员写)负责框架调度,相当于中央处理器基本controller控制器功能:接收用户request请求和给用户response响应2. HandlerMapping(处理器映射器)(不需要程序员写)负责根据action的连接找到Handler处理器(理解成写的action)3. HandlerAdapter(处理器适配器)(不需要程序员写)负责去执行Handler4. **Handler处理器需要程序员写理解成struts里边的action,需要程序员写action类,这个action类符合适配器的执行规则。
struts2的发展极其优势

Struts 2目录Struts 2 概述Struts技术的发展概况Struts2体系结构Struts2和Struts1的对比WebWork和Struts2的对比Struts2 五种默认返回类型名编辑本段Struts 2 概述Struts 2是Struts的下一代产品。
是在struts 和WebWork的技术基础上进行了合并,全新的Struts 2框架。
其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。
因为Struts 2和Struts 1有着太大的变化,但是相对于WebWork,Struts 2只有很小的变化。
编辑本段Struts技术的发展概况经过六年多的发展,Struts1已经成为了一个高度成熟的框架,不管是稳定性还是可靠性都得到了广泛的证明。
市场占有率超过20%,拥有丰富的开发人群,几乎已经成为了事实上的工业标准。
但是随着时间的流逝,技术的进步,Struts1的局限性也越来越多地暴露出来,并且制约了Struts1的继续发展。
对于Struts1框架而言,由于与JSP/Servlet耦合非常紧密,因而导致了一些严重的问题。
首先,Struts1支持的表现层技术单一。
由于Struts1出现的年代比较早,那个时候没有FreeMarker、Velocity等技术,因此它不可能与这些视图层的模版技术进行整合。
其次,Struts1与Servlet API 的严重耦合,使应用难于测试。
最后,Struts1代码严重依赖于Struts1 API,属于侵入性框架。
从目前的技术层面上看,出现了许多与Struts1竞争的视图层框架,比如JSF、Tapestry和Spring MVC等。
这些框架由于出现的年代比较近,应用了最新的设计理念,同时也从Struts1中吸取了经验,克服了很多不足。
Sring传智播客第一章的题(带答案和解析)

Sring传智播客第⼀章的题(带答案和解析)⽬录作业⼀单选题1、以下有关Spring的四个基础包说法正确的是()A、Spring的四个基础包,它们分别对应Spring Web容器的四个模块B、Spring的四个基础包有spring-core.RELEASE.jar、spring-beans-.RELEASE.jar、spring-context-.RELEASE.jar和spring-aop-.RELEASE.jar;C、spring-context-.RELEASE.jar是所有应⽤都要⽤到的JAR包,它包含访问配置⽂件以及进⾏IoC或者DI操作相关的所有类D、spring-core.RELEASE.jar包含Spring框架基本的核⼼⼯具类,Spring其它组件都要⽤到这个包⾥的类,是其它组件的基本核⼼答案:D2、Spring的核⼼容器是其他模块建⽴的基础,以下哪个不是该容器的组成模块()。
A、Beans模块B、Core模块C、Context模块D、AOP模块答案:D3、下列选项中,不属于Spring框架优点的是()A、提供强⼤的、可以有效减少页⾯代码的标签B、声明式事务的⽀持C、⽅便解耦、简化开发D、⽅便集成各种优秀框架答案:A4、下列有关Spring框架的描述,错误的是()A、Spring是Java Web开发框架B、Spring是轻量级框架C、Spring是开源框架D、Spring是持久层框架答案:D5、以下关于Spring核⼼容器相关说法错误的是()A、Spring框架的所有功能都是通过其核⼼容器来实现的B、创建BeanFactory实例时,需要提供Spring所管理容器的详细配置信息,这些信息通常采⽤XML⽂件形式来管理C、ApplicationContext不仅包含了BeanFactory的所有功能,还添加了对国际化、资源访问、事件传播等⽅⾯的⽀持D、通常在Java项⽬中,会采⽤通过ClassPathXmlApplicationContext类来实例化ApplicationContext容器的⽅式,⽽在Web项⽬中,ApplicationContext容器的实例化⼯作会交由Web服务器来完成答案:A6、以下有关Spring框架优点的说法正确的是()A、Spring具有简单、可测试和松耦合等特点,从这个⾓度出发,Spring就是应⽤于任何Java应⽤的开发中;B、Spring提供了对AOP的⽀持,它允许将⼀些通⽤任务,如安全、事务、⽇志等进⾏集中式处理,从⽽提⾼了程序的复⽤性C、Spring就是⼀个⼤⼯⼚,可以将所有对象的创建和依赖关系的维护⼯作都交给Spring容器管理,杜绝了组件之间的耦合性D、Spring增加了Java EE开发中⼀些API的使⽤难度答案:B多选题7、Spring框架压缩包解压后的⽬录中lib中的JAR包说明正确的是()A、libs⽬录中的JAR包分为三类B、以RELEASE.jar结尾的是Spring框架class⽂件的JAR包C、以RELEASE-javadoc.jar结尾的是Spring框架API⽂档的压缩包D、以RELEASE-sources.jar结尾的是Spring框架源⽂件的压缩包答案:全选8、Spring框架压缩包解压后的⽬录中内容说明正确的是()A、docs⽂件夹中包含Spring的API⽂档和开发规范B、libs⽂件夹中包含开发需要的JAR包和源码C、schema⽂件夹中包含开发所需要的schema⽂件D、spring.x.pdf中是使⽤⼿册答案:ABCspring.x.pdf没这个⽬录啊9、下列选项中,属于Spring框架优点的有()A、⽅便解耦、简化开发B、AOP编程的⽀持C、⽅便集成各种优秀框架D、声明式事务的⽀持答案:全选10、以下哪些属于Spring框架模块()A、Core ContainerB、Data Access/IntegrationC、IoCD、Messaging答案:ABD后⾯有图11、Spring的核⼼容器是其他模块建⽴的基础,以下哪些属于该容器的组成模块()A、Beans模块B、Core模块C、SpELD、AOP模块答案:ABCspring的核⼼容器是其他模块建⽴的基础,它主要由Beans模块、Core模块、Context-support模块和SpEL(Spring Express Language,Spring表达式语⾔)模块组成。
struts2基本流程及原理

Struts2基本流程及原理1.Struts 2的基本流程Struts 2框架由3个部分组成:核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件。
在这3个部分里,Struts 2框架提供了核心控制器FilterDispatcher,而用户需要实现业务控制器和业务逻辑组件。
2.核心控制器:FilterDispatcherFilterDispatcher是Struts 2框架的核心控制器,该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求。
如果用户请求以action结尾,该请求将被转入Struts 2框架处理。
Struts 2框架获得了*.action请求后,将根据*.action请求的前面部分决定调用哪个业务逻辑组件,例如,对于login.action请求,Struts 2调用名为login的Action来处理该请求。
Struts 2应用中的Action都被定义在struts.xml文件中,在该文件中定义Action时,定义了该Action的name属性和class属性,其中name属性决定了该Action处理哪个用户请求,而class属性决定了该Action的实现类。
Struts 2用于处理用户请求的Action实例,并不是用户实现的业务控制器,而是Action代理——因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求。
而Struts 2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action 的execute方法来处理用户请求。
显然,上面的处理过程是典型的AOP(面向切面编程)处理方式。
用户实现的Action类仅仅是Struts 2的Action代理的代理目标。
用户实现的业务控制器(Action)则包含了对用户请求的处理。
struts2

struts2.Struts2课件1Mvc与servlet1.1 Servlet的优点1、是mvc的基础,其他的框架⽐如struts1,struts2,webwork都是从servlet基础上发展过来的。
所以掌握servlet是掌握mvc的关键。
2、Servlet把最底层的api暴漏给程序员,使程序员更能清楚的了解mvc的各个特点。
3、程序员可以对servlet进⾏封装。
Struts2就是从servlet中封装以后得到的结果。
4、市场上任何⼀个mvc的框架都是servlet发展过来的,所以要想学好struts2这个框架,了解servlet的运⾏机制很关键。
1.2 Servlet的缺点1、每写⼀个servlet在web.xml中都要做相应的配置。
如果有多很servlet,会导致web.xml内容过于繁多。
2、这样的结构不利于分组开发。
3、在servlet中,doGet⽅法和doPost⽅法有HttpServletRequest和HttpServletResponse参数。
这两个参数与容器相关,如果想在servlet中作单元测试,则必须初始化这两个参数。
4、如果⼀个servlet中有很多个⽅法,则必须采⽤传递参数的形式,分解到每⼀个⽅法中。
2重构servlet针对servlet以上的特点,我们可以对servlet进⾏重构,使其开发起来更简单。
更容易,更适合团队协作。
重构的⽬标:1、只写⼀个serlvet或者过滤器,我们这⾥选择过滤器。
2、不⽤再写任何的servlet,这样在web.xml中写的代码就很少了。
3、原来需要写serlvet,现在改写action。
4、在action中把HttpServletRequest参数和HttpServletResponse参数传递过去。
5、在过滤器中通过java的反射机制调⽤action。
6、详细过程参照cn.itcast.action包中的内容3Struts2介绍1、struts2是apache组织发明的开源框架。
Struts2的配置文件详解

1.3.包含配置:
在Struts2中可以将一个配置文件分解成多个配置文件,那么我们必须在struts.xml中包含其他配置文件。
<struts>
<includefile="struts-default.xml"/>
<includefile="struts-user.xml"/>
erName= userName;
}
/**
*@returnthepassword
*/
publicString getPassword() {
returnpassword;
}
/**
*@parampasswordthepasswordtoset
*/
publicvoidsetPassword(String password) {
</action>
</package>
</struts>
如上示例的配置,配置了一个名为default的包,该包下定义了一个Action。
1.2.命名空间配置:
考虑到同一个Web应用中需要同名的Action,Struts2以命名空间的方式来管理Action,同一个命名空间不能有同名的Action。
Struts2通过为包指定namespace属性来为包下面的所有Action指定共同的命名空间。
l public Map getSession():返回一个Map对象,该Map对象模拟了HttpSession实例。
l public void setSession(Map session):直接传入一个Map实例,将该Map实例里的key-value对转换成session的属性名-属性值对。
Struts2介绍

Struts2集成指南关于Struts2Struts是Apache软件基金会(ASF)赞助的一个开源项目。
它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。
它通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-View-Controller〔MVC〕设计模式的应用框架〔Web Framework〕,是MVC经典设计模式中的一个经典产品。
Struts,a history在Java EE的Web应用发展的初期,除了使用Servlet技术以外,普遍是在JavaServer Pages(JSP)的源代码中,采用HTML与Java代码混合的方式进行开发。
因为这两种方式不可避免的要把表现与业务逻辑代码混合在一起,都给前期开发与后期维护带来巨大的复杂度。
为了摆脱上述的约束与局限,把业务逻辑代码从表现层中清晰的分离出来,2000年,Craig McClanahan采用了MVC的设计模式开发Struts。
后来该框架产品一度被认为是最广泛、最流行JAVA的WEB应用框架。
Craig McClanahan2006年,WebWork与Struts这两个优秀的Java EE Web框架(Web Framework〕的团体,决定合作共同开发一个新的,整合了WebWork与Struts优点,并且更加优雅、扩展性更强的框架,命名为“Struts 2”,原Struts的1.x版本产品称为“Struts 1”。
至此,Struts项目并行提供与维护两个主要版本的框架产品——Struts 1与Struts 2。
Struts1 vs. Struts2侵入性Struts 1在编程方面是面向抽象类编程,而不是面向接口编程。
Struts 1要求自定义Action 类继承一个特定的抽象基类Action。
另一方面,Struts 1的 Action 依赖于 Servlet API,因为Struts 1 Action 的execute 方法中有HttpServletRequest 和HttpServletResponse 方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京传智播客教育
—高级软件人才实作培训专家! Struts2(hello world)
HelloWorldAction.java
package cn.itcast.struts2.action; public class HelloWorldAction { private static final String GREETING = "Hello "; public String execute() { setCustomGreeting( GREETING + getName() ); return "SUCCESS"; } private String name; get/set private String customGreeting; get/set }
北京传智播客教育
—高级软件人才实作培训专家! Struts2(操纵action)
打包action
Struts2中的包和java的包作用相当.逻辑上的容器,组织action和其他的组件.其中包的url中的 Namespace必须指定,而且包可以继承或抽象化. <package name="chapterThreeSecure" namespace="/chapterThree/secure" extends="struts-default"> <action name="AdminPortfolio" > <result>/chapterThree/AdminPortfolio.jsp</result> </action> <action name="AddImage" > <result>/chapterThree/ImageAdded.jsp</result> </action> <action name="RemoveImage" > <result>/chapterThree/ImageRemoved.jsp</result> </action> </package> url:http://localhost:8080/manningHelloWorld/chapterThree/ secure/AddImage.action 北京传智播客教育
北京传智播客教育
—高级软件人才实作培训专家! Struts2(操纵action)
Aciton的方法返回控制串用于结果路由
Struts1如何处理的? 返回的控制串表明哪个结果要被渲染.而且消除了代码中对路由对象的依赖,使得代码更简洁,达到了 解耦的目的.这些路由串必须和xml文档中配置的结果相匹配.
—高级软件人才实作培训专家! Struts2(操纵action)
Aciton封装了工作单元并提供了数据传输中心
//工作单元 public string execute(){ … } //数据传输中心 Public string name ;//get/set Public string greetingName ; //get/set 该应用中name参数被从表单转移到action的name属性(按照名称匹配的原则).除此以外action还 要把javabean属性暴露给结果. 在struts1中,每个action只有一个实例.如果struts2也是如此的话,我们就不能用action来携带 请求数据了,因为在多线程的情况下这是有问题的.struts2解决这一问题的办法是每次实例化新的 action实例.这也是和struts1不同的地方.
北truts2(url)
在struts1中,通过<action path="/test/helloworld">节点的path属性指定访问该action 的URL路径。 在struts2中,URL路径由两部份组成:包的命名空间+action的名称,例如 http://localhost:port/项目名称/test/helloworld.action <package name="itcast" namespace="/test" extends="struts-default"> <action name="helloworld" class="cn.itcast.action.HelloWorldAction" method="execute" > <result name="success">/WEB-INF/page/hello.jsp</result> </action> </package>
北京传智播客教育
—高级软件人才实作培训专家! Struts2配置(web.xml)
注:struts2.1.3以后推荐使用 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter Init():进行初始化。
北京传智播客教育
—高级软件人才实作培训专家! Struts2配置方式(xml和元数据)
Struts.xml: <action name="HelloWorldAction" class="..HelloWorldAction"> <result>/index.jsp</result> </action> <action name="MyAction" > <result>/index.jsp</result> </action> 注解: @Results({ @Result(name="input", value="/RegistrationSuccess.jsp" ) @Result(value="/RegistrationSuccess.jsp" ) }) public class LoginAction implements Action {
<action name="HelloWorld" class="manning.chapterOne.HelloWorld"> <result name="success">/chapterTwo/HelloWorld.jsp</result> <result name="error">/chapterTwo/Error.jsp</result> </action> <action name="HelloWorld2" class=".." method="view"> <result name="input">/chapterTwo/Error.jsp</result> </action> 注:开启动态方法调用.[struts.enable.DynamicMethodInvocation = true] http://.../struts/HelloWorldAction!view.action?...
北京传智播客教育
—高级软件人才实作培训专家! Struts2(hello world)
index.jsp
<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>helloWorld.jsp</title> </head> <body> <h4>Enter your name </h4> <s:form action="HelloWorldAction"> <s:textfield name="name" label="username"/> <s:submit/> </s:form> </body> </html>
public String execute() { //Business logic for login }
}
北京传智播客教育
—高级软件人才实作培训专家! Struts2配置方式(默认值以及模块化)
许多属性不需要显式设置,他们都有合理的默认值. 这些默认值基本上都定义在struts-default.xml/default.properties文档中. <struts> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="Menu"> <result>/menu/Menu.jsp</result> </action> </package> <include file="manning/chapterTwo/chapterTwo.xml"/> <include file="manning/chapterThree/chapterThree.xml"/> </struts>