第2讲:第一个Struts2应用

合集下载

struts2的教程

struts2的教程

System.out.println(operand1); this.operand1 = operand1; } public int getOperand2() { return operand2; } public void setOperand2(int operand2) { System.out.println(operand2); this.operand2 = operand2; } public int getSum() { return operand1 + operand2; // 计算两个整数的代码数和 } } 从上面的代码可以看出,动作类的一个特征就是要覆盖execute方法,只 是Struts2的execute方法没有参数了,而Struts1.x的execute方法有四个参 数。而且execute方法的返回值也不同的。Struts2只返回一个String,用 于表述执行结果(就是一个标志)。上面代码的其他部分将在下面讲 解。 【第3步】 编写ActionForm类 在本例中当然需要使用ActionForm了。在Struts1.x中,必须要单独建 立一个ActionForm类(或是定义一个动作Form),而在Struts2中
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html>
<head> <title>显示代数和</title> </head> <body> 代数和为非负整数<h1><s:property value="sum" /></h1> </body> </html> 3. negative.jsp

struts2

struts2
新建Web项目,增加Struts类库 修改web.xml文件,配置Struts2的过滤器 编写login.jsp 编写LoginAction.java 编写loginResult.jsp 编写struts.xml 项目部署后运行效果
第二章 Struts 2的核心接口与类
Struts2核心类与接口
第一章 Struts2 初步
本章要点
Struts 2框架 Struts 2框架的特点 编写第一个Struts 2程序
基于框架方式开发
最流行的Framework组合
Struts 2.x Hibernate 3.x Spring 2.x
Struts 2框架
Struts是Apache组织的一个开源项目,是 一种基于MVC设计模式的Java Web开发框 架。利用它可以简化Java Web项目的开发, 提高系统的灵活性和可扩展性 WebWork和Struts框架进行了合并,推出了 Struts 2
ActionConext
com.opensymphony.xwork2.ActionContext
ActionContext封装了当前执行中Action的上下 文环境信息,该对象只在当前线程内有效。 在Action中可使用ActionContext间接访问 Servlet API
ServletActionConext
org.apache.struts2.ServletActionContext类 型
ActionContext的子类 ServletActionContext还封装了当前Action的 Web相关上下文环境信息。 在Action中可使用ServletActionContext直接访 问Servlet API
class>org.apache.struts2.dispatcher.FilterDispatcher</filterclass>

Struts2工作原理及配置MyEclips运行第一个Struts2项目

Struts2工作原理及配置MyEclips运行第一个Struts2项目

Struts2工作原理及配置MyEclips运行第一个Struts2项目配置struts2在MyEclipse中的环境:启动MyEclips(本文使用的版本为8.0GA),在启动时设定工作目录名为D:\test,启动后新建一个Web Project,假如取名为struts2,并在J2EE Specification Level选项中选择Java EE 5.0,单击finish。

建好后把事先下载的struts2程序包(本文使用的版本为2.2.1.1)解压后打开可看到该struts2开发包中有4个文件夹:apps是一些实例文件;docs是帮助文档;lib是开发包;src是开源的源代码。

进入lib文件夹中,选择开发struts2须最小配置的几个包:commons-fileupload-1.2.1.jar(处理文件上传的)、commons-io-1.3.2.jar(是commons-fileupload-1.2.1.jar所依赖的)、commons-logging-1.0.4.jar(关于日志处理的)、ognl-3.0.jar(对象图的表达语言)、struts2-core-2.2.1.1.jar(struts2的核心包)、xwork-core-2.2.1.1.jar(基于xwork的内核)、freemarker-2.3.16.jar()把这个7个jar直接拷贝粘贴到刚才新建的web工程中的:struts2/WebRoot/WEB-INF/lib 中,此时MyEclipse会自动新建一个引用库夹Referenced Libraries,所拷贝的几个包自动进入其中。

修改WebRoot/WEB-INF/web.xml的内容为:<?xml version="1.0"encoding="UTF-8"?><web-app version="2.5"xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepare AndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>该文件是在tomcat启动时就会自动解析的,而该配置是把所有请求都交给org.apache.struts2.dispatcher.ng.filter.StrusPrepareAndExecuteFilter类去处理,而此类是strtus2的类,所以也就把web应用纳入了struts2的范围之内了。

Struts2框架的介绍和应用

Struts2框架的介绍和应用

Struts2框架的介绍和应用一、简介Struts2框架是一个基于MVC模式的Java web应用程序框架,它能够帮助开发人员有效地管理和组织大规模、复杂的web应用程序。

它提供了一系列的工具和技术,使得开发人员能够快速地构建完整可用的web应用程序。

二、历史Struts2框架最初是由Apache软件基金会的Jakarta项目组开发的。

它源于Struts1框架,因为Struts1框架在开发人员自由度和灵活性方面存在限制。

Struts2框架开发了许多新特性和改进,使其比Struts1更具有可扩展性、更易于使用,更适合于构建大规模的web应用程序。

三、架构Struts2框架采用MVC模式,即Model-View-Controller模式,分为以下三个层次:3.1 Model 层Model层用于将数据从数据库等存储区域提取出来,然后传递给View层进行显示。

Struts2框架中,Model层的数据可以是一个Java对象或一个POJO。

3.2 View 层View层将从Model层传递来的数据显示给用户,它可以采用JSP、HTML、XML等技术来展现数据。

3.3 Controller 层Controller层作为Model层和View层之间的中介,调度这两层的工作,处理用户的请求并将处理结果返回给View层。

四、优点4.1 易于扩展Struts2框架采用模块化的设计思路,在不同的模块之间,通过配置文件、注解等方式进行交互,方便扩展和维护。

4.2 易于使用Struts2框架提供了丰富的标签库和功能模块,使得开发人员可以快速地构建完整的web应用程序,降低了使用门槛。

4.3 基于MVC模式Struts2框架采用了MVC模式,将业务逻辑、数据处理、UI展示等功能分开,使得程序结构清晰,易于管理和维护。

五、应用Struts2框架广泛应用于Java web应用程序的开发,特别是在大型项目中使用。

以下是Struts2框架的一些主要应用场景:5.1 企业级应用程序Struts2框架能够较好地管理和组织大型的企业级应用程序,可以帮助开发人员高效地开发复杂的应用。

struts2入门教程一(环境搭建,基本案例实现)CSDN

struts2入门教程一(环境搭建,基本案例实现)CSDN

Struts2入门初步需掌握1.struts2概述2.struts2环境搭建(第一个struts2的应用程序)3.struts.xml文件配置详解4.struts2请求的URL的搜索路径的顺序概述5.struts2工作原理概述6.struts2指定多个配置文件7.struts2动态方法调用8.使用通配符定义action一:简介Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。

其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。

Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。

虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

二:环境搭建搭建Struts2环境时,我们一般需要做以下几个步骤的工作:1.找到开发Struts2应用需要使用到的jar文件.下载官网:/download.cgi#struts221解压后:开始学习使用依赖的最基本的jar 包2:编写Struts2的配置文件解压其中一个案例在此目录下找到struts.xml 文件先拷贝到项目的src 下。

再对起进行修改。

删除剩余如下代码:[html]01.<?xml version ="1.0"encoding ="UTF-8" ?> 02.<!DOCTYPE struts PUBLIC 03."-//Apache Software Foundation//DTD StrutsConfiguration 2.3//EN" 04."/dtds/struts-2.3.dtd"> 05.06.<struts> 07.08. </struts>无法加载插件。

STRUTS2的应用与讲解

STRUTS2的应用与讲解

struts.xml配置

当package中添加了namespace属性后,程序就会去匹配页面中的action值的 完整路径了。 上页的例子struts.xml中加入<package name="path1" namespace="/path1" ><package name="path2" namespace="path2">,JSP页面中的路径 <FORM action="wwww/test.action">就会找不到action,必须写成: <FORM action="path1/test.action">
案例前准备-struts.xml

struts.xml文件用于描述action,及连接器,导航,异常处理等信息。 是struts2应用的核心。 其中,采用了OO的思想,采用了包继承,命名空间,导入等机制。使 开发者更加容易上手
可以有多个package,package可以用来区分不同模块的action处理,extends属 性必须写,其值为struts-default,说明action的相关配置遵循strutsdefault.xml(内置的) 一个package中有多个action节点,action具体配置处理请求的类 子节点 result配置处理action后的导向地址,路径加"/"表示从webRoot目录 开始查找,不加“/”表示跳转到当前地址栏中目录下的指定文件 此配置访问时的路径是: 项目名/struts2/sum.action。 当action执行 后,return “negative” 或者 "positive" 如果result中不写name,则说明 return SUCCESS,就转向没有name的result中指 定的页面

Java使用框架:Struts 2框架使用指南

Java使用框架:Struts 2框架使用指南

Java使用框架:Struts 2框架使用指南引言:在当今快节奏的软件开发领域,使用框架已经成为一种常见的做法。

框架可以帮助开发人员更高效地构建应用程序,提高开发速度和质量。

在Java开发领域,Struts 2框架是一个非常受欢迎的选择。

本文将为读者提供一个详细的Struts 2框架使用指南,帮助他们更好地理解和应用该框架。

第一部分:Struts 2框架简介1.1 Struts 2框架概述Struts 2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架。

它提供了一组用于开发Web应用程序的组件和工具,如控制器、视图和模型。

Struts 2框架的目标是简化Web应用程序的开发过程,提高应用程序的可维护性和可扩展性。

1.2 Struts 2框架的特点- 提供了清晰的MVC架构,使开发人员能够更好地组织和管理代码。

- 支持灵活的配置和注解,使开发人员能够根据具体需求进行定制。

- 提供了丰富的标签库和表单验证机制,简化了用户界面的开发和验证过程。

- 整合了许多常用的Java技术,如Hibernate、Spring和Tiles,提供了更强大的功能和扩展性。

第二部分:Struts 2框架的核心组件2.1 控制器(Action)Struts 2的控制器被称为Action。

一个Action是一个Java类,用于处理用户请求并生成相应的结果。

在Struts 2中,Action可以使用注解或配置文件进行声明和配置。

开发人员可以通过继承ActionSupport类来简化Action的开发。

2.2 视图(View)Struts 2的视图用于呈现结果给用户。

视图可以是JSP、FreeMarker模板或其他支持的模板引擎。

Struts 2提供了丰富的标签库和表单标签,使开发人员能够更轻松地构建用户界面。

2.3 模型(Model)Struts 2框架本身不提供持久化机制,但它可以与其他持久化框架(如Hibernate)集成。

Struts2的简单使用

Struts2的简单使用

1)对于<include file=“struts-default.xml”/>这行代码,可以要也可 )对于<include file=“struts-default.xml”/>这行代码,可以要也可 以不要。 2)package的name是可以虚构的,并不一定要在classes目录下要有一 package的name是可以虚构的,并不一定要在classes目录下要有一 个与这个name名对应的包名;像上面的配置文件中的 个与这个name名对应的包名;像上面的配置文件中的 name=“package1”可以随便改成name=“aaa” name=“package1”可以随便改成name=“aaa”等是不影响结果的, 只不过这个package名可以使得多个action聚合在一起,对大型的模 只不过这个package名可以使得多个action聚合在一起,对大型的模 块设计的时候是很有帮助的。 3)<action name="HelloWorld" class="package1.HelloWorld"> 中的HelloWorld这个name并不一定要与package1包中的类名相同, 中的HelloWorld这个name并不一定要与package1包中的类名相同, 比如<action 比如<action name="Hello" class="tutorial.HelloWorld">这样 class="tutorial.HelloWorld">这样 两个名字完全不一样是可以的,但是"Hello"这个name必须与输入的 两个名字完全不一样是可以的,但是"Hello"这个name必须与输入的 jsp页面里面的action内容是一致的,如<s:form action="Hello"> jsp页面里面的action内容是一致的,如<s:form 4)从上面的配置文件可以看出,在classes目录下面有两个包,一个是 )从上面的配置文件可以看出,在classes目录下面有两个包,一个是 tutorial,一个是package1。 tutorial,一个是package1。

