当前位置:文档之家› 应用Struts2框架中的“Field-Driven Action”技术实现用户登录系统的应用实例

应用Struts2框架中的“Field-Driven Action”技术实现用户登录系统的应用实例

应用Struts2框架中的“Field-Driven Action”技术实现用户登录系统的应用实例
应用Struts2框架中的“Field-Driven Action”技术实现用户登录系统的应用实例

1.1通过代码实例跟我学Struts2框架从入门到精通——应用Struts2框架中的“Field-Driven Action”技术实现用户登录系统的应用实例

Action根据FormBean的不同可以分为二类,一类是Field-Driven(字段驱动的)Action,Action将直接用自己的字段来充当FormBean的功能,上面的例子就是使用这种方式。它一般用在页面表单比较简单的情况使用,而且可以直接用域对象作为Action的字段,这样就不用在另写FormBean,减少了重复代码。

另一类是Model-Driven(模型驱动的)Action。

1、修改UserInfoAction类并在该类中定义出下面的成员属性和get/set方法

private String userName=null;

private String userPassWord=null;

private String verifyCodeDigit=null;

private int type_User_Admin;

Field-Driven(字段驱动)Action,Action拥有自己的属性,这些属性一般是Java的基本类型。表单字段直接和Action的属性相互对应。

2、编程该Action类

package com.px1987.sshwebcrm.action;

import java.text.DateFormat;

import java.util.Date;

import com.opensymphony.xwork2.Action;

import com.opensymphony.xwork2.ActionSupport;

// public class UserInfoAction implements Action

public class UserInfoAction extends ActionSupport{

private String userName=null;

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

https://www.doczj.com/doc/9212309474.html,erName = userName;

}

public String getUserPassWord() {

return userPassWord;

}

public void setUserPassWord(String userPassWord) {

https://www.doczj.com/doc/9212309474.html,erPassWord = userPassWord;

}

public String getVerifyCodeDigit() {

return verifyCodeDigit;

}

public void setVerifyCodeDigit(String verifyCodeDigit) { this.verifyCodeDigit = verifyCodeDigit;

}

public int getType_User_Admin() {

return type_User_Admin;

}

public void setType_User_Admin(int type_User_Admin) { this.type_User_Admin = type_User_Admin;

}

private String userPassWord=null;

private String verifyCodeDigit=null;

private int type_User_Admin;

public String defaultActionMethod() {

// resultMessage ="指定的目标方法或者Action类不存在!";

return SUCCESS;

}

public String doUpdateUser() {

resultMessage ="某个用户的信息已经成功修改完毕,修改的时间是:" +

DateFormat.getInstance().format( new Date());

return SUCCESS;

}

public String doDeleteUser() {

resultMessage ="某个用户的信息已经成功删除完毕,删除的时间是:" +

DateFormat.getInstance().format( new Date());

return SUCCESS;

}

public String doUserLogin() {

String verifyCodeDigitInSession="UFO123";

if(!verifyCodeDigit.equals(verifyCodeDigitInSession)){

resultMessage = "你输入的验证码不是系统提示的验证码!";

return this.SUCCESS;

}

//以后真正改变为访问数据库表

boolean returnResult=

getUserName().equals("yang1234")

&&getUserPassWord().equals("12345678");

if(returnResult){

resultMessage =getUserName()+"您登录成功!";

}

else{

resultMessage =getUserName()+"您的身份信息无效!";

}

return Action.SUCCESS;

}

public String doUserRegister() {

resultMessage = " 您好!这是在另一个自定义方法处理的注册功能!";

return this.SUCCESS;

}

public String execute() {

resultMessage = "您好!您登陆成功!时间为:"+

DateFormat.getInstance().format( new Date());

return this.SUCCESS;

}

private String resultMessage;

public String getResultMessage() {

return resultMessage;

}

public void setResultMessage(String resultMessage) {

this.resultMessage = resultMessage;

}

public UserInfoAction() {

}

}

3、保证登陆页面userLogin.jsp中的action属性为下面的状态

method="post" >

输入右面的认证码:

用户类型:

您的名称:

您的密码:

4、部署本项目,再执行本系统中的用户登陆功能页面

(1)启动本示例的测试页面http://127.0.0.1:8080/sshwebcrm/userManage/userLogin.jsp

(2)输入错误的验证码后将提示相关的错误信息

(3)输入错误的身份信息

(4)如果身份信息不正确时(比如,输入错误的密码),将出现下面的错误状态

(5)输入正确的身份信息

(6)将出现下面的提示,并且正确地获得了用户名称的值

5、作业

采用“Field-Driven Action”技术实现用户注册功能的doUserRegister()方法。

因此,出现中文乱码!如何解决?

Struts2框架工作原理及应用体会

