struts2day01笔记Word文档格式.docx

上传人:b****4 文档编号:18391710 上传时间:2022-12-16 格式:DOCX 页数:32 大小:1.49MB
下载 相关 举报
struts2day01笔记Word文档格式.docx_第1页
第1页 / 共32页
struts2day01笔记Word文档格式.docx_第2页
第2页 / 共32页
struts2day01笔记Word文档格式.docx_第3页
第3页 / 共32页
struts2day01笔记Word文档格式.docx_第4页
第4页 / 共32页
struts2day01笔记Word文档格式.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

struts2day01笔记Word文档格式.docx

《struts2day01笔记Word文档格式.docx》由会员分享,可在线阅读,更多相关《struts2day01笔记Word文档格式.docx(32页珍藏版)》请在冰豆网上搜索。

struts2day01笔记Word文档格式.docx

开发流程类似struts1,内部结构类似webwork

(struts2和webwork源自xwork命令模式框架)

1.3.struts2开发包结构

使用框架,导入jar包

课程使用struts-2.3.15.3-all.zip版本学习

apps使用demo(方便后期快速导入jar包和配置文件)

开发中war重命名成zip包解压找到里面的13个核心jar包

doc文档(学习struts2的官方官方规范文档)

lib开发struts2需要的所有jar包

src源代码

开发struts2没必要导入lib下128个jar包(去struts2_blank.war下方找struts2最基本jar)

将war包改为zip扩展名,解压缩

回顾jar记忆:

核心struts2-core-3.15.3.jar+xwork-core+ognl(3)上传(2jar)日志:

2jar字符串lang1

asm.*3jar处理字节码信息javassist.jar1代理相关freemarker1jar图形模板引擎

开发strutrs2基包导入web工程!

1.4.struts2入门理论

JavaEE设计模式:

前端控制器模式过滤器模式访问如图:

前段控制器作用:

请求分发!

通过struts.xml配置给指定Action

struts前端控制器:

开发中将所有的重复的代码提前到前端控制器去完成,在Action中只要写不重复业务处理代码!

2.Struts2快速入门案例

第一步:

在myeclipse新建webproject

选择javaee版本,课程优先5.0------myeclipse2014servlet版本2.5

采用JDK6编译器

第二步:

导入struts2开发jar包

apps/struts2_blank.war/WEB-INF/lib/13个jar包

asm-*字节码操作类库(.class文件)

commons-fileupload文件上传依赖commons-io

commons-lang3对字符串、数据操作公共方法

commons-loggingJava通用日志接口,依赖日志实现log4j

freemarker模板引擎(struts2标签库,依赖freemarker)

javassist生成代理

ognl表达式语言(比EL强大很多倍)

struts2-core核心jar包

xwork-corestruts2和webwork依赖命令模式框架

2:

配置web.xml

3:

配置struts.xml推荐找到2.3.15.jar-->

apps目录:

struts-blank自带struts.xml文件导入!

编写程序

编写HelloAction(类似之前写的Servlet)

5struts.xml注册action和请求资源虚拟路径映射!

访问该actionhttp:

//localhost/strut2_day01/hellAction

结果!

!

运行流程分析图解:

3.分析struts2运行原理

Struts2核心控制器StrutsPrepareAndExecuteFilter(准备和执行)

--------前端控制器模式

请求---执行一堆拦截器组件(业务功能)----具体Action

Struts2可以复用代码功能,基于Interceptor实现的

执行了哪些拦截器?

小结原理:

1:

通过web.xml配置前端控制器

前端控制器执行一组拦截器通过struts.xml访问具体action执行业务方法

actionexecute方法返回字符串结果页面跳转!

拦截器组件执行顺序:

参考struts-core.jar提供struts-default.xml配置文件

默认情况下,访问每个Action,defaultStack都会执行!

每个拦截器都会被调用,一些重复功能,由拦截器去实现的!

3.1.配置struts.xmlDTD提示

struts.xml引入DTD约束(限制如何配置这个文件)

⏹如果电脑可以联网,自动从网上下载DTD,缓存提供提示

⏹如果电脑没有联网,在本地配置DTD文件位置,提供本地提示

struts-2.3.15.3\src\core\src\main\resources

文件struts.xml关闭重新打开有自动提示标签!

4.struts2常用配置

配置文件源码分析流程

4.1.框架配置文件

配置文件加载顺序

通过源码跟踪执行主要的配置文件哪些?

init容器启动的时候加载配置文件!

跟踪

dispatcher.init();

配置文件的加载顺序!

核心defalust.properties[1]struts-default.xmlstruts-plugins.xmlstruts.xml[2]struts.properies[3](修改框架默认配置信息)

⏹Struts2常量配置文件

⏹default.properties(框架执行加载配置信息)struts-corejar包org.apache.struts2包下

项目默认配置信息!

⏹Struts2框架内置核心配置文件struts-corejar包struts-default.xml拦截器结果集

