深入Struts2的配置文件
本部分主要介绍struts.xml的常用配置。
1.1.包配置:
Struts2框架中核心组件就是Action、拦截器等,Struts2框架使用包来管理Action和拦截器等。每个包就是多个Action、多个拦截器、多个拦截器引用的集合。
在struts.xml文件中package元素用于定义包配置,每个package元素定义了一个包配置。它的常用属性有:
l name:必填属性,用来指定包的名字。
l extends:可选属性,用来指定该包继承其他包。继承其它包,可以继承其它包中的Action定义、拦截器定义等。
1.2.命名空间配置:
考虑到同一个Web应用中需要同名的Action,Struts2以命名空间的方式来管理Action,同一个命名空间不能有同名的Action。
Struts2通过为包指定namespace属性来为包下面的所有Action指定共同的命名空间。
<
/manage。
对于包default:没有指定namespace属性。如果某个包没有指定namespace 属性,即该包使用默认的命名空间,默认的命名空间总是""。
对于包my:指定了命名空间/manage,则该包下所有的Action处理的URL 应该是“命名空间/Action名”。如上名为backLogin的Action,它处理的URL为:http://localhost:8080/userlogin_struts2/manage/backLogin.action
Struts2的命名空间的作用等同于struts1里模块的作用。
1.3.包含配置:
在Struts2中可以将一个配置文件分解成多个配置文件,那么我们必须在
1.4.拦截器配置:
见后面章节介绍。
1.5.常量配置:
Struts2 框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射,及Action处理结果和物理资源之间的映射关系。除此之外,Struts2框架还包含了一个struts.properties文件,该文件主义了 Struts2框架的大量常量属性。但通常推荐也是在struts.xml文件中来配置这些常量属性。
classes目录下您就应该放置类似messages_zh_CN.properties,
message_en.properties名的文件。
2.Struts2的Action
2.1.实现Action类:
Struts2中Action是核心内容,它包含了对用户请求的处理逻辑,我们也称Action为业务控制器。
Struts2 中的Action采用了低侵入式的设计,Struts2不要求Action类继承任何的Struts2的基类或实现Struts2接口。(但是,我们为了方便实现
Action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类,并重写此类里的 public String execute() throws Exception方法。因为此类中实现了很多的实用接口,提供了很多默认方法,这些默认方法包括获取国际化信息的方法、数据校验的方法、默认的处理用户请求的方法等,这样可以大大的简化Action的开发。)
Struts2 中通常直接使用Action来封装HTTP请求参数,因此,Action类里还应该包含与请求参数对应的属性,并且为属性提供对应的getter和 setter 方法。(当然,Action类中还可以封装处理结果,把处理结果信息当作一属性,提供对应的getter和setter方法)
终效果跟以前一样。
2.2.Action访问Servlet API:
Struts2中的Action并没有和任何Servlet API耦合,这样框架更具灵活性,更易测试。
但是,对于web应用的控制器而言,不访问Servlet API几乎是不可能的,例如跟踪HTTP Session状态等。Struts2框架提供了一种更轻松的方式来访问Servlet API。Struts2中提供了一个ActionContext类(当前Action的上下文对象),通过这个类可以访问Servlet API。下面是该类中提供的几个常用方法:l public static ActionContext getContext() :获得当前Action的ActionContext 实例。
l public Object get(Object key) :此方法类似于调用HttpServletRequest的getAttribute(String name)方法。
l public void put(Object key, Object value) :此方法类似于调用HttpServletRequest 的setAttribute(String name, Object o)。
l public Map getParameters() :获取所有的请求参数。类似于调用HttpServletRequest对象的getParameterMap() 方法。
l public Map getSession() :返回一个Map对象,该Map对象模拟了HttpSession 实例。
l public void setSession(Map session) :直接传入一个Map实例,将该Map实例里的key-value对转换成session的属性名-属性值对。
l public Map getApplication() :返回一个Map对象,该对象模拟了该应用的ServletContext实例。
l public void setApplication(Map application) :直接传入一个Map实例,将该Map实例里的key-value对转换成application的属性名-属性值对。
Servlet API 中分离出来,最大的好处就是可以脱离Web容器测试Action。
另外,Struts2中还提供了一个ServletActionContext类,Action只要继承自该类,就可以直接访问Servlet API。具体方法参看struts2的API文档。
3.一个Action内包含多个请求处理方法的处理
Struts1提供了DispatchAction,从而允许一个Action内包含多个请求处理方法。Struts2也提供了类似的功能。处理方式主要有以下三种方式:
3.1.动态方法调用:
DMI:Dynamic Method Invocation 动态方法调用。
动态方法调用是指:表单元素的action不直接等于某个Action的名字,而
名为”login”方法来处理请求。同时login方法的签名也是跟execute()一样,即为public String login() throws Exception。
注意:要使用动态方法调用,必须设置Struts2允许动态方法调用,通过设置struts.enable.DynamicMethodInvocation常量来完成,该常量属性的默认值是true。
3.1.1.示例:
修改用户登录验证示例,多增加一个注册用户功能。
1.
2.
3.
4.
3.2.为Action配置method属性:
调用login方法,则相应的把index.jsp中表单元素的action设置为
"manage/userLogin.action";要调用regist方法,把regist.jsp中表单元素的action 设置为"manage/userRegist.action"。
3.3.使用通配符映射(wildcard mappings)方式:
在struts.xml文件中配置
当我们使用通配符定义Action的name属性时,相当于用一个元素action
模式的逻辑Action。同时method属性值为一个表达式 {1},表示它的值是name 属性值中第一个*的值。例如:用户请求URL为user_login.action时,将调用到UserAction类的 login方法;用户请求URL为user_regist.action时,将调用到UserAction类的regist方法。
4.处理结果
Struts2的Action处理完用户请求后,将返回一个普通字符串,整个普通字符串就是一个逻辑视图名。Struts2通过配置逻辑视图名和物理视图资源之间的映射关系,一旦系统收到Action返回的某个逻辑视图名,系统就会把对应的物理视图资源呈现给浏览者。
4.1.配置处理结果:
Struts2的Action处理用户请求结束后,返回一个普通字符串-逻辑视图名,必须在struts.xml文件中完成逻辑视图和物理视图资源的映射,才可让系统转到实际的视图资源。
Struts2通过在struts.xml文件中使用
Struts2提供了两种结果。
l 局部结果:将
l 全局结果:将
在
4.2.处理结果类型:
Struts2提供了对不同种类返回结果的支持,常见的有JSP,FreeMarker,Velocity等。
JasperReport类型的报表输出;Jfreechart Plugin;JSF Plugin。
4.3.动态返回结果
有些时候,只有当Action执行完毕的时候我们才知道要返回哪个结果,这个时候我们可以在Action内部定义一个属性,这个属性用来存储Action执行完
属性来判断具体定位到哪个Action。
5.属性驱动和模型驱动
不管属性驱动还是模型驱动,Struts2框架都是通过拦截器负责提取请求参数,并将请求数据封装到相应的Action实例的属性或专门的模型的属性。
5.1.属性驱动:
属性驱动就是属性(property)作为贯穿MVC流程的信息携带者。简单的说,就是使用Action实例来封装请求参数和处理结果信息。前面我们做的示例都属于属性驱动模式。
5.2.模型驱动:
模型驱动就是使用单独的javaBean作为贯穿整个MVC流程的信息携带者。
也就是说,使用单独的VO(值对象)来封装请求参数和处理结果信息。
示例:继续修改用户登录验证:
1.
struts1开发学习笔记 使用一个简单的例子记录struts1开发过程。 0、 描述 主要功能描述: index 界面上只有两个超链接,分别可以打开录入产品界面和显示产品列表界面。 newProduct.jsp 是录入的界面,searchProduct.jsp 是查询列表的界面。 ProductAction.java 是处理逻辑的action 简单描述流程图: 1、 构建环境 在Myeclipse 中,新建一个工程StrutsTest ,选择该工程,右键Myeclipse->add sruts capapibality ,弹出界面,选择struts1.2支持。如下图所示: 添加完struts 支持后,lib 目录下会增添struts 的jar 包、增添struts 的配置文件: /WEB-INF/struts-config.xml 、同时在web.xml 中增添了struts 的配置。 2、 代码编写
2)创建工具类Util.java,从数据库连接池中获得连接。需要两个步骤 第一步:在WebRoot/META-INF/下新建一个context文件,通过jndi方式配置数据源, 第二步:在util类中读取配置获得连接,util.java如下:
3)创建工具类EncodingFilter.java,自定义过滤器,并在web.xml中配置,参考web.xml 配置中内容。EncodingFilter.java的内容如下:
4)修改web.xml,指定首页为index.jsp。文件内容如下:最后定义了一个fileld 的过滤器,是用来过滤字符编码的,后面会提到。
Struts2项目的构建与配置 1.配置struts.xml (1)配置struts.xml可以参考下载的struts-2.3.14.1-all.zip解压后的apps文件夹下的 参考项目的struts.xml文件。 (2)主要的配置如下:
Struts2 + Hibernate开发笔记(一) 由于开发任务紧张,因为这里的开发笔记,仅用于记录遇到的几个struts2和hibernate结合开发的现象.不对其做分析. 1. 在使用struts2时,页面和action之间的传值 这是struts2和struts1最大的区别. Struts2中,action和jsp页面之间的信息交互,是通过action中定义的成员变量来实现的. 例如,我在一个名为EstateAction的类中有如下定义 public class CityAction extends BaseAction { private MthCity mthCity ; private String cityName; private Long cityId private int couter; public String loadCity() throws DataAccessException, BaseException{ counter ++; return "city"; } } 然后,这里上面的类中的成员类MthCity的定义如下 public class MthCity implements java.io.Serializable { private Long cityId private String cityName; public MthCity() { public Long getCityId() { return this.cityId; } public void setCityId(Long cityId) { this.cityId = cityId; public String getCityName() { return this.cityName; } public void setCityName(String cityName) { this.cityName = cityName; } } 这是一个Hibatenate使用的数据对象POJO类. 有了这两个类后,我们来看看Struts2的Action和JSP页面之间是如何交互的 一. JSP -> Action Jsp页面 以下是一个jsp页面submit.jsp.这个页面只有一个功能,就是向struts提交申请 <%@ page language="java" contentType="text/html; charset=gbk"%> <%@ include file="/common/taglibs.jsp"%>
1.Struts2在jsp页面中使用
目录 01 Struts2-Action (5) 一、Struts作用: (5) 二、搭建Struts2的运行环境: (5) 三、Namespace (6) 四、
MyEclipse开发Struts2过程 Struts2是Struts1.x的升级换代产品,但是并没有继承Struts1.x的思想和操作模式,而是一个完全不同的实现方式,所以即使学会了Struts1.x还是得从头学习Struts2,但是当你学会了Struts2后会发现这个产品对编程及配置有了很大的简化,使得程序员将更多的精力集中到业务逻辑编程方面,下面就在MyEclipse8.5M1平台下如何开发基于Struts2的Web应用系统的MVC模式中的VC部分作以简要的描述,M部分还是可以采用其他框架实现,例如Spring+Hibernate等。 (一)创建基于Struts2的Web项目 从MyEclipse的菜单中一次选择File\New\Web Project,在弹窗中填写该项目的名称信息,并且选择J2EE的版本,如图:
(二)添加Struts2支持 将鼠标定位到Package Explorer视窗的该项目名称上,单击右键,在弹出的菜单上依次选择MyEclipse\Add Struts Capabilities,在弹窗中选择Struts的版本为Struts2.x,单击“Next”按钮进入下一个窗口,选择要加入的支持类库,库的选择视项目需求而定,可以在后续开发过程中陆续加入,这里只选择Struts2 Core Libraries。完成这些操作后发现系统在src目录下添加了一个配置文件struts.xml,这个文件就是Struts2的核心配置文件,后续的操作都在此文件中进行。 (三)编写JSP页面代码 这里注意尽量使用Struts2的标签来编写JSP代码,所以要在页面代码开始部分引入标签库,即添加该行代码<%@ taglib prefix="html" uri="/struts-tags"%>,MyEclipse8.5M1目前还不支持基于Struts2的JSP模板,所以在新建JSP页面代码的时候,先选择基于Struts1.x模板,然后再手动修改,也就是把该页面代码中
Struts2_day03 前一天内容 1 在action获取表单提交数据 (1)使用ActionContext类获取 (2)使用ServletActionContext类获取 (3)接口注入 2 结果配置 (1)全局结果页面和局部结果页面 (2)result标签type属性 - type属性值: -- 默认值是dispatcher做转发 -- redirect做重定向 -- chain转发到action -- redirectAction重定向到action 3 struts2提供获取表单数据方式 (1)属性封装 (2)模型驱动封装 (3)表达式封装 4 struts2获取数据封装到集合中 5 使用模型驱动和属性封装注意问题: (1)不能同时使用对同一个表单进行数据操作 6 表达式封装和模型驱动比较 (1)相同点:可以把数据封装到实体类对象里面 (2)不同的:表达式封装可以封装到多个实体类对象里面今天内容 1 ognl概述 2 ognl入门案例 3 什么是值栈 (1)servlet和action区别
(2)值栈存储位置 - 每个action对象里面有一个值栈对象 - 值栈对象里面有action引用 4 如何获取值栈对象 5 值栈内部结构 (1)root:list集合 (2)context:map集合 6 向值栈放数据 (1)s:debug标签 (2)向值栈放字符串 (3)向值栈放对象 (4)向值栈放list集合 - set方法 - push方法 - 定义变量,get方法 7 从值栈获取数据 (1)从值栈获取字符串 (2)从值栈获取对象 (3)从值栈获取list集合 - s:iterator标签使用 8 EL表达式获取值栈数据 (1)增强request里面getAttribute方法 9 ognl表达式#、%使用 OGNL概述 1 之前web阶段,学习过EL表达式,EL表达式在jsp中获取域对象里面的值 2 OGNL是一种表达式,这个表达式功能更加强大, (1)在struts2里面操作值栈数据 (2)一般把ognl在struts2操作:和struts2标签一起使用操作值栈 3 OGNL不是struts2的一部分,单独的项目,经常和struts2一起使用 (1)使用ognl时候首先导入jar包,struts2提供jar包
Struts2 框架第三天 今天重点内容安排: 第一天:struts2 开发流程、访问Action,Action方法调用,结果集类型 第二天:获取请求参数,请求数据校验机制,拦截器 1、V alueStack 值栈的存储原理和相关操作 2、Ognl 表达式语言语法 3、struts2 页面控制标签 4、struts2 form表单相关标签 重点难点:值栈和Ognl 1.值栈和Ognl表达式 1.1.什么是Ognl Ognl 对象导航图语言Object Graphic Navigation Language,类似EL,比EL ${}语法要强大很多,Struts2框架使用OGNL作为默认的表达式语言必须要引入struts标签库 EL Expression Language 表达式语言,用来获取JSP页面四个域范围数据 pageContext、request、session、application )
Ognl 主要用法: 1、访问OGNL上下文值栈对象获取数据(最重要) 2、操作集合对象(结合struts2 标签库使用)---- 生成checkbox 、生成select 1.2.什么是值栈ValueStack接口! 值栈ValueStack 实际上是一个接口,struts2 Ognl使用都是基于值栈完成的 Struts2 内部提供OgnlValueStack的接口实现类,实现了值栈接口! 前端控制器每一次请求都会创建一个值栈对象源码:
一次请求对应一个值栈对象值栈生命周期= request 生命周期的!! 值栈是struts2 一个数据结构,贯穿整个Action实例生命周期(request生命周期),一次请求对应一个Action实例,一个Action实例对应一个值栈实例 值栈保存了Action 和其它常用web对象的引用,通过值栈,间接操作这些对象!1.3.值栈的存储结构 1:采用标签
2008年8月18日自学笔记 (1)虚拟对象系统(VOS)net跨语言集成的的特性来源于VOS的支持,即支持过程性语言也支持对象性语言,解决了不同语言系统间的相容性问题。 (2)元数据:对VOS中类型描述代码的称呼。元数据携带了原代码中类型信息的描述。(3)虚拟执行系统(Visual Executive System VES)是VOS的实现用来驱动运行环境,元数据的生成和使用、公共语言规范(Common Language Specification CLS)的满足性检查以及应用程序执行过程中的内存管理都由他完成。 (4)公共语言运行时CLR: 管理着代码的执行,是一种可操控的执行环境。 (5)公共语言规范(Common Language Spec ification CLS):是CLS定义的语言特性集合,主要用来解决互操作性问题。 (6)静态域(static): 无论建立多少个类的实例,内存中只存在一个静态数据的拷贝。非静态域在类的每次实例话时,每个实例都拥有一份单独的拷贝。 (7)只读域(readonly )与const区别:只能在域的定义中和它所属类的构造函数中进行修改,在其他情况下是“只读”的,只读域的值只有到程序运行时才形成;const型表达式的值在编译时形成。 (8)事件(Event):为类和类的实例提供了向外界发送通知的能力,形象地说,Event 就是类或对象用来“发送通知”的成员。索引指示器:可以想数组那样对对象进行索引访问。 (9)委托是引用方法的一种引用类型,类似于函数指针,二者的主要区别在于委托包括调用其方法的对象。委托是引用在另一个对象中定义的方法的一种类型安全而又可靠的方式。可以引用静态方法、虚拟方法或实例方法。委托广泛用于时间处理。 2008年8月21日C# Sytex (1)代码显示格式设置TextEditort->C# -> Formating->wrapping 解决方案显示设置tools->options->project and solutions->always show solutions (2)客户端状态管理:ViewState 存储要回传到自身的少量信息
Struts1 (1) Struts1和Servlet的关系 (1) 创建第一个Struts1项目 (1) 例子1: (3) 总结重点:struts1的工作流程(基于MVC模式的) (7) 一.普通的Servlet的工作流程 (7) 二.Structs1的工作流程(和上面的对比记忆) (8) Struts标签 (9) Bean标签 (9) html标签 (10) logic标签(逻辑标记) (12) i18n(国际化) (13) Struts1 Struts1和Servlet的关系 Jsp+Servlet+Javabean ActionForm和VO的区别: 一样的内容,不一样的作用 ActionForm只接收前台表单传来的数据 VO是conga后台提取的数据向前台传递 创建第一个Struts1项目 新建一个web项目,选择1.4即可 右键----MyEclipse----Add Struts Capacity
---------------Struts控制文件的路径 TLD(标签) 1) 2)
①spring是什么? struts 是 web 框架 (jsp/action/actionfrom) hibernate 是 orm框架,处于持久层. spring 是容器框架,用于配置bean,并维护bean之间关系的框架 ?spring中有一个非常概念: bean (是java中的任何一种对象javabean/service/action/数据源./dao, ioc(控制反转inverse of control) di( dependency injection 依赖注入) ?画一个框架图 快速入门 开发一个spring项目. 1.引入spring的开发包(最小配置该包把常用的jar都包括, 还要写日志包 2.创建spring的一个核心文件 , [hibernate有核心 struts核心文件 ], 该文件一般 放在src目录下,该文件中引入 xsd文件: 可以从给出的案例中拷贝一份. 3.配置bean
IDEA的使用 一、创建HTML页面 先创建一个项目 选择static web然后next确定文件名和文件地址 右击项目下的idea,new选择HTML file确定文件名和样式
出现HTML界面鼠标移到右边可选择浏览器查看效果 二tomcat的配置和安装 https://www.doczj.com/doc/ff17734662.html,/article/0a52e3f43d9f69bf62ed72f9.html 安装版和解压版的区别: tomcat exe是可执行的安装程序,只需要双击这个文件,就可以开始安装Tomcat 了。在安装过程中,安装程序会自动搜寻JDK和JRE的位置(或手动输入JRE路径,如C:\jdk1.4_0_11\jre)。安装完成后,在Windows系统的“开始”->“程序”菜单下会添加Apache Tomcat5.5菜单组。 tomcat zip是一个压缩包,只需要将它解压到硬盘上就可以了。还是建议下载tomcat 压缩包,通过解压缩的方式安装Tomcat,解压缩的方式也适用于其他的操作系统. 安装与配置: 1、安装版: 下载安装版,点击后,一路next,就直接安装成功。 配置环境变量为TOMCAT_HOME你的安装目录CATALINA_HOME你的安装目录。 这是最简单的安装方法,只要不出错就直接OK,然后你再去官网下载Administration Web Application,直接解压到你的安装目录,就可以直接使用了。 2、解压版: 下载解压版的,解压在你认为的适合的地方。 2.1、修改bin\startup.bat文件: 在第一行前面加入如下两行: SET JAVA_HOME=(JDK目录) SET CATALINA_HOME=(前面解压后Tomcat的目录) 如果需要使用shutdown.bat关闭服务器的话,也按照上面加入两行。
struts:web层,比较简单(ValueStack值栈,拦截器) hibernate:dao层,知识点杂 spring:service层,重要,讲多少用多少--> 【了解】 spring day01:基础(IoC控制反转、DI依赖注入)、整合Junit、整合web spring day02:AOP切面编程、JdbcTemplate spring day03:事务管理、SSH整合 1spring框架概述 1.1 什么是spring ●Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作 Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java 应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式)轻量级开源框架。 ●轻量级:与EJB对比,依赖资源少,销毁的资源少。 ●分层:一站式,每一个层都提供的解决方案 web层:struts,spring-MVC service层:spring dao层:hibernate,mybatis ,jdbcTemplate --> spring-data
Struts2 学习笔记 ---wjt276 [二○一○年一月五日完]
目录 01 Struts2-Action (5) 一、Struts作用: (5) 二、搭建Struts2的运行环境: (5) 三、Namespace (6) 四、
黑马程序员:三大框架Spring-day11笔记Spring事务管理机制 Spring事务管理的四个优点: 1.提供一致的对于不同的事务管理的API 2.支持声明式事务管理(重点) 3.编程事务管理(在开发中应用比较少) 4.优秀的整合与Spring的数据访问 我们重点讲解spring的事务管理的相关的API,还有声明式事务管理Spring事务管理主要提供了三个接口来完成 https://www.doczj.com/doc/ff17734662.html,.springframework.transaction.PlatformTransactionManager 这是一个事务管理器,可以来选择相关的平台(jdbc hibernate jpa…) 2.TransactionDefinition 它定义事务的一些相关信息例如隔离传播超时只读 3.TransactionStatus 它主要描述事务具体的运行状态 1.1.1PlatformTransactionManager 平台事务管理器 在不同的持久化层解决技术它的事务代码不一样。 JDBC开发 Connection con=……; con.setAutoCommit(false);//开启事务 con.rollback(); https://www.doczj.com/doc/ff17734662.html,mit(); Hibernate开发 Session session=….; Transaction t=session.beginTransaction(); https://www.doczj.com/doc/ff17734662.html,mit(); t.rollback();
PlatformTransactionManager接口API DataSourceTransactionManager 主要针对于JdbcTemplate开发MyBatis开发HibernateTransactionManasger主要针对于Hibernate开发JpaTransactionManager 主要针对于JPA开发。 1.1.2TransactionDefinition 它描述的是事务的定义信息。 在TransactionDefinition中定义了大量的常量
1、02_尚学堂马士兵_Struts2_Struts2_HelloWorld_2.avi 指定Tomcat的目录,指定JDK搭建开发环境(拷贝jar包,复制struts.xml 文件此文件不要放在WEB-INF下面,应该放到src下面),在web.xml文件中:
! Struts视频笔记: Struts是一个开源的web框架,框架提高了程序的规范的同时也约束了程序员的自由 为什么会有struts: 因为我们队mvc理解的不同,可能造成不同公司写程序的时候,规范不统一,这样不利于程序的维护和扩展,所以我们有必要用一个统一的规范来开发项目(struts) Struts 的好处: 程序更加规范化,开发效率提高了,可读性增加了,程序的可维护性增加了 ^ 运行原理: 一个请求从浏览器发送给web服务器,,web服务器首先解析主机然后解析web应用的名称 在解析出资源名转发给总司令ActionServlet(该类由struts框架提供给我们的无需编写,只需配置)ActionServlet有一个文件,该文件配置了表单actionForm(军火库),还配置了action,以及他们之间的对应关系,当ActionServlet拿到命令后它会查询文件去填充数据,把用户的数据填充到表单里边,下个动作就是去调用指定的action(小队长),action去从表单中读取数据,调用某个model(士兵,如service)完成任务,完成任务把结果返回给ActionServlet总司令(返回一个执行的结果),-->总司令又去查询文件,决定跳转到哪个jsp页面,返回一个执行结果(形成静态html文件)直接返回给web服务器服务器再把静态页面以h ttp响应给浏览器 ,登录小项目过程步骤: 新建web工程导入struts包编写编写actionForm和action 配置编写和配置测试 中的
spring 1.这个框架并不像hibernate或struts那样为了完成特定的 功能(操作数据库、处理Http请求),它只是用来优化我们的工程的结果、提升设计、降低耦合度。 2.核心: 应用上下文ApplicationContext它就是用来管理工程 中无数类型的核心,一般通过xml文件或者注解来管理。它在启动时载入xml文件或注解中的类、类之间关系的信息,在使用时通过一些方式将管理的类型或对象取出使用。 3.(下载spring.zip,这里面包含了相应的jar包,以及文档) 第一个spring的应用: 1、导入jar包到工程中 2、在src下创建一个叫applicationContext.xml的配置文件
通过这两个代号,我们之后就能取出这个两个类的实例,并进行使用。(相应的类要Hello,Bye事先自己定义好) 3、使用ClassPathXmlApplicationContext来加载上一 步中的xml文件,以及获取其中的某个bean ApplicationContextctx = new ClassPathXmlApplicationContext("applicationContext.xml"); 加载xml文件中的配置信息,两个类就被spring管理起来了Hello h = (Hello)ctx.getBean("hello"); 注意:取出bean时可以用多态 4.开闭原则: 对扩展开放,对修改关闭 需求变更时,尽量扩展一个类,不要去修改原来的类; 这样可以避免在原来正确的类上产生新的bug。 5.spring不但可以动态创建类的实例,也可以通过配置文件动态初始化实例的属性值 1、私有属性要有对应的setter方法 2、在bean中定义property属性,对应类中私有属性, *可以通过配置进行属性的自动设置。
课程内容---…详细 包括整合struts hibernate ------------------------------------ 1.面向接口(抽象)编程的概念与好处 2.IOC/DI的概念与好处 a)inversion of control b)dependency injection 3.AOP的概念与好处 4.Spring简介 5.Spring应用IOC/DI(重要) a)xml b)annotation 6.Spring应用AOP(重要) a)xml b)annotation 7.Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2整合(重要) a)opensessionInviewfilter(记住,解决什么问题,怎么解决) 8.Spring JDBC 面向接口编程…(面向抽象编程) 1.场景:用户添加 2.Spring_0100_AbstractOrientedProgramming a)不是AOP:Aspect Oriented Programming 3.好处:灵活 什么是IOC(DI),,,有什么好处 1.把自己new的东西改为由容器提供 a)初始化具体值 b)装配 -