2012年第11卷第6期 产业与科技论坛2012.(11).6 Industrial &Science Tribune Struts2框架工作原理及应用体会 □宋 君 张家爱 【摘要】通过针对特定用户的分析,搭建以Struts2为技术核心的旅行社管理系统。本文简单的介绍了MVC 、 Struts2的工作原理,同时总结了在项目制作过程中所得到的心得。 【关键词】 Struts2;MVC ;FilterDispatcher ;Action 【基金项目】本文为大学生科技创新院级基金项目(编号:2011070)成果 【作者单位】宋君,吉林农业科技学院信息工程学院;张家爱,吉林农业科技学院信息工程学院教师 本着锻炼自我与积极参与到实用性技术的目标,以发掘自身创新意识为前提。利用空闲时间,在老师的指导下,进行了一次大学生创新项目的实践性活动。本着实用原则,以某中小旅行社为客户(根据用户需求,匿名),以Struts2框架为基点,进行了一次旅行社管理系统的开发。在项目结束之余, 特将在项目过程中经历的种种认识进行了简单的总结,希望让阅读本文的朋友们,更多的参与到此类活动中。 一、基础思想— ——MVC 简述作为时下经典框架之一, MVC 具有其独特的价值。MVC 框架简单的说,就是将数据模型与用户视图进行分离。通过控制器进行协调处理的一种结构是框架。同时,也是本文中要讨论的Sturts2框架的基础思想。 M 是指模型层(Model ),V 是指用户视图(View ),C 则是指控制器 (Controller )。这种划分方式是以将模型层与视图层进行代码分离,从而降低两者之间的耦合性,使同一程序可以使用不同形式进行表现。不同层之间的修改不会或尽量少的印象到其他层功能的史前为前提。有效的提高的代码的维护性和设计难度。 图1 二、 Struts2工作原理(一)Struts2框架组成。Struts2框架由三个主要部分组成:核心控制器、业务控制器,以及由用户实现的业务逻辑组件。这里我们将侧重于核心控制器与业务控制器的理解与说明。 (二)核心控制器:FilterDispatcher 。FilterDispatcher 是Struts2框架的核心控制器,在此,我们可以将FilterDispatcher 看作一个类似于过滤网的过滤器。当用户发出请求,并到达Web 硬哟那种时,该过滤器会过滤用户请求。如果用户请求的结尾为action ,则将该请求转入Struts2框架进行处理。当Struts2框架获得了*.actio 请求后,会根据请求前面“*”的那部分内容,决定调用哪个业务逻辑组件作为响应单位。这里需要说明的是Struts2用来处理用户请求的Action 实例并不是业务控制器,而是作为Action 的代理———正因为Struts2的一大特点,与Servlet API 的非耦合性,使得用户实现的业务控制器无法直接处理用户请求。有效的提高了后期调试维护的效率。而Struts2框架再次提供了了一系列的拦截器。这些拦截器负责将HttpServletRequest 请求的参数解析出来,传入Action 中,并毁掉Action 的Execute 方法来处理用户请求。用户实现的Action 类仅作为Struts2的Action 代理的代理目标。用户实现的业务控制器则包含了对用户请求的处理。用户的请求数据包含在HttpServletRequest 对象中,而用户的Action 类无需访问HttpServletRequest 对象。拦截器负责将HttpServletRequest 里的请求数据解析出来,并传给业务逻辑组件Action 实例。 (三)业务控制器。业务控制器就是前文提到的用来实现用户Action 的实力,这里的每个Action 类通常包含有一个execute 方法,当业务控制器处理完用户的请求后,该方法将会针对此次处理返回一个字符串— ——该字符串就是一个逻辑树图名。当程序开发人员开发出系统所需要的业务控制器后,还需要针对性的配置Struts2的Action ,即需要配置Ac- tion 的以下三个部分:(1)Action 所处理的URl 。(2)Action 组件所对应的实现类。(3)Action 里包含的逻辑试图和物理资源之间的对应关系。每个Action 都要处理一个用户请求,而用户请求则总是包含有指定的URL 。当核心控制器过滤用户请求,并调用后,根据请求的URL 和Action 处理URL 之间的对应关系来处理转发。 · 342·

struts2验证框架

Struts2Validator Struts2验证框架 Updated Jun 18, 2010 by cm2...@https://www.doczj.com/doc/9212309474.html, Action配置中一定要设置input返回页面 添加验证只要创建验证的xml文件 1.创建xml文件名 验证Action中全部方法 在Action同包下,创建:Action类名-validation.xml 如:ValidateAction创建ValidateAction-validation.xml 验证Action中单个方法 注意事项 注意: 1.要验证的方法不能叫input. 2.这样配置在form表单中要在中action写好名称, 不能写action="validate_",然后 这样会找不到对应的配置文件,跳过验证. 3.如果验证出错,返回input页面时,那些存在ValueStack中的值会丢失,可以将Action实现Preparable接口, 然后prepare()方法里初始化添加页面需要的值. 4.如果使用Preparable接口,必须在action配置中添加

