Java EE 课程ppt课件 第2章 Struts 2基础

上传人:杨**** 文档编号:54211814 上传时间:2018-09-09 格式:PPT 页数:59 大小:1.37MB
返回 下载 相关 举报
Java EE 课程ppt课件 第2章 Struts 2基础_第1页
第1页 / 共59页
Java EE 课程ppt课件 第2章 Struts 2基础_第2页
第2页 / 共59页
Java EE 课程ppt课件 第2章 Struts 2基础_第3页
第3页 / 共59页
Java EE 课程ppt课件 第2章 Struts 2基础_第4页
第4页 / 共59页
Java EE 课程ppt课件 第2章 Struts 2基础_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《Java EE 课程ppt课件 第2章 Struts 2基础》由会员分享,可在线阅读,更多相关《Java EE 课程ppt课件 第2章 Struts 2基础(59页珍藏版)》请在金锄头文库上搜索。

1、第2章 Struts 2基础,2.1 Struts 2框架开发入门,2.2 Struts 2原理及工作流程,2.3 解密Struts 2程序文件,2.1 Struts 2框架开发入门,2.1.1 MVC基本思想 MVC把应用程序分成3大基本模块:模型(Model,即M)、视图(View,即V)和控制器(Controller,即C),它们(三者联合即MVC)分别担当不同的任务。图2.1显示了这几个模块各自的职能及相互关系。,2.1.2 MVC实现方式,传统的Java EE开发采用JSPServletJavaBean的方式来实现MVC(如【实例1.1】),但它有一个缺陷:程序员在编写程序时必须继承

2、HttpServlet类、覆盖doGet()和doPost()方法,严格遵守Servlet代码规范编写程序,形如: package x.xx.servlet; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class XxxServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOEx

3、ception public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException doGet(request,response); ,2.1.2 MVC实现方式,用Struts 2实现的MVC系统与传统的用Servlet编写的MVC系统相比,两者在结构上的区别如图2.2所示。,2.1.3 简单Struts 2开发,1加载Struts 2包 登录http:/struts.apache.org/,下载Struts 2完整版,本书使用的是S

4、truts 2.3.16.3。将下载的文件struts-2.3.16.3-all.zip解压缩,得到文件夹包含的目录结构如图2.3所示,这是一个典型的Web结构。,2.1.3 简单Struts 2开发,大部分的时候,使用Struts 2的Java EE应用并不需要用到Struts 2的全部特性,开发Struts 2程序只需用到lib下的9个jar包,包括: (1)传统Struts 2的5个基本类库。 struts2-core-2.3.16.3.jar xwork-core-2.3.16.3.jar ognl-3.0.6.jar commons-logging-1.1.3.jar freemar

5、ker-2.3.19.jar (2)附加的4个库。 commons-io-2.2.jar commons-lang3-3.1.jar javassist-3.11.0.GA.jar commons-fileupload-1.3.1.jar,2.1.3 简单Struts 2开发,将它们一起复制到项目的WebRootWEB-INFlib路径下,右击项目名,从弹出菜单中选择“Refresh”按钮刷新即可,加载成功的项目工程目录树如图2.4所示。,2.1.3 简单Struts 2开发,2配置web.xml Struts 2框架需要在项目web.xml文件中配置,代码所示。 3实现控制器Action 基

6、于Struts 2框架的Java EE应用程序使用自定义的Action(控制器)来处理深层业务逻辑,完成用户想要完成的功能。本例定义名为“login”的控制器,判断登录用户名和密码的正确性。在项目src下建立包org.action,在包里创建LoginAction类。 LoginAction.java代码所示。,2.1.3 简单Struts 2开发,4配置struts.xml 在编写好Action(控制器)的代码之后,还需要进行配置才能让Struts 2识别Action。在src下创建文件struts.xml(注意文件位置和大小写),输入如下的配置代码: /main.jsp /error.js

7、p ,2.1.3 简单Struts 2开发,5编写JSP 本例login.jsp(登录页)、main.jsp(欢迎主页)这两个JSP文件均使用Struts 2的标签进行了重新改写。 登录页login.jsp,代码为。 欢迎主页main.jsp,代码如下: 欢迎使用 ,您好!欢迎使用图书管理系统。 ,2.2 Struts 2原理及工作流程,2.2.1 Struts 2工作原理 Struts 2框架内部是基于一种称为“过滤器”的机制运作的,其工作原理图如图2.5所示,该图出自Struts 2官方发布的技术文档,清楚地概括了Struts 2的整个工作过程。,2.2.1 Struts 2工作原理,(1

8、)客户端提交一个(HttpServletRequest)请求。 (2)请求被提交到一系列(主要是3层)的过滤器(Filter),如(ActionContextCleanUp、其他过滤器、FilterDispatcher)。 (3)FilterDispatcher接收到请求后,询问ActionMapper是否需要调用某个Action来处理这个(HttpServletRequest)请求,如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求的处理交给ActionProxy。 (4)ActionProxy通过Configuration Manager(s

9、truts.xml)询问框架的配置文件,找到需要调用的Action类(该Action类一般是程序员自定义的处理请求的类)。 (5)ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action。但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)。 (6)一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果Result。,2.2.2 Struts 2项目运行流程,了解了Struts 2的工作原理,再结合【

