Struts1---从入门到精通.ppt
《Struts1---从入门到精通.ppt》由会员分享,可在线阅读,更多相关《Struts1---从入门到精通.ppt(67页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、成为软件行业的武林高手成为软件行业的武林高手少林派少林派 (照着练照着练)注重根基,循序渐进注重根基,循序渐进多学,多练,多思,多改。多学,多练,多思,多改。武当派武当派 (想着练想着练)善长技巧,以柔克刚善长技巧,以柔克刚多掌握一些编程技巧,多去考虑一下性能,效率,重构一些代码多掌握一些编程技巧,多去考虑一下性能,效率,重构一些代码,多分析一下代码的优劣性多分析一下代码的优劣性逍遥派逍遥派 (创新练创新练)任意发挥,注重人性化设计(如何让使用者更易上手,更易于使任意发挥,注重人性化设计(如何让使用者更易上手,更易于使用)用),注重美感(交互性强),注重哪种架构(语言)的优劣选择,注重美感(交
2、互性强),注重哪种架构(语言)的优劣选择,编程软件就是设计一件艺术作品。编程软件就是设计一件艺术作品。Struts1 Lession 1Struts1 Lession 1为什么要用为什么要用SSH框架框架 使用框架,可以让我们更简单的开发,更容易的架构项目,更好的提升程序性能.Struts工作流程工作流程第一个第一个struts程序程序多层架构概述多层架构概述JAVA EE开发的体系结构开发的体系结构管理模型层管理模型层springController控制层控制层1、Servlet2、Struts1(MVC)3、Struts2(webwork)Hibernate(mybatis)DBDAOPO
3、View视图层视图层JspHtmlflashService多层架构概述多层架构概述分层的目的:分层的目的:将显示、业务逻辑、数据访问等功能完全分开,避免相将显示、业务逻辑、数据访问等功能完全分开,避免相互之间的影响,实现模块间的松耦合,简化维护成本互之间的影响,实现模块间的松耦合,简化维护成本。所谓所谓“耦合耦合”,指将两个元素像链子一样连接在一,指将两个元素像链子一样连接在一起。在软件领域,起。在软件领域,“耦合耦合”一般指软件组件之间的一般指软件组件之间的依赖程度。依赖程度。 呈现层:用呈现层:用struts实现实现MVC 。业务逻辑层:用业务逻辑层:用spring持久化层:用持久化层:用
4、hibernateStrutsStruts是什么?是什么?Struts的目标是提供一个开发的目标是提供一个开发Web应用的开源框架。应用的开源框架。Struts鼓励基于鼓励基于M2模式(即模式(即MVC设计模式)来开发程序。设计模式)来开发程序。回顾回顾Model1设计模式设计模式以以JSP为中心的开发模型,称为为中心的开发模型,称为Model1(JSP+JAVABEAN )。1.业务逻辑与表示逻辑混和,不利维护与重用。业务逻辑与表示逻辑混和,不利维护与重用。2. HTML中嵌入了大量的中嵌入了大量的JAVA代码代码3.验证、流程控制、更新程序的状态全部在验证、流程控制、更新程序的状态全部在J
5、SP中完成中完成回顾回顾Model2设计模式设计模式ModelViewControllerMVCMVCMVCMVC是一种设计模式是一种设计模式M是指是指数据模型数据模型,V是指是指用户界面用户界面,C则是则是控制器控制器。使用使用MVC的目的是将的目的是将M和和V的实现代码分离的实现代码分离C确保确保M和和V的同步,的同步,用来控制用来控制M层和层和V层层,一旦,一旦M改变,改变,V应该同步更新。应该同步更新。被推荐为被推荐为Sun公司公司J2EE平台的设计模式。平台的设计模式。StrutsStruts实现的实现的MVCMVC框架框架 web.xmlStrutsStruts框架组件框架组件Ac
6、tionServlet类控制导航流。类控制导航流。ActionServlet根据根据URI来来决定哪个决定哪个Action类类被用于处理请求,被用于处理请求,Action可以可以校验输入校验输入,并访问业务层以便从,并访问业务层以便从数据库检索信息。数据库检索信息。Action需要知道页面提交了哪些内容,所以由需要知道页面提交了哪些内容,所以由ActionServlet根据请求根据请求URI来决定来决定将请求参数绑定将请求参数绑定到哪个到哪个ActionForm中,并中,并传入传入Action。Action在完成业务逻辑后,返回一个在完成业务逻辑后,返回一个ActionForward对象对象,
7、ActionServlet根据根据ActionForward对象中的对象中的路径来调用页面完成响应路径来调用页面完成响应。Struts将这些信息绑定在一个将这些信息绑定在一个ActionMapping对象对象中,一个中,一个ActionMapping对应一个请求对应一个请求URI,当请求路径到达的时候,当请求路径到达的时候,ActionServlet就会就会查询查询ActionMapping对象,对象,ActionMapping对象将对象将告诉告诉ActionServlet哪个哪个Action类会被类会被 调用调用、哪个、哪个ActionForm类被用于传类被用于传 递页面数据以及哪些递页面数
8、据以及哪些ActionForward 将被用于转向。将被用于转向。Action、ActionForm、 ActionForward等,等,Struts通过一通过一 个配置文件:个配置文件:struts-config.xml文件来文件来 定义。定义。String path = request.getRequestURI();path = path.subString(path.indexOf(/, 1), path.lastIndexOf(.);开始一个开始一个StrutsStruts项目项目在在Apache网站上下载网站上下载Struts,将文件解压。将,将文件解压。将lib路径下的所路径下的
9、所有有JAR文件复制到文件复制到Web应用的应用的WEB-INF/lib路径下。路径下。http:/www.apache.org 官方网站官方网站http:/struts.apache.org/下载下载struts例例:http:/struts.apache.org/download.cgi#struts1310 1.31版本版本或在或在MyEclipce的集成环境中加载的集成环境中加载Struts的的JAR文件。文件。第一个第一个Struts项目,实现用户登录操作项目,实现用户登录操作配置配置ActionServletActionServlet配置配置ActionServlet :修改修改w
10、eb项目的项目的web.xml文件,添加如下文件,添加如下Servlet映射配置。映射配置。 action org.apache.struts.action.ActionServlet config /WEB-INF/struts-config.xml 2 action *.do (可选可选)没有单位,表示的是没有单位,表示的是服务器启服务器启动的时候初始化加载的顺序动的时候初始化加载的顺序, 数值数值越越大大,加载优先级别越,加载优先级别越低低。 如果我如果我们在们在web服务器启动的时候加载多个服务器启动的时候加载多个程序,程序, 那么就用这个数值的相对大那么就用这个数值的相对大小来确定那
11、几个程序的加载顺序。小来确定那几个程序的加载顺序。 给容器一个给容器一个action servlet的权重。如果设置为的权重。如果设置为2,则,则允许其他允许其他servlet在需要的时候首先装入在需要的时候首先装入 这段告诉容器将匹配这段告诉容器将匹配*.do格式的文件请求转发到格式的文件请求转发到action servlet。这就是我们所配的。这就是我们所配的action。不匹配这种格式的文件请求将。不匹配这种格式的文件请求将不被不被struts处理。处理。 参数参数:config 缺省值缺省值:/WEB-INF/struts-config.xml 说明说明:包含配置信息的包含配置信息的x
12、ml文件上下问相关路径文件上下问相关路径 参数参数:debug 缺省值缺省值:0 说明说明: 调试的详细级别,控制针对这个调试的详细级别,控制针对这个servlet将记录多少信息。将记录多少信息。 接受的值为接受的值为0(off)和和1(最不严格最不严格)直到直到6(最严格最严格)。 大多数大多数struts组件设置为级别组件设置为级别0或或2 参数参数:detail 缺省值缺省值:0 说明说明: 用来处理应用配置文件的用来处理应用配置文件的Digester的的调试详细级别调试详细级别。 接受的值为接受的值为0(off)和和1(最不严格最不严格)直到直到6(最严格最严格)。 编写几个必要的文件
13、编写几个必要的文件一个一个ActionForm(UserForm)填充页面表单封装成一个类填充页面表单封装成一个类一个一个Action(LoginAction)通过通过action调用业务逻辑,转发等操作进行处理调用业务逻辑,转发等操作进行处理struts-config.xml文件文件Struts核心配置文件。核心配置文件。JSP页面页面登录页面登录页面 (login.jsp)成功页面(成功页面(welcome.jsp)失败页面(失败页面(error.jsp)创建创建struts-config.xmlstruts-config.xml在在WEB-INF目录下创建目录下创建struts-conf
14、ig.xml文件,并添加如下内容文件,并添加如下内容 struts-config.xml文件,是由文件,是由ActionServlet读取的配置文件,它读取的配置文件,它定义了所有关于定义了所有关于Action、ActionForm、ActionForward等的详细等的详细信息信息创建创建ActionFormActionFormActionForm是一个是一个JavaBean,需继承,需继承org.apache.struts.action.ActionForm类,它类,它捕获捕获通过通过HTTP请求传送的参数请求传送的参数ActionForm针对每个针对每个HTML表单中的字段表单中的字段具
15、有一个对应的属性具有一个对应的属性ActionServlet匹配请求中的参数和匹配请求中的参数和ActionForm中的属性,并中的属性,并调用调用ActionForm中的中的setter方法方法,将参数传入,将参数传入ActionFormActionForm中的中的内部属性内部属性全部定义为全部定义为私有私有的(的(private),并),并通过通过公共公共(public)的的getter/setter方法来访问方法来访问创建创建ActionActionAction是一个是一个Java类,需继承类,需继承org.apache.struts.action.Action类类ActionServl
16、et将会组装将会组装ActionForm,并将它传递给,并将它传递给ActionAction 通常负责:通常负责:输入输入校验校验调用业务逻辑类调用业务逻辑类执行业务逻辑操作执行业务逻辑操作决定返回哪个决定返回哪个ActionForward添加添加ActionFormActionForm配置配置在在struts-config.xml文件中,在文件中,在标签的内部,标签的内部,添加如下配置:添加如下配置: 标签内部可以包含多个标签内部可以包含多个标签标签标签必须指定标签必须指定name和和type属性属性name属性是给此属性是给此ActionForm一个标识名称一个标识名称type属性指定了此
17、属性指定了此ActionForm是哪个类,必须是全路径的类名是哪个类,必须是全路径的类名添加添加ActionAction配置配置在在struts-config.xml文件中,紧接着文件中,紧接着标签的下面,标签的下面,添加对添加对LoginAction的配置:的配置: 标签可以配置的重要属性包括标签可以配置的重要属性包括path-从页面上通过一个什么样的从页面上通过一个什么样的URL路径来访问路径来访问Action(不包(不包含含.do)type 访问这个访问这个URL的时候,调用哪个的时候,调用哪个Action类,这是类,这是Action的的全路径类名全路径类名name 这个属性用来标识哪个
18、这个属性用来标识哪个ActionForm将被创建,并将提交将被创建,并将提交的表单组件给它的表单组件给它scope FormBean的作用域范围,可以取值为的作用域范围,可以取值为session和和request,一般取值都是,一般取值都是request创建创建jspjsp文件文件创建创建login.jsp文件,添加一个表单,文件,添加一个表单,action为为login.do,这,这个个login.do的意思,将会告诉的意思,将会告诉struts的的ActionServlet,它将,它将需要调用哪个需要调用哪个Action来处理这个表单的请求。来处理这个表单的请求。创建创建welcome.j
19、sp文件,输入登录成功的欢迎信息文件,输入登录成功的欢迎信息创建创建error.jsp文件,输入登录失败的提示信息文件,输入登录失败的提示信息运行流程运行流程从浏览器输入地址:从浏览器输入地址:http:/localhost:8080/StrutsDemo/login.jsp,Tomcat将按通常将按通常情况来处理这个情况来处理这个JSP并返回浏览器。并返回浏览器。提交表单,实际上是提交到了这样一个提交表单,实际上是提交到了这样一个URL地址:地址:http:/localhost:8080/StrutsDemo/login.do,Tomcat将会根据将会根据web.xml的配置,将这个请求发送
20、给相应的的配置,将这个请求发送给相应的Servlet,在我们的应,在我们的应用中,用中,Tomcat将会把这个请求发送给将会把这个请求发送给org.apache.struts.action.ActionServlet这个类。这个类。然后然后ActionServlet根据根据struts-config.xml的配置信息,调用的配置信息,调用LoginAction对象去处理这个请求,在此之前,它会将页面表单对象去处理这个请求,在此之前,它会将页面表单的请求数据封装到的请求数据封装到UserForm对象中,并传递给对象中,并传递给LoginAction。LoginAction返回一个返回一个Acti
21、onForward对象,包含了将要对象,包含了将要转向的转向的路径信息路径信息。ActionServlet根据这个根据这个ActionForward对象所包含的路径信息,对象所包含的路径信息,调用相应的页面去执行响应。调用相应的页面去执行响应。运行流程图运行流程图Struts1 lession 2Struts1 lession 2Struts与与mvc单例模式单例模式Struts中的标签中的标签 html,bean,logicStruts中的国际化中的国际化StrutsStruts与与MVCMVC视图(视图(View)在使用在使用Struts框架的框架的web应用程序中,应用程序中,JSP以及
22、相关的技术(如以及相关的技术(如Taglib)等共同)等共同组成视图层组成视图层,这一层的主要职责是,这一层的主要职责是显示用户界面显示用户界面。Struts提供了很多机制让我们能更加轻松地创建视图提供了很多机制让我们能更加轻松地创建视图控制器(控制器(Controller)Struts中,中,ActionServlet是是控制器层组件控制器层组件模型(模型(Model)模型包括:系统的内部状态以及改变系统状态的动作模型包括:系统的内部状态以及改变系统状态的动作Struts中的中的Action和和ActionForm是是模型模型的一部分的一部分Struts建议把建议把”做什么做什么”(Acti
23、on)和和”如何做如何做”(业务逻辑业务逻辑)相分离相分离创建业务逻辑处理类创建业务逻辑处理类使用单例模式使用单例模式(Singleton)来创建业务逻辑处理类来创建业务逻辑处理类将将Action中的业务处理代码移到这个类中中的业务处理代码移到这个类中创建一些异常处理类,由这个类来产生,由创建一些异常处理类,由这个类来产生,由Action来捕获。来捕获。一般一般Singleton模式通常有几种形式模式通常有几种形式:public class Singleton private Singleton()/注意这是注意这是private 只供内部调用只供内部调用private static Sing
24、leton instance = new Singleton();/这里提供了这里提供了一个供外部访问本一个供外部访问本class的静态方法的静态方法,可,可以直接访问以直接访问public static Singleton getInstance() return instance; 第二种形式第二种形式:public class Singleton private Singleton() private static Singleton instance = null;public static synchronized Singleton getInstance() if (instan
25、ce=null)instancenew Singleton();return instance; 页面之间数据的传递页面之间数据的传递如何将数据从如何将数据从Action中传递到下一个中传递到下一个JSP页面?页面?一般使用一般使用request.setAttribute方法:方法:在在Action中,使用中,使用request.setAttribute(String name,Object data)方法往方法往request中设置参数中设置参数在在JSP中,使用中,使用request.getAttribute(String name)来获取相应的来获取相应的参数参数容器接收页面请求容器接收
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Struts1 入门 精通
限制150内