基于Struts2框架的信息发布系统的设计与初步实现

第一章Struts2的起源和发展 说到网络应用很难让人不联想到网络信息的浏览,自从Internet进入民用领域之后,上网成为了越来越多的人闲暇时光的消磨手法。于是网络系统的开发也变得越来越总要。 1.1 Web技术的发展 随着Internet技术的大面积应用和发展,传统的静态HTML页面由于缺乏足够的用户交互能力已经无法满足日益膨胀的网络需求。人们希望Web应用中能够包含更多的动态交互功能,于是为了应对拥有更广泛用户群的动态Web开发,软件开发商分别推出的ASP和JSP两款动态网站开发解决方案。但是当时的JSP 开发并没有很科学的层次设计,最初的JSP开发中逻辑代码和前端代码杂合在一起。虽然在最初开发时这样的做法使得开发非常的容易,然而随着Web系统的使用越来越广泛,应用规模的日益增长,如果继续使用传统的简单的JSP + Servlet 结构进行Web系统的开发,则会由于系统层次混乱而导致系统的开发难度和维护成本越来越大,最终使开发过程陷入困境。 1.2 MVC思想进入Web系统开发 面对开发过程中所出现的困难,开发者们试图寻找一种能够使得开发结构更加具有条理性的开发模式。根据以往面向对象系统设计的经验,开发者开始将MVC开发模式引入Web系统的开发。MVC模式将一个应用分为三个基本部分:Model(模型)、View(视图)、Controller(控制器)。在此模式中触发事件由控制器捕获,并根据事件的类型来改变模型和视图。这样既可将系统模型与视图分离,从而使各部分能够工作在最小的耦合状态下协同工作,从来提高系统的扩展性和可维护性。将其引入Web系统开发后,系统模式由传统的JSP完成用户请求和响应改变为由控制器捕获用户请求,JavaBean完成模型操作,而JSP专门负责响应用户需求。老一代的开发框架Struts1便是这时的产物。

struts2复习题(含答案)

Struts2复习题 1.以下属于struts2的控制器组件是: A.Action B.ActionForm C.ActionServlet D.dispatchAction 2.以下属于struts2的体系结构的是:(多选) A.struts2控制器组件 B.struts2配置文件 C.FilterDispathcer D.Action 3.以下属于struts2配置文件中的配置元素是:(多选) A. B. C. D. 4.关于struts1和struts2对比的说法正确的是: A.struts1要求Action类继承struts1框架中的Action父类,struts2中则不一定需要继承,可以是POJO类 B.struts1中的Action不是线程安全的,而struts2中的Action是线程安全的 C.struts1和struts2中都使用ActionForm对象封装用户的请求数据 D.struts1使用OGNL表达式语言来支持页面效果,struts2通过ValueStack技术使标签库访问值 5.以下关于ValueStack说法正确的是:(多选) A.每个Action对象实例拥有一个ValueStack对象 B.每个Action对象实例拥有多个ValueStack对象 C.Action中封装了需要传入下一个页面的值,这些值封装在ValueStack对象中 D.ValueStack会在请求开始时被创建,请求结束时消亡 6.关于struts2配置文件说法正确的是: A.必须在WEB-INF/classes目录下 B.名字必须为struts.xml C.配置Action时,必须配置包信息 D.使用元素配置转发 7.在struts2配置中用()元素来配置常量: A. B. C. D. 8.关于struts2包的说法正确的是: A.struts2框架使用包来管理常量 B.struts2框架定义包时必须指定name属性 C.struts2框架中配置包时,必须继承自struts-default包,否则会报错 D.struts2框架中使用包来管理Action 9.struts2中获取Servlet API的方法正确的是:(多选) A.使用ActionContext对象以解耦合的方法访问Servlet API B.使用ServletActionContext对象以解耦合的方式访问Servlet API C.使用ActionContext对象以耦合的方式访问Servlet API D.使用ServletActionContext对象以耦合的方式访问Servlet API 10.struts2动态调用的格式为: A.ActionName?methodName.action B.ActionName! methodName.action C.ActionName*methodName.action D.ActionName@mathodName.action 11.如果要实现struts2的数据校验功能 A.普通Action类可以实现

structs2知识点

Struts2原理 上图来源于Struts2官方站点,是Struts 2 的整体结构。 Struts2框架由3个部分组成:核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件。在这3个部分里,Struts 2框架提供了核心控制器FilterDispatcher,而用户需要实现业务控制器和业务逻辑组件。 (1)核心控制器:FilterDispatcher