(Bean元素、结果集类型、拦截器…)

在struts2框架体系中,package实现一些配置复用,编写子包继承struts-default

⏹Struts2框架插件配置文件位于每个插件包根目录struts-plugin.xml

扩展一些插件配置

用户自定义配置因为开发中往往需要更改框架默认配置信息参数

⏹在用户项目src目录struts.xml,推荐使用!

进行用户开发相关配置

⏹用户也可以添加properties修改框架默认加载信息!

⏹在用户项目src目录struts.properties,文件名不能修改!

⏹用户自己常量配置文件default.properties不推荐!

⏹在web.xml配置struts2常量(更不推荐)

规则:

后加载配置文件,配置内容,可以覆盖之前加载配置内容!

开发人员主要采用struts.xml或者struts.properties

struts.properties(只能配置常量)

struts.xml修改struts.xml添加标签<

constantname="

"

value="

>

<

/constant>

测试通过struts.xml或者自定义struts.properties修改框架加载的默认配置信息!

修改访问路径扩展名struts.action.extension=action,,改成自己的扩展名

4.2.详细分析Action相关映射配置

Struts2提供前端控制器,采用请求分发思想,将不同url请求,分配给不同Action进行处理,

需要在struts.xml配置请求路径和Action映射关系!

struts2package作用

Package可以用来管理Action,实现包内配置复用(通过包继承实现)

struts-default.xml定义一个package

包内定义大量结果集类型和拦截器

用户开发package通常继承struts-default包

name属性:

包名称,在struts容器具有唯一性(在开发中可以用模块名称作为包名)

namespace属性:

名称空间区分重复性

举例:

如果两个包存在同名Action,需要名称空间区分action访问路径

访问上面Action应用名称空间

http:

//localhost/struts2_day01/demo2/hello.action

4.3.struts2常量配置

在struts2六种配置文件中,都可以配置struts2常量,后加载配置文件常量可以对先加载配置文件进行覆盖!

常用常量分析

1、struts.i18n.encoding=UTF-8

相当于request.setCharacterEncoding(“utf-8”);

解决post请求乱码问题

Struts2开发时,无需关注post乱码问题

2、struts.action.extension=action,,

Action请求映射路径默认扩展名

//localhost:

8080/struts2_day1/hello也可以访问HelloAction

如果请求路径必须以.action结尾

3、struts.configuration.xml.reload=true

修改struts.xml配置后,无需重启服务器

当设置devMode=true激活xml自动重新加载

4、struts.ui.theme=xhtml

设置页面标签显示样式//struts-tag标签库

5、struts.objectFactory=struts

负责创建Action对象类

6、struts.enable.DynamicMethodInvocation=true//默认是false

访问Action支持动态方法调用访问action组件可以采用动态调用的方式进行.

配置文件分离,在大型项目中,因为如果使用一个配置文件,需要配置很多Action,不方便维护,struts.xml提供<

include>

标签,将配置分离出去

5.访问Action

5.1.Action三种书写格式

第一种写法,编写自定义Action类,实现Action接口

Action接口提供execute处理业务逻辑方法

实现Action接口!

struts.xml配置

访问:

Actionhttp:

//localhost/struts2_day01/helloAction

第二种写法:

编写自定义Action继承ActionSupport类(间接实现Action接口)

ActionSupport类的特点:

源码:

添加了更多的接口实现

ActionSupport提供更多功能(数据校验、国际化…)

编码:

struts.xml配置注册!

访问actionhttp:

//localhost/struts2_day01/helloAction2

第三种写法:

POJO写法domain--->

充当Action

struts.xml配置

POJO(PlainOldJavaObject)简单的Java对象,实际就是普通JavaBeans

小结:

5.2.关于Action的业务方法说明

1:

访问指定业务方法<

action标签添加method="

对应Action中指定方法名称"

配置struts.xml

//localhost/struts2_day01/loginAction

通过设置method属性,执行Action不同业务方法

设置method属性,指定调用Action组件的对应方法

启示:

可以在一个Action中编写多个业务方法,在访问时,通过method区别

5.2.1.使用通配符简化路径和Action业务方法映射配置

案例引入:

员工管理完成crud操作!

按照规则完成资源路径编写

编写员工管理业务方法Action

配置struts.xml配置通配符的写法!

注意:

*和{1}表示的意思!

案例2:

演示多颗星的业务引入商品管理user.jsp页面添加

添加商品管理ActionProductAction同包下

配置struts.xml完成对多个业务的操作员工管理和商品管理公用同一个struts.xml配置!

多颗星的表示意思和占位符{1}{2}

{1}对应name中第一个*匹配的内容

小节:

Action业务方法的访问:

明确访问指定的业务方法!

method属性固定

<

actionname="

registerAction"

class="

cn.itcast.struts2.login.UserAction"

method="

register"

/action>

2:

当一个action多个业务方法为了简化struts.xml配置引入通配符概念

方法{1}name属性值="