struts2框架的原理和应用

struts2框架的原理和应用

Struts2框架的原理和应用1. 什么是Struts2框架Struts2是一个基于Java EE的开源Web应用框架,是Struts框架的升级版。

它通过MVC设计模式实现了Web应用开发的分层,将业务逻辑、数据模型和用户界面分离,使得代码更加清晰、易于维护。

2. Struts2框架的原理Struts2框架的原理主要包括以下几个关键点:MVC设计模式Struts2采用了MVC(Model-View-Controller)设计模式,其中:•模型(Model):负责管理应用程序的数据和业务逻辑。

•视图(View):负责显示数据给用户。

•控制器(Controller):负责处理用户输入、调用模型和视图等。

核心组件Struts2框架包含以下核心组件:•拦截器(Interceptor):负责在请求前后进行统一处理,可以用来进行身份验证、日志记录等操作。

•动作(Action):负责处理用户请求,包括接收请求参数、调用业务逻辑方法等。

•结果(Result):负责生成并返回视图,可以是JSP、Freemarker、JSON等。

•值栈(ValueStack):用于存储Action处理过程中的数据,支持OGNL表达式读取和赋值操作。

•配置文件(struts.xml):用于配置拦截器、动作、结果等,实现URL与处理类之间的映射关系。

工作流程Struts2框架的工作流程如下:1.客户端发送请求到Struts2框架的前端控制器(例如:DispatcherFilter)。