FilterDispatcher是Struts2框架的核心控制器,该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当用户请求到达时,该Filter 会过滤用户请求。如果用户请求以action结尾,该请求将被转入Struts2框架处理。 Struts2框架获得了*.action请求后,将根据*.action请求的前面部分决定调用哪个业务逻辑组件,例如,对于login.action请求,Struts2调用名为login的Action来处理该请求。 Struts2应用中的Action都被定义在struts.xml文件中,在该文件中定义Action 时,定义了该Action的name属性和class属性,其中name属性决定了该Action 处理哪个用户请求,而class属性决定了该Action的实现类。 Struts2用于处理用户请求的Action实例,并不是用户实现的业务控制器,而是Action代理——因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求。而Struts2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action 的execute方法来处理用户请求。 (2)一个请求在Struts2框架中的处理大概分为以下几个步骤 1 .客户端初始化一个指向Servlet容器(例如Tomcat)的请求,即HttpServletRequest请求。 2 .这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 3. 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 4 .如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy 5 .ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类 6 .ActionProxy创建一个ActionInvocation的实例。 7 .ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。 8 .一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper

基于Struts2结构的在线考试系统设计与实现

龙源期刊网 https://www.doczj.com/doc/9212309474.html, 基于Struts2结构的在线考试系统设计与实现 作者:唐晔 来源:《软件导刊》2013年第06期 摘要:基于Struts2和J2EE技术框架,结合MySQL数据库,设计并实现了一个基于B/ S 架构的在线考试系统,重点阐述了用户答题模块的设计,并提出了一种系统随机出题的方法。 关键词:在线考试系统;Struts2技术;J2EE;随机出题 中图分类号:TP319文献标识码:A文章编号:1672-7800(2013)006-0071-02 作者简介:唐晔(1973-),男,遵义师范学院计算机科学与技术系副教授,研究方向为计算机网络。 0引言 根据市场需求,网站的开发需要高效,同时考虑到网站的盈利性,则需要降低人力成本和资源成本。目前,大部分基于Java开发的网站都采用了Struts2的框架结构,并结合MySQL 数据进行开发,以降低开发成本和提高开发效率。Struts2是基于MVC模式的开发,Struts2框架为程序员的开发带了极大方便,同时也更好地满足了用户的多样化需求。 本系统是基于Struts2开发的一个在线考试系统,同时采用了J2EE技术,结合Mysql数据库,设计并实现了一个基于B/S架构的网上考试系统,并提出了一种系统随机出题的方法。 1系统总体设计 使用在线考试系统的用户必须是注册用户,使用时要先登录。当用户选择某种测试后,系统会自动给出题目进行考试。考试开始时,系统自动计时,用户必须在规定的时间内完成考试,否则时间到了则不能答题。用户答完题后可以直接提交,系统会在用户自主提交或时间超时的情况下对用户所做的题进行评分。用户信息和试题维护由管理员进行管理,当管理员进入管理时,也需要有一个登录验证功能来验证是否有权限进入管理页面。管理员可以完成录入、修改、添加、删除等功能,还可以把已保存在文本文件里的数据导入到数据库中。 本系统总体结构如图1所示。 2系统设计 2.1数据表设计

Struts2的工作机制原理分析及实例

Struts2的工作机制分析及实例 一、概述 本章讲述Struts2的工作原理。 读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验,那么千万不要想当然地以为这一章可以跳过。实际上Struts1.x 与Struts2并无我们想象的血缘关系。虽然Struts2的开发小组极力保留Struts1.x的习惯,但因为Struts2的核心设计完全改变,从思想到设计到工作流程,都有了很大的不同。 Struts2是Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebWork的升级版,他采用的正是WebWork 的核心,所以,Struts2并不是一个不成熟的产品,相反,构建在WebWork基础之上的Struts2是一个运行稳定、性能优异、设计成熟的WEB框架。 本章主要对Struts的源代码进行分析,因为Struts2与WebWork的关系如此密不可分,因此,读者需要下载xwork的源代码,访问https://www.doczj.com/doc/9212309474.html,/xwork/download.action即可自行下载。 下载的Struts2源代码文件是一个名叫struts-2.1.0-src.zip的压缩包,里面的目录和文件非常多,读者可以定位到 struts-2.1.0-src\struts-2.0.10\src\core\src\main\java目录下查看Struts2的源文件,如图14所示。 (图14) 二、主要的包和类 Struts2框架的正常运行,除了占核心地位的xwork的支持以外,Struts2本身也提供了许多类,这些类被分门别类组织到不同的包中。从源代码中发现,基本上每一个Struts2类都访问了WebWork提供的功能,从而也可以看出Struts2与WebWork千丝万缕的联系。但无论如何,Struts2的核心功能比如将请求委托给哪个Action处理都是由xwork完成的,Struts2只是在WebWork 的基础上做了适当的简化、加强和封装,并少量保留Struts1.x中的习惯。

Struts2+Hibernate架构技术教程课后参考答案