10、实例2.1】就可以总结出一个基于Struts 2开发的项目的运行流程了,如图2.6所示。,2.3 解密Struts 2程序文件,2.3.1 Action类应用详解 1使用ActionSupport 继承ActionSupport类能够帮助程序员更好地完成一些工作,它实现了5个接口并包含了一组默认的实现。如果编程中想要用到该类提供的某些功能,只要重写它提供的方法就可以了,例如,要实现验证功能,只需在自定义Action类中重写validate()方法即可。 public class ActionSupport implements Action, Validateable, ValidationA

11、ware, TextProvider, LocaleProvider,Serializable ,2.3.1 Action类应用详,(1)Action接口:该接口提供了5个常量及一个execute()方法。代码如下: public interface Action public static final String SUCCESS = “success“; public static final String NONE = “none“; public static final String ERROR = “error“; public static final String INPUT

12、= “input“; public static final String LOGIN = “login“; public String execute() throws Exception; 如果Action类继承了ActionSupport类,就可以直接应用这几个常量,比如在【实例2.1】中的Action代码: if(l!=null) Map session = ActionContext.getContext().getSession(); session.put(“login“, l); return SUCCESS; /验证成功返回SUCCESS,实际返回的是字符串“success“

13、 else return ERROR; /验证失败返回ERROR,实际返回的是字符串“error“ ,2.3.1 Action类应用详,(2)Validateable接口:该接口提供了一个validate()方法用于校验表单数据,在实际应用中只要在Action类中重写该方法即可。【实例2.1】的程序并没有对填入的数据进行任何判断,即使用户未输入任何内容,提交后也会查询数据库,在一般情况下是不会允许的。这时就可以在Action类中重写validate()方法,然后在该方法中对取得的数据进行判断,如果为空或其他不允许的情况就可以保存错误信息。该方法是在执行execute()方法之前执行的。 (3)

14、ValidationAware接口:该接口定义了一些方法用来对Action执行过程中产生的信息进行处理。例如,该接口中提供了addFieldError(String fieldname,String errorMessage)方法用来在验证出错时保存错误信息。,2.3.1 Action类应用详,(4)TextProvider接口:该接口中提供了一系列getText()方法,用于获得对应的国际化信息资源。在Struts 2中的国际化信息资源都是以key-value对出现的,通过使用该接口中的getText()方法可以用key来获得相应的value值(国际化内容会在第6章讲解)。 (5)Local

15、eProvider接口:该接口提供了一个getLocale()方法,用于国际化时获得语言/地区信息。,2.3.1 Action类应用详,2Action传值 Action可以通过其属性获取页面上表单文本框中用户输入的值,代码为。 使用该传值方式首先要把字段封装成一个类,并生成其get和set方法,就是通常说的JavaBean了。因【实例2.1】的项目中已编写好了JavaBean类Login.java,故只须在Action中改变写法: package org.action; public class LoginAction extends ActionSupport private Login l

16、ogin; /处理用户请求的 execute 方法 public String execute() throws Exception /属性 login 的 get/set 方法 public Login getLogin() return login; public void setLogin(Login login) this.login = login; ,2.3.1 Action类应用详,(1)通过ActionContext访问。 ActionContext类提供了一个静态的getContext()方法来获得ActionContext对象,然后根据其对象来获得一些Servlet API

17、的对象。例如: ActionContext ac=ActionContext.getContext(); /获得ActionContext对象 Map session=ac.getSession(); /获得session对象 Map application=ac.getApplication(); /获得application对象 Map request=ac.get(); /获得request对象 由于“request”和“response”比较特殊,也是在开发中经常会用到的,所以Struts 2提供了专门的类来获取,即“ServletActionContext”。 HttpServletRequest request=ServletActionContext.getRequest(); /获得HttpServletRequest对象 HttpServletResponse response =ServletActionContext.getResponse(); /获得HttpServletResponse对象 HttpSession session=request.getSession(); /获得HttpSession对象,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > Java

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号