2.前端控制器根据请求的URL找到对应的处理类(Action)。

3.前端控制器将请求参数、上下文信息等传递给Action,同时执行拦截器的前置处理逻辑。

4.Action处理用户请求,并根据业务逻辑生成相应的结果。

5.前端控制器将结果传递给结果组件,选择合适的视图进行渲染。

6.前端控制器将渲染后的视图返回给客户端。

3. Struts2框架的应用Struts2框架在Web应用开发中具有广泛的应用,以下是一些主要的应用场景:1. 构建Web应用程序Struts2框架提供了许多构建Web应用程序的工具和技术,包括表单验证、国际化、文件上传等功能。

Struts2框架教程及应用

Struts2框架教程及应用

Struts2配置 (1)Action接受请求参数 (6)拦截器 (10)OGNL表达式 (16)输入校验 (22)文件上传下载 (26)Struts2配置1、Struts2框架配置文件Struts2框架按照如下顺序加载struts2配置default.properties 该文件保存在 struts2-core-2.3.7.jar 中 org.apache.struts2包里面struts-default.xml 该文件保存在 struts2-core-2.3.7.jarstruts-plugin.xml 该文件保存在struts-Xxx-2.3.7.jarstruts.xml 该文件是web应用默认的struts配置文件struts.properties 该文件是Struts的默认配置文件web.xml 该文件是Web应用的配置文件如果多个文件配置了同一个struts2 常量,则后一个文件中配置的常量值会覆盖前面文件配置的常量值2、Struts2常量配置∙指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法和freemarker 、velocity的输出<constant name="struts.i18n.encoding" value="UTF-8"/>∙该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。