第1章Struts2框架技术入门 1.5 习题 1.5.1 选择题 1.D 2.A 3.C 4.B 5.B 1.5.2 填空题 1.MVC 2.Struts1和WebWork 3.IBM 4. FilterDispatcher 5.JSP、Struts2标签 1.5.3 简答题 1.简述MVC设计模式的工作流程。 答:MVC设计模式工作流程是: (1)用户的请求(V)提交给控制器(C); (2)控制器接受到用户请求后根据用户的具体需求,调用相应的JavaBean或者EJB(M部分)来进行处理用户的请求; (3)控制器调用M处理完数据后,根据处理结果进行下一步的调转,如跳转到另外一个页面或者其他Servlet。 2.简述Struts2的工作原理。 答:Struts2中使用拦截器来处理用户请求,从而允许用户的业务控制器Action与Servlet分离。用户请求提交后经过多个拦截器拦截后交给核心控制器FilterDispatcher处理,核心控制器读取配置文件struts.xml,根据配置文件的信息指定某一个业务控制器Action(POJO类)来处理用户数据,业务控制器调用某个业务组件进行处理,在处理的过程中可以调用其他模型组件共同完成数据的处理。Action处理完后会返回给核心控制器FilterDispatcher一个处理结果,核心控制器根据返回的处理结果读取配置文件struts.xml,根据配置文件中的配置,决定下一步跳转到哪一个页面。 一个客户请求在Struts2框架中处理的过程大概有以下几个步骤: (1)客户提交请求到服务器; (2)请求被提交到一系列的过滤器过滤后最后到FilterDispatcher; FilterDispatcher是核心控制器,是基于Struts2中MVC模式的控制器部分; (3)FilterDispatcher读取配置文件struts.xml,根据配置信息调用某个Action来处理客户请求; (4)Action执行完毕,返回执行结果,根据struts.xml的配置找到对应的返回结果。

基于Struts2的高校毕业论文管理系统毕业论文

基于Struts2的高校毕业论文管理系统毕业论文 目录 1.引言 (1) 2. 概述 (1) 2.1 系统的开发背景 (1) 2.2 系统的现状 (2) 3.技术工具简介 (2) 3.1Tomcat服务器 (2) 3.2 MySQL数据库 (3) 3.3 JAVA语言 (3) 3.4 JSP技术 (3) 3.5 Struts2框架 (3) 4.系统的总体分析 (3) 4.1系统的需求性分析 (4) 4.2 系统功能概述 (4) 4.2.1学生角色 (4) 4.3业务流图 (5) 4.4 数据流程图 (8) 5.系统的总体设计 (10) 5.1 模块分析与整体设计 (11) 5.2 数据库设计和构建 (14) 6.系统功能的具体实现 (17) 6.1 登录部分的设计 (17) 6.2 学生个人信息管理部分的设计 (18) 6.2.1学生登录后的界面如图 (19) 6.2.2查看个人资料 (19) 6.2.3论文选课的实现 (20) 6.2.5在线答疑 (23) 6.2.6论文成绩的公布 (23) 6.3.2教师申请提交论文题目 (24) 6.3.3 查看申报结果 (25) 6.3.4上传资料界面 (27) 6.3.5老师查看学生的留言信息 (28) 6.3.6查看答辩小组界面 (29) 6.4院系管理员部分的设计 (29) 6.4.1管理员登陆后的界面 (30) 6.4.2查看老师上传的论文题目的申请 (30) 6.4.3查看院系中所有论文申请的情况 (30) 6.4.4分配选题 (31)

6.4.5查看最后的选题结果 (31) 6.4.6 院系管理员下载功能实现 (32) 6.4.7查看答辩小组信息界面 (32) 6.4.8新增答辩小组 (33) 6.4.9.查看答辩组的分组情况 (33) 6.4.10管理员发布学生成绩 (33) 6.5 系统管理员部分的设计 (34) 7.测试的过程 (34) 7.1登录测试 (34) 7.2商品数据测试 (34) 7.3其它测试 (34) 7.4的测试结果 (35) 7.5 的不足之处 (35) 8.总结与展望 (35) 参考文献 (36)

struts2和springMVC的比较(超详细)

把这张图放在这里,我是想说SpringMVC和Struts2真的是不一样的,虽然在都有着核心分发器等相同的功能组件(这些由MVC模式本身决定的)。 为什么SpringMVC会赢得最后的胜利呢?谈几点我自己的看法: 第一、MVC框架的出现是为了将URL从HTTP的世界中映射到JAVA世界中,这是MVC 框架的核心功能。而在URL这一点SpringMVC无疑更加优雅。 第二、从设计实现角度来说,我觉得SpringMVC更加清晰。即使我们去对比Struts2的原理图和SpringMVC的类图,它依然很让人困惑,远没有SpringMVC更加直观:

