您好,欢迎访问三七文档
Struts文档struts初步见面Mvc与servletServlet的优点1、是mvc的基础,其他的框架比如struts1,struts2,webwork都是从servlet基础上发展过来的。所以掌握servlet是掌握mvc的关键。2、Servlet把最底层的api暴漏给程序员,使程序员更能清楚的了解mvc的各个特点。3、程序员可以对servlet进行封装。Struts2就是从servlet中封装以后得到的结果。4、市场上任何一个mvc的框架都是servlet发展过来的,所以要想学好struts2这个框架,了解servlet的运行机制很关键。Servlet的缺点1、每写一个servlet在web.xml中都要做相应的配置。如果有多很servlet,会导致web.xml内容过于繁多。2、这样的结构不利于分组开发。3、在servlet中,doGet方法和doPost方法有HttpServletRequest和HttpServletResponse参数。这两个参数与容器相关,如果想在servlet中作单元测试,则必须初始化这两个参数。4、如果一个servlet中有很多个方法,则必须采用传递参数的形式,分解到每一个方法中。重构servlet针对servlet以上的特点,我们可以对servlet进行重构,使其开发起来更简单。更容易,更适合团队协作。重构的目标:1、只写一个serlvet或者过滤器,我们这里选择过滤器。2、不用再写任何的servlet,这样在web.xml中写的代码就很少了。3、原来需要写serlvet,现在改写action。4、在action中把HttpServletRequest参数和HttpServletResponse参数传递过去。5、在过滤器中通过java的反射机制调用action。Struts2介绍1.什么是Struts2?Struts2是一款优秀的mvc框架Struts2是由传统的Struts1和webwork两个经典的mvc框架发展而来,与sturts1相比允许使用javabean作位Action,可以与ServletApi进行解耦合更加容易测试支持视图技术基于Aop思想的拦截机制提供了很好的扩展性2、MVC:是一种思想,是一种模式,将软件分为Model模型、View视图、Controller控制器struts2就是web层开发框架,符合MVC模式*struts1、webwork、jsf、SpringMVC都是MVC它是面向对象程序设计语言应该遵守的规范MVC的特性:**多个视图视图对应一个模型**模型返回的诗句与显示逻辑分离**应用层分为三层降低了各层之间的耦合性提高了可扩展性**控制层把不同的视图组合在一起完成不同的请求在当前请求层中包含了用户的权限**mvc更符合软件工程化的管理精神各层负责不同的工作每一层的组件有相同的特性有利于通过工程化和工具产生程序代码JavaEE软件开发三层架构web层(表现层)业务逻辑层数据持久层3、Struts2和Struts1关系没有关系,Struts2全新框架,引入WebWork很多技术和思想,Struts2保留Struts1类似开发流程*Struts2内核webworkXwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL–theObjectGraphNavigationLanguage),IoC(InversionofControl反转控制)容器等环境搭建二、struts2快速入门1、下载开发包、目录结构apps:struts2官方demodocs:文档lib:jar包src:源码3、导入jar包到开发工程只需要导入apps/struts2-blank.war中所有jar包4、编写页面1.加载jar库增加loggingfreemarkerognlstruts2corexwork2这5个2.编写页面Login.jspbodyformaction=login.actionmethod=postusername:inputtype=textname=usernamebrpassword:inputtype=passwordname=passwordbrinputtype=submitvalue=submit/form/bodyresult.jspbodyusername:%=request.getParameter(username)%brpassword:%=request.getParameter(password)%/bodyLoginActionpackagecom.test.action;publicclassLoginAction{privateStringusername;privateStringpassword;publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}publicStringexecute()throwsException{returnsuccess;}}2编写struts.xml?xmlversion=1.0encoding=UTF-8?!DOCTYPEstrutsPUBLIC-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN头部信息3在web.xml配置struts2前端控制器(Filter)filterfilter-namestruts2/filter-namefilter-classorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter/filter-class/filterfilter-mappingfilter-namestruts2/filter-nameurl-pattern/*/url-pattern/filter-mapping配置细节struts.xml?xmlversion=1.0encoding=UTF-8?!DOCTYPEstrutsPUBLIC-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN=struts2extends=struts-defaultactionname=loginclass=com.test.action.LoginActionresult/result.jsp/result/action/package/struts2、配置struts.xml提示问题如果安装Aptana编辑器,请不要用Aptana自带xml编辑器编写struts2配置文件struts.xml提示来自于DTD约束,!DOCTYPEstrutsPUBLIC-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN如果可以上网,自动缓存dtd,提供提示功能如果不能上网,也可以配置本地DTD提示***导入DTD时,应该和配置DTD版本一致struts-2.3.4\src\core\src\main\resourcesstruts2运行流程分析1、运行流程org.apache.struts2.dispatcher.ng.filter包请求----StrutsPrepareAndExecuteFilter核心控制器(预处理执行过滤)-----Interceptors拦截器(实现代码功能)-----Action的execute---结果页面Result*拦截器在struts-default.xml定义*执行拦截器是defaultStack中引用拦截器Struts中Action相关配置文件学习路径1)、struts.xml常量配置(配置文件顺序)、Action访问(ServletAPI)、结果集(使用Struts2编写简单案例)2)、请求数据3)、响应页面生成struts2配置文件由核心控制器加载StrutsPrepareAndExecuteFilter(预处理,执行过滤)源码了解加载过程init_DefaultProperties();//[1]----------org/apache/struts2/default.propertiesinit_TraditionalXmlConfigurations();//[2]---struts-default.xml,struts-plugin.xml,struts.xmlinit_LegacyStrutsProperties();//[3]---自定义struts.propertiesinit_CustomConfigurationProviders();//[5]-----自定义配置提供init_FilterInitParameters();//[6]-----web.xmlinit_AliasStandardObjects();//[7]----Bean加载结论:default.properties该文件保存在struts2-core-2.3.4.jar中org.apache.struts2包里面(常量的默认值)struts-default.xml该文件保存在struts2-core-2.3.7.jar(Bean、拦截器、结果类型)struts-plugin(插件).xml该文件保存在struts-Xxx-2.3.7.jar(在插件包中存在,配置插件信息)struts.xml该文件是web应用默认的struts配置文件(实际开发中,通常写struts.xml)******************************struts.properties该文件是Struts的默认配置文件(配置常量)web.xml该文件是Web应用的配置文件(配置常量)struts.xml完成Action相关配置1)必须要为action元素配置package元素(struts2围绕package进行Action的相关配置)配置package三个常用属性packagename=defaultnamespace=/extends=struts-defaultname包名称,在struts2的配置文件文件中包名不能重复,name并不是真正包名,只是为了管理Actionnamespace和action的name属性,决定Action的访问路径(以/开始)extends继承哪个包,通常开发中继承struts-default包(struts-default包在核心包下的struts-default.xml定义)为什么继承这个包*继承struts-default包后,可以使用包中定义拦截器和结果类型2)Action的通过action元素配置actionname=helloclass=cn.guigu.struts2.demo1.HelloActionaction的name和pac
本文标题:Struts2文档
链接地址:https://www.777doc.com/doc-5545052 .html