如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开<constant name="struts.action.extension" value="action"/>∙设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭<constant name="struts.serve.static.browserCache"value="false"/>∙当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开<constant name="struts.configuration.xml.reload" value="true"/>∙开发模式下使用,这样可以打印出更详细的错误信息<constant name="struts.devMode" value="true" />∙默认的视图主题<constant name="struts.ui.theme" value="simple" />∙与spring集成时,指定由spring负责action对象的创建<constant name="struts.objectFactory" value="spring" />∙该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。

第二讲 控制层框架与表示层框架

第二讲 控制层框架与表示层框架
<! - - name值是用来和请求匹配的- - >
<action name="find" class="org.action.StrutsAction" method="find"> <result name="success">/welcome.jsp</result> <result name="error">/hello.jsp</result> </action>
简单Struts 2示例开发 简单Struts 2示例开发
Han Dan College
• 在src根目录下创建struts.xml文件,并添加响应的内容。
• 在webapp目录下创建welcome.jsp文件
简单Struts 2示例开发 简单Struts 2示例开发
• 项目发布运行
Han Dan College
2工作流程及各种文件详解 Struts 2工作流程及各种文件详解
Han Dan College
namespace:该属性是可选的,将保存的action配置为不同的名称空 间。看下面这个例子:
<package name="default"> <action name="foo" class="mypackage.simpleAction"> <result name="success">/foo.jsp</result> </action> <action name="bar" class="mypackage.simpleAction"> <result name="success">/bar.jsp</result> </action> </package> <package name="mypackage1" namespace="/"> <action name="moo" class="mypackage.simpleAction"> <result name="success">/moo.jsp</result> </action> </package> <package name="mypackage2" namespace="/barspace"> <action name="bar" class="mypackage.simpleAction"> <result name="success">/bar.jsp</result> </action> </package>

struts2讲义

struts2讲义