SpringMVC设计思路:将整个处理流程规范化,并把每一个处理步骤分派到不同的组件中进行处理。 这个方案实际上涉及到两个方面: l 处理流程规范化——将处理流程划分为若干个步骤(任务),并使用一条明确的逻辑主线将所有的步骤串联起来 l 处理流程组件化——将处理流程中的每一个步骤(任务)都定义为接口,并为每个接口赋予不同的实现模式 处理流程规范化是目的,对于处理过程的步骤划分和流程定义则是手段。因而处理流程规范化的首要内容就是考虑一个通用的Servlet响应程序大致应该包含的逻辑步骤: l 步骤1——对Http请求进行初步处理,查找与之对应的Controller处理类(方法)——HandlerMapping l 步骤2——调用相应的Controller处理类(方法)完成业务逻 辑——HandlerAdapter l 步骤3——对Controller处理类(方法)调用时可能发生的异常进行处理——HandlerExceptionResolver

struts框架介绍

这章适合做参考,如果你那里不清楚,可上这里查技术资料 二.Struts框架 struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。 本章详细讨论struts架构。我们将看到struts是如何清晰地区分控制,事务逻辑和外观,从而简化了开发应用程序过程的。我们还将介绍struts提供的类如何使得开发工作更加简单,这些类包括: ●控制程序流程的类 ●实现和执行程序事务逻辑的类 ●自定义的标记库使得创建和验证HTML表单更加容易 1.Struts压缩包内容 文件夹jakarta-struts-1.0.2包含两个目录,lib和webapps。在lib目录中有使用struts创建 在webapps目录下有如下文件: 让我们从MVC角度观察struts框架中的组件

框架中三个部分:模型,视窗和控制器。 模型 在struts框架中,模型分为两个部分: ●系统的内部状态 ●可以改变状态的操作(事务逻辑) 内部状态通常由一组ActinForm JavaBean表示。根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。 大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean 调用。比如购物车bean,它拥有用户购买商品的信息,可能还有checkOut()方法用来检查用户的信用卡,并向仓库发定货信息。 小型程序中,操作可能会被内嵌在Action类,它是struts框架中控制器角色的一部分。当逻辑简单时这个方法很适合。 建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开。 视窗 由JSP建立,struts包含扩展的自定义标签库,可以简化创建完全国际化用户界面的过程。控制器 struts中,基本的控制器组件是ActionServlet类中的实例servelt,实际使用的servlet在配置文件中由一组映射(由ActionMapping类进行描述)进行定义。 2.Struts框架中的组件 (由于ROSE工具还未能下载,只能找来这幅图,它说明了一定问题,特别是ActionErrors,但它并没有将ActionMapping,JSP和Tag Library包含进来,有时间作完替换)

基于MVC模式Struts框架研究与应用详解

摘要: Struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC 的web应用程序的开发。本文讨论了Struts框架实现MVC模式的原理与方法,给出了一个具体的应用实例。 分布式企业应用软件结构复杂、涉及多种技术,对设计开发人员提出了很高的要求。在此情况下,运用设计模式――可复用的设计方案进行软件的设计开发十分必要。MVC模式已被证明是一种成功的软件设计模式,本文主要讨论了一种实现MVC模式的应用框架――Struts,并通过一个实例展示了Struts框架实现MVC模式的方法。 MVC设计模式 MVC(Modle-View-Controller,模型-视图-控制器)模式是Xerox PARC在20世纪80年代为编程语言Smalltalk-80所设计的一种软件设计模式,至今已被广泛使用,并被推荐为Sun公司J2EE平台的设计模式,其为开发交互式应用系统提供了一个优秀的设计模式,受到越来越多开发者的欢迎。 MVC模式主要由3个部分组成:模型、视图和控制器,其结构如图1所示。 图1 MVC模式框架 模型表示业务逻辑和业务规则等,在MVC的三个部件中拥有最多的处理任务。它可以用JavaBean和EJB等组件技术来处理数据库的访问。模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。 视图是屏幕上的显示。模型进行操作之后,其结果就是通过视图来显示的。在视图中其实没有真正的处理发生,只是作为一种输出数据并允许用户操作的方式。 控制器用于管理用户与视图发生的交互。一旦用户想对模型进行处理时,它不能直接去执行模型,而是通过控制器来间接地实现。控制器能从视图中取值,然后将相应的值传给模型进行处理。控制器接受用户的输入并调用模型和视图去完成用户的需求。 由上述可知,MVC模式的处理过程是:首先由控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图返回数据,并通过表达层呈现给用户。 MVC本身就是一个非常复杂的系统,所以采用MVC实现Web应用时,最好选一个现成的MVC框架,在此之下进行开发,从而取得事半功倍的效果。现在有很多可供使用的MVC框架,由于Struts有完整的文档并且相对来讲比较简单,所以用它开发MVC系统还是比较方便地。 Struts框架 Struts是Apache组织的一个开放源码项目。Struts是一个比较好的MVC框架,提供了对开发MVC系统的底层支持,它采用的主要技术是Servlet,JSP和Custom tag library。其基本构成如图2所示。