*"

*_Action"

cn.itcast.struts2.product.ProductAction"

{1}"

3:

业务模块较多也可以引入2颗星的编码

*-*第一颗星方法名称第二颗星一般访问的Action名称

*_*"

cn.itcast.struts2.login.{2}"

5.2.2.动态方法调用

动态方法调用,效果类似通配符玩法,无需配置method属性

举例:

在新版本struts2中动态方法调用,默认是关闭的

演示动态方法调用:

编写:

book.jsp

注意请求资源地址的路径写法:

!

编写BookAction

配置struts.xml完成配置

最后开启动态方法调用配置查看默认的default.properties

默认是关闭的在自己的strut.xml开启

测试完成!

5.3.Action访问Servlet相关API

5.3.1.Action与ServletAPI解耦合方式调用

ServletAPIdoGet(HttpServletRequest,HttpServletReponse)

---Servlet依赖request和response(代码中直接依赖----耦合)

Struts2设计思想与ServletAPI解耦合,编写Action中不再直接依赖Servlet任何API

Struts2提供ActionContext类(Action上下文)

上下文:

与容器相关,获取容器相关对象、信息----工具类

提供大量间接操作ServletAPI(request、response、session、application)方法

5.3.2.Action直接操作ServletAPI

方式一:

接口注入ServletAPI

通过接口注入获取request等对象!

方式二:

通过ServletActionContext类---直接获取ServletAPI

获取表单请求参数信息:

页面请求:

\3:

action获取表单数据

小结servletapi

action获取:

requestsessionresponseparamters等等对象

ActionContext.getSession()getParameters()

ServletActionContextrequestresponsepageContext.....

Struts2推荐优先ActionContext(解耦合方式)

6.result结果集类型的使用

视图:

决定结果页面跳转:

视图:

字符串查看Action接口源码

常量信息:

Action接SUCCESS成功视图

⏹NONE没有结果视图,用户自己生成响应数据

⏹ERROR错误视图

⏹INPUT输入视图(数据输入非法,要求用户重新输入)

⏹LOGIN登陆视图(如果用户未登陆,使用登陆视图)

⏹案例一动态方法调用演示结果集视图的跳转

案例二通配符:

改写customer.jsp页面

编写CustomerAction结果集字符串和方法名称同名

struts.xml配置多元化!

注意:

*的值等于={1}值!

⏹局部结果集:

action>

标签内部配置<

result>

元素,只对当前Action有效

⏹全局结果集:

对package内所有Action生效,使用<

global-results>

配置

配置<

元素时,name是逻辑视图名称,type是结果集类型

默认type:

dispatcher(请求转发)

其它结果集类型struts-default.xml中

⏹请求转发结果集dispatcher(默认值)同一次请求,采用request传递数据

dispatcher转发Action--->

jsp转发跳转携带数据要求数据转发目的地jsp

⏹重定向到某个jsp页面,type设置redirect

在登陆之后,重定向到主页面,发起一次新的请求,不能通过request传递参数

redirect重定向请求目的地:

jsp/actionrequest不能转发携带数据

⏹使用redirectAction重定向到一个action

共同特点:

不能携带数据

目的地:

只能是:

action不可以跳转到jsp页面

⏹chain完成数据由一个action转发到Action可以在action和action之间携带数据!

注意点:

不可以目的组件是jsp目的地是action

配置<

标签/不需要

struts.xml配置

知识点:

1、什么是框架?

 为什么使用框架?

框架是一个已经完成的通用性代码封装.可以看做软件的半成品简化代码开发

2、三层结构?

web(struts2是一个web层的框架)servicedao

3、struts2是一个表现层框架,和struts1、webwork关系?

struts2是有struts1+webwork框架衍生而产生的

4、开发struts2应用,需要导入哪些jar包

13个基本jar可以在核心zip包中apps目录下blank.war解压而来

5、如何配置struts.xml配置文件提示

联网或者配置本机的xmlcatalog

6、struts2代码运行流程

客户端的请求由前端控制器经过处理然后分发请求到目标Action组件处理相关业务

7、struts2有哪些配置文件,加载顺序struts-default.propertiesstruts-default.xml

8、Action相关配置,访问Action路径(namespace+actionName)

9、如何修改默认配置文件加载的参数信息?

struts.xml添加标签<

10、常用常量配置devMode、Action扩展名配置、动态方法调用开启

11、Action三种书写方式常用:

xxxextendsActionSuppot

12、Action的方法调用(method属性使用,通配符使用,动态方法调用)

13、Action方法如何使用ServletAPI(间接和直接)

14、结果集类型(掌握:

dispatcher、redirect、redirectActionchain)

作业练习:

struts2+DbUtils框架登陆功能

用户名密码错误,重新登陆---INPUT

用户名密码正确,重定向主页---SUCCESS

获取表单的请求参数:

ServletActionContext-->

request

ServletActionContext.getRequest().getParameter(name)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1