e.g. ums_struts2_02_action/struts.xml Ⅲ. 使用 DMI 或通配符 目的:减少 Action 的数量 方式一:动态方法调用(Dynamic Method Invocation DMI,struts2.1 后不建议使 用) 定义一个 Action 类,类中可以定义多个与 execute()方法,声明部分相同但方法名 不同的方法。 e.g. ums_struts2_02_action/UserAction_DMI.java 1、定义 UserAction_DMI 类
e.g. ScopeAction_3.java 方式四:实现 ServletRequestAware 接口
e.g. ScopeAction_4.java 注意:1、其中,前两种方式与 Servlet API 解耦合,后两种方式与 Servlet API 耦合,推荐使 用第二种方式,第二种方式使用了 IOC 的模式,解耦合更好。 Ⅵ.Action 中生成响应信息 e.g. ums_struts2_02_result Struts2 框架通过 Action 中 execute()方法的返回值,与 struts.xml 中<action>的<result>元 素的 name 属性值来判断最终响应信息的内容。其中<result>元素设置如下: <result type=”结果类型” name=”名称”>WEB 资源路径或名称</result> 说明: 1、name:result 名称随便起,默认为“success“,与 execute 方法返回值一致。 2、 WEB 资源路径或名称:WEB 资源路径如果为相对路径,则该路径相对于 WEB 应用上下文。如果跳转到 Action 则为该 Action 所对应的<action>元素的 name 值。 3、 type:设置生成响应信息的类型,默认为 dispatcher。 (Ⅰ)ActionSupport 中预定义的结果常量 在 Struts2 的 ActionSupport 类中预定义了一些 Result 常量,当定义的 Action 类继承了 ActionSupport 时就可以使用这些结果常量,当然也可以使用自定义的 result 字符串。

struts2的工作原理

struts2的工作原理

struts2的工作原理Struts2是一个基于Java的开源Web应用程序框架,用于快速构建企业级Web应用程序。

它采用了模型-视图-控制器(MVC)架构模式,通过统一的控制器来处理用户的请求,并将结果返回给视图进行展示。

本文将介绍Struts2的工作原理,包括请求的处理流程、组件的作用以及如何配置和使用Struts2。

一、Struts2的请求处理流程1. 客户端发送HTTP请求到服务器。

2. 服务器接收到请求后,将请求交给Struts2的过滤器(StrutsPrepareAndExecuteFilter)进行处理。

3. 过滤器根据请求的URL找到对应的Action,并将请求参数封装到Action的属性中。

4. 过滤器调用Action的execute()方法进行业务逻辑处理。

5. Action执行完毕后,返回一个结果视图。

6. 过滤器根据结果视图的配置,将结果返回给客户端。

二、Struts2的组件作用1. Action:Action是Struts2框架的核心组件,用于处理用户的请求。

每个Action类对应一个业务功能,其中的方法对应不同的请求处理逻辑。

2. Interceptor:Interceptor是Struts2框架的拦截器,用于在Action执行前后进行一些额外的处理。

例如,可以在Interceptor中进行身份验证、日志记录等操作。

3. Result:Result是Struts2框架的结果视图,用于将Action的处理结果展示给用户。

可以配置不同的Result类型,如跳转到指定页面、返回JSON数据等。

4. ValueStack:ValueStack是Struts2框架的数据栈,用于存储Action中的属性。

在页面中可以通过表达式语言访问ValueStack 中的数据。

三、Struts2的配置和使用1. 配置文件:Struts2的配置文件是struts.xml,用于配置Action、Interceptor、Result等组件的相关属性。

struts2、struts1的执行流程、工作原理

struts2、struts1的执行流程、工作原理

Struts2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。

核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。

业务控制器Action 和业务逻辑组件是需要用户来自己实现的。

用户在开发Action 和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。

Struts2的工作流程相对于Struts1要简单,与WebWork框架基本相同,所以说Struts2是WebWork的升级版本。

基本扼要流程如下:1、客户端浏览器发出HTTP请求。

2、根据web.xml配置,该请求被FilterDispatcher接收。

3、根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton。

4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。

5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。

6、返回HTTP响应到客户端浏览器。