Struts2工作原理

struts2并不是一个陌生的web框架,它是以Webwork的设计思想为核心,吸收struts1的优点,可以说 struts2是struts1和Webwork结合的产物。 struts2 的工作原理图: 一个请求在Struts2框架中的处理分为以下几个步骤: 1.客户端发出一个指向servlet容器的请求(tomcat); 2.这个请求会经过图中的几个过滤器,最后会到达FilterDispatcher过滤器。 3.过滤器FilterDispatcher是struts2框架的心脏,在处理用户请求时,它和请求一起相互配合访问struts2 的底层框架结构。在web容器启动时,struts2框架会自动加载配置文件里相关参数,并转换成相应的类。 如:ConfigurationManager、ActionMapper和ObjectFactory。ConfigurationManager 存有配置文件的一 些基本信息,ActionMapper存有action的配置信息。在请求过程中所有的对象(Action,Results, Interceptors,等)都是通过ObjectFactory来创建的。过滤器会通过询问ActionMapper 类来查找请求中 需要用到的Action。 4.如果找到需要调用的Action,过滤器会把请求的处理交给ActionProxy。ActionProxy为Action的代理对象

。ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action 类。 5.ActionProxy创建一个ActionInvocation的实例。ActionInvocation在ActionProxy层之下,它表示了 Action的执行状态,或者说它控制的Action的执行步骤。它持有Action实例和所有的Interceptor。 6.ActionInvocation实例使用命名模式来调用,1. ActionInvocation初始化时,根据配置,加载Action相 关的所有Interceptor。2. 通过ActionInvocation.invoke方法调用Action实现时,执行Interceptor。在 调用Action的过程前后,涉及到相关拦截器(intercepetor)的调用。 7. 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果 通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表 示的过程中可以使用Struts2 框架中继承的标签。

基于Struts2和Spring框架的Web整合开发研究

基于Struts2和Spring框架的Web整合开发研究 发表时间:2011-04-08T10:32:02.020Z 来源:《价值工程》2011年第3月上旬作者:谢宗旺方旭升 [导读] 介绍了最新的基于MVC Model2的Struts2框架,分析了Spring框架的容器特性 谢宗旺 Xie Zongwang;方旭升 Fang Xusheng (南京航空航天大学经济与管理学院,南京 211100) (College of Economics & Management,Nanjing University of Aeronautics and Astronautics,Nanjing 211100,China) 摘要:介绍了最新的基于MVC Model2的Struts2框架,分析了Spring框架的容器特性,研究了Struts2和Spring的整合开发策略,最后结合实例详细介绍了利用整合框架进行Web应用开发的具体流程和关键技术。 Abstract: The newly- invented Struts2 framework system structure based on MVC Model2 is introduced here while the container feature of Spring framework has been studied. The strategies of integration and development in Struts2 and Spring have been put forward accompanied with an application model which well illustrates the detailed procedure and critical techniques in Web application design utilizing the integrated framework. 关键词: Struts2;Spring;MVC;整合开发 Key words: Struts2;Spring;MVC;Integration & Development 中图分类号:TP311 文献标识码:A 文章编号:1006-4311(2011)07-0168-02 0 引言 基于MVC模式的Struts1框架是Web应用开发最为流行的框架,但是它由于采用侵入式的代码设计,代码与JSP/Servlet耦合紧密,代码重用低、测试难,表现层技术只支持JSP。新的MVC框架Struts2框架诞生克服了Struts1一些缺点,通过与其他框架整合,充分发挥它的良好特性。本文拟整合Struts2和Spring框架来进行Web应用开发。 1 Struts2框架 Struts2框架由3部分组成:核心控制器、业务控制器和业务逻辑组件[1]。核心控制器由FilterDispatcher充当,负责拦截用户以.action结尾的请求,该其转入框架处理。业务控制器Action类的实例,包含了execute()方法,返回值是字符串如SUCCESS,与此对应跳转到相应视图。处理请求的Action实例并不是业务控制器,而是Action代理。框架提通过拦截器将HttpServletRequest请求的参数解,传入到Action中,执行相应方法处理请求。关于业务逻辑组件方面,在实际的开发中一般通过工厂模式或者其他IoC(控制反转)容器来获得业务 逻辑组件的实例。Struts2具体的框架结构如图1。 2 Spring框架 Spring是简化企业级应用开发的开源框架,使得用简单的JavaBean能够实现EJB的功能,是一个轻量级的IoC(控制反转)和AOP(面向切面编程)容器框架[2]。IoC容器就是框架的核心机制,用以实现松散藕合,由容器控制对象间依赖关系,减轻了组件间依赖关系,提高组件的可移植性。IoC又称为依赖注入,基本概念是不创建对象,只描述创建方式,在代码中不直接与对象和服务连接,但在配置文件中描述组件所需要服务项。控制反转模式的本质是将程序之间关系的控制权由程序代码转移到外部容器[3]。 3 整合Struts2和Spring框架 通过分析两者框架特性可知,Struts2核心是控制功能。用户开发的控制器要实现业务逻辑处理要通过其它途径来获得业务逻辑组件实例,比如IoC容器。Spring正好具有容器的特性,将两者整合具体策略如下:将Spring以插件的形式与Strut2框架整合,用户把创建的Action实例交给Spring容器来负责生成和管理,Spring插件提供了一种伪Action的机制,当用户在struts.xml文件中配置Action时,指定class 属性值为创建Action实例的实现类,利用Spring插件后允许开发者在指定class属性时,不指向Action实现类,而是指向Spring容器的Bean ID。当Action类需要获得业务逻辑组件时,Spring容器通过依赖注入机制,为Action注入业务逻辑组件。通过这种整合方式,将控制器与业务逻辑组件相分离,业务逻辑组件与DAO组件相分离。Struts2和Spring框架整合后的运作流程图如图2所示。

Struts2框架搭建教程

Struts2教程1:第一个Struts2程序 在本系列教程中我们将学习到Struts2的各种技术。在本教程中使用的工具和程序库的版本如下: 开发工具:MyEclipse6 Web服务器:Tomcat6 Struts版本:Struts2.0.11.1 JDK版本:JDK1.5.0_12 J2EE版本:Java EE5.0 在本系列教程中Web工程的上下文路径都是struts2,如果在Web根目录有一个index.jsp文件,则访问路径如下: http://localhost:8080/struts2/index.jsp 由于MyEclipse6目前并不支持Struts2,所以我们需要到https://www.doczj.com/doc/9212309474.html,去下载Struts2安装包。要想正常使用Struts2,至少需要如下五个包(可能会因为Struts2的版本不同,包名略有差异,但包名的前半部是一样的)。 struts2-core-2.0.11.1.jar xwork-2.0.4.jar commons-logging-1.0.4.jar freemarker-2.3.8.jar ognl-2.6.11.jar Struts2虽然在大版本号上是第二个版本,但基本上在配置和使用上已经完全颠覆了Struts1.x的方式(当然,Struts2仍然是基于MVC模式的,也是动作驱动的,可能这是唯一没变的东西)。Struts2实际上是在Webwork基础上构建起来的MVC框架。我们从Struts2的源代码中可以看到,有很多都是直接使用的xwork(Webwork的核心技术)的包。既然从技术上来说Struts2是全新的框架,那么就让我们来学习一下这个新的框架的使用方法。

struts2源代码分析(个人觉得非常经典)

本章讲述Struts2的工作原理。 读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验,那么千万不要想当然地以为这一章可以跳过。实际上Struts1.x与Struts2并无我们想象的血缘关系。虽然Struts2的开发小组极力保留S truts1.x的习惯,但因为Struts2的核心设计完全改变,从思想到设计到工作流程,都有了很大的不同。 Struts2是Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebWork的升级版,他采用的正是WebWork的核心,所以,Struts2并不是一个不成熟的产品,相反,构建在We bWork基础之上的Struts2是一个运行稳定、性能优异、设计成熟的WEB框架。 本章主要对Struts的源代码进行分析,因为Struts2与WebWork的关系如此密不可分,因此,读者需要下载xwork的源代码,访问https://www.doczj.com/doc/9212309474.html,/xwork/download.action即可自行下载。 下载的Struts2源代码文件是一个名叫struts-2.1.0-src.zip的压缩包,里面的目录和文件非常多,读者可以定位到struts-2.1.0-src"struts-2.0.10"src"core"src"main"java目录下查看Struts2的源文件,如图14所示。 (图14) 主要的包和类 Struts2框架的正常运行,除了占核心地位的xwork的支持以外,Struts2本身也提供了许多类,这些类被分门别类组织到不同的包中。从源代码中发现,基本上每一个Struts2类都访问了WebWork提供的功能,从而也可以看出Struts2与WebWork千丝万缕的联系。但无论如何,Struts2的核心功能比如将请求委托给哪个Action处理都是由xwork完成的,Struts2只是在WebWork的基础上做了适当的简化、加强和封装,并少量保留Struts1.x中的习惯。 以下是对各包的简要说明: 包名说明

Java项目(struts2框架)

Java项目(struts2框架) 工具/原料: Eclipse,struts 方法: 1. 打开eclipse新建java项目File-->New-->other;

2. 导入jar包,项目名称上右键-->Build Path--> Configure Build Path...;

红框内就是我们所导入的jar包了; 3. 接下来,配置struts2,首先需要导入struts2的jar包,方法如(2.); 新建一个XML来配置struts2,一般情况下为struts.xml,也可以自定义名称;

相关主题
文本预览
相关文档 最新文档