Struts工作机制?为什么要使用Struts?工作机制:Struts的工作流程:在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象当ActionServlet接收到一个客户请求时,将执行如下流程.-(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径失效信息;-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm 的validate()方法;-(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象,就表示表单验证胜利;-(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action 的execute()方法;-(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给ActionForward对象指向的JSP组件;-(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;为什么要用:JSP、Servlet、JavaBean技术的出现给我们构建强健的企业应用系统提供了可能。

Struts2_01 Struts2简介_使用Struts2_参数传递_资费列表

Struts2_01 Struts2简介_使用Struts2_参数传递_资费列表

1. Struts2简介1.1. 什么是Struts21.1.1. Struts2的概念Struts2是轻量级的MVC框架,它主要解决了请求分发的问题,重心在于控制层和表现层。

轻量级,指的是Struts2具有较低的侵入性,就是它对我们业务代码的依赖程度很低,简单来说,在使用Struts2框架时,我们的业务代码中基本上不需要import 它的包。

Struts2实现了MVC,满足了MVC设计思想。

在我们使用Struts2做开发的时候,就相当于使用了MVC,这是Struts2自动帮助我们实现的,是默认的、隐含的,我们不需要再写特别的代码来实现MVC了。

作为一个框架,Struts2提供了一系列的API,我们可以使用它们来简化代码的编写,从而提升开发效率。

这些API复用程度很高,对业务代码的依赖性也很小,甚至很多是Struts2自动调用的,因此在很大程度上,我们的开发变得可以复用。

Struts2解决请求分发的问题,我们会在后面为什么使用Struts2中讲解。

重心在控制层和表现层,是纵观整个Struts2理论课程来看的,从中我们会体会到这一点,随着大家对Struts2的逐步了解,届时我们再回顾这一点。

1.1.2. 什么是MVCMVC是代码的分层思想,是软件设计领域经典的设计模式。

它根据代码功能的不同,将一个软件的代码分为3部分,即模型、视图、控制器,这3部分代码的含义和功能如下。

1、M-Model 模型模型(Model)的职责是负责业务逻辑。

包含两层:业务数据和业务处理逻辑。

比如实体类、DAO、Service都属于模型层。

2、V-View 视图视图(View)的职责是负责显示界面和用户交互(收集用户信息)。

属于视图的组件是不包含业务逻辑和控制逻辑的JSP。

3、C-Controller 控制器控制器是模型层M和视图层V之间的桥梁,用于控制流程。

比如:在Servlet 项目中的单一控制器ActionServlet。

通过代码实例跟我学Struts2框架从入门到精通——如何应用Struts2框架中..

通过代码实例跟我学Struts2框架从入门到精通——如何应用Struts2框架中..

1.1如何应用Struts 2框架中的CheckboxInterceptor和prepare默认拦截器的应用实例1.1.1Struts 2框架中的CheckboxInterceptor默认拦截器的应用示例1、主要的功能此拦截器是针对checkbox表单控件的,当提交的表单里有checkbox时,默认情况下,如果没选中,提交的值是null;如果选中,提交的值是"true"。

CheckboxInterceptor的作用是当没选中checkbox时,提交一个指定的值,而不是null。

2、实现的原理你需要在页面中为每个checkbox指定一个名字为"__checkbox_"+checkbox名的hidden 控件,例如,如果表单有一个名为vip的checkbox,就需要一个名为__checkbox_vip的hidden。

默认的,这个事情不需要你来做,因为Struts2在checkbox的simple模板中已经为你做了,即下面这条语句:<input type="hidden" name="__checkbox_${?html}"value="${parameters.fieldV alue?html}"/>因此CheckboxInterceptor实现原理如下:当提交表单后,CheckboxInterceptor会在请求参数里查找名字以"__checkbox_"开头的参数,如果找到,继续在请求参数里找对应的checkbox参数,如果没找到(表示没有选中该checkbox),就给checkbox参数一个指定的值,默认的,这个值为"false"。

3、可以在struts.xml文件中为某个Action引用该拦截器时设置改变这个值如下示例是将其值改成"no":<interceptor-ref name="checkbox"><param name="uncheckedValue">no</param></interceptor-ref>默认情况下,请求每个action都会调用CheckboxInterceptor,因为在Struts2定义的默认拦截器defaultStack中包含了它。

03-建立你的第一个Struts2应用程序

03-建立你的第一个Struts2应用程序

03-建立你的第一个Struts2应用程序--- ---下面我们来建立第一个Struts2的应用程序,因为后面还有整合,为了方便,本教程以后的示例都是一次把Struts 2.0.6、Hibernate3.2.2、Spring 2.0.3的jar文件全部导入/WEB-INF/lib 目录下,另外,教程使用的开发工具是Eclipse3.2.2,插件MyEclipse5.1.1,要求JDK1.5、Servlet 2.4、JSP2.0版本,应用服务器使用Tomcat 6.0。

1.打开Eclipse,点击菜单栏中的“文件”---“新建”---“项目...”,我们选择WEB项目(Web Project),如下图所示:______________________________________________________2.单击下一步,我们为项目命名为struts01,如下图所示:______________________________________________________3.其他选项保持默认状态就好,然后单击完成,将Struts 2.0.6、Hibernate3.2.2、Spring 2.0.3的jar文件复制到struts01项目的lib目录下,然后在项目文件夹夹右键选择“构建配置路径”,建立用户库struts01,将这些jar文件添加到用户库struts01中,这些完成之后,项目结构如下图所示:红色部分是三个框架的所有jar文件______________________________________________________4.在src下建立包net.ilkj,在这个包中建立类App,其实这个类本身没什么用,主要是用它找类的完整类名。

______________________________________________________5.打开web.xml文件,因为有Spring,首先配置上下文监听器ContextLoaderListerner,因为在配置文件中的类都需要完整的类名,这个在哪个包下呢?记不住吧?我们这时打开上面新建的类App,在类中输入ContextLoa,然后按下Alt+/,如下图所示:选择我们需要的类,这时会在App的上方生成import的代码,这段代码就是ContextLoaderListener的完整类名,我们将它复制下来,用这个办法,我们找到Struts2的核心FilterDispatcher的完整类名,配置后的web.xml内容如下:还记得上一篇文章说的处理中文乱码的问题吗?这里我们使用Spring的一个类CharacterEncodingFilter完成这个功能,记住Filter是按配置顺序执行的了吗?接受客户请求的时候顺序执行,发送客户响应的时候反序执行,那么CharacterEncoding一定要在FilterDispatcher之前配置,如下图所示:在web.xml中的<filter>和<servlet>元素都可以使用<init-param>子元素为<filter-class>或<servlet-class>中的类中的属性传递值,那么我们怎么知道CharacterEncodingFilter中的哪个属性是设置编码的呢?很简单,我们展开用户库struts01,找到spring的jar包,按照web.xml 中的完整类名,找到这个类,然后展开这个类的结构,如下图所示:红色线所示的encoding,懂点英语的就应该知道这个单词的意思是“编码”吧?那么很简单,<init-param>中的子元素<param-name>自然就是encoding,<param-value>,value是值的意思,自然是给param-name赋值,我们这里采用UTF-8编码;大家可以看到粉色线所示的方法doFilterInternal(),表示执行过滤方法地方。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河南经贸职业学院
信息管理系· 武俊琢
透视Struts2框架下的Web应用
【数据流程分析】
程序中找不到request.getParameter()之类的代码,客户端 提交的数据自动填充到模型对应的属性中,在JSP视图中使
用简单的struts2标记就可以将模型中的属性显示出来
河南经贸职业学院
信息管理系· 武俊琢
分别代表对客户端请求的两种不同的处理结果 视图
河南经贸职业学院
信息管理系· 武俊琢
创建视图组件-input.jsp
input.jsp
<form action="greet.action" method="post"> 姓名:<input type="text" name="username"> <input type="submit" value="提交"> </form>
</body>
unknown.jsp
<h2>对不起,我不与陌生人说话!</h2>
河南经贸职业学院 信息管理系· 武俊琢
创建Action-GreetAction.java
package com.hnjm.action; public class GreetAction { private String username; private String greeting; public String getUsername() { return username; } public void setUsername(String username) { ername = username; } public String getGreeting() { return greeting; } public void setGreeting(String greeting) { this.greeting = greeting; }
hello.jsp
<%@ page language="java" pageEncoding="UTF-8"%> <%@taglib uri="/struts-tags" prefix="s"%> <html> <head><title>hello</title></head> <body> <h2> <s:property value="greeting"/> </h2> </html>
小结
为Web应用添加Struts2框架支持
只需要将框架所需的jar复制到项目的lib目录 下,并在web.xml中配置指定的过滤器
Struts2的MVC构成
控制器(过滤器)由框架提供,模型由Action 实现,Action是一个普通的类(遵循一定的规 范),视图可由JSP实现,三者结合就是 Struts2 Web应用
河南经贸职业学院
信息管理系· 武俊琢
测试运行
部署到tomcat6.0服务器 运行:
http://localhost:8080/fisrt/input.jsp
河南经贸职业学院
信息管理系· 武俊琢
透视Struts2框架下的Web应用
【控制流程分析】
客户端单击input.jsp页面的“提交”按钮 向服务器发送请求:http://localhost:8080/first/greet.action 请求首先交给过滤器:StrutsPrepareAndExecuteFilter StrutsPrepareAndExecuteFilter解析URL,找到相应的模型组件URL,即/g reet.action,去掉后缀“.action”,剩余的URL地址“/greet”对应package的 命名空间为"/",模型组件Action名为“greet” 过滤器在struts.xml中找到命名空间为“/”的package,并在其中找到名为 “greet”的action,最后将请求交给对应的实现类GreetAction GreetAction的execute()方法被调用,返回一个代表结果的字符串“SUCC ESS”或“FAIL”,框架根据返回结果查找struts.xml中action的<result>配置, 并根据配置转到相应的JSP视图
lib
Struts2框架的核心类库、Struts2的第三方插件类库, 共72个jar包,为避免臃肿,一般只添加必须包含的类 库,可以从Struts2示例blank应用中获取。
src
Struts2框架的全部源代码
河南经贸职业学院 信息管理系· 武俊琢
Struts2组件
解压struts2-blank.war项目
【Struts-2.2.1.1-all.zip内容解读】
河南经贸职业学院 信息管理系· 武俊琢
Struts-2.2.1.1-all.zip内容解读
【解压后的四个文件夹】
apps
基于Struts2的示例应用,包含5个war包,可直接部署 到服务器上运行。
docs
Struts2的相关文档,包括Struts2快速入门、Struts2文 档、API文档
序设计的复杂性
河南经贸职业学院 信息管理系· 武俊琢
透视Struts2框架下的Web应用
【企业生产模式下对配置文件的操作】
如果十几个人开发,每人开发一个模块,都需要对struts.xml文件进行配 置,如何简化对配置文件的操作? 利用action的package机制,不同模块的action组件放在不同的package 中,不同的package使用不同的命名空间,这样可将不同工作人员的工 作隔离开。 如:修改package的namespace属性为“test”,重新调试程序 除了使用package外,struts.xml还支持include标记来包含子配置文件, 将配置信息分布到不同的子配置文件中,以支持企业规划化开发,避免s truts.xml过于臃肿
WEB-INF\lib文件夹下
WEB-INF下的web.xml(Web应用配置文件) WEB-INF\classes下的struts.xml文件( Struts配置文件)
河南经贸职业学院 信息管理系· 武俊琢
创建Web项目、添加Struts2支持
MyEclipse环境配置
tomcat配置 window–preferences–java–installed jres Jsp文件字符集:UTF-8(可防止中文乱码)
说明:为支持Struts2框架,需要在web.xml文件中 配置过滤器StrutsPrepareAndExecuteFilter
河南经贸职业学院 信息管理系· 武俊琢
创建视图组件
创建JSP网页input.jsp
用来获取客户端输入信息
创建两个JSP网页hello.jsp和unknown.jsp
创建Web项目 添加Struts2支持
将Struts2组件拷贝到项目的lib结点中 修改web.xml文件
河南经贸职业学院
信息管理系· 武俊琢
添加Struts2支持
修改web.xml文件
拷贝struts2-blank项目的web.xml的以下配置内容到当前 项目web.xml
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndE xecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
河南经贸职业学院
信息管理系· 武俊琢
创建Action-CreetAction.java
public String execute(){ if("".equals(username)){ return "FAIL"; }else{ greeting="您好!"+username; return "SUCCESS"; } } }
河南经贸职业学院
信息管理系· 武俊琢
配置Struts2
将blank应用中的struts.xml拷贝到项目的src根 目录,并修改<struts>元素内容如下:
<struts> <package name="default" namespace="/" extends="struts-default"> <action name="greet" class="com.hnjm.action.GreetAction"> <result name="SUCCESS">/hello.jsp</result> <result name="FAIL">/unknown.jsp</result> </action> </package> </struts>
4. GreetActionexecute()返回结果字符串“xxx”
相关文档
最新文档