Struts2基础知识总结.docx

上传人:b****0 文档编号:8923300 上传时间:2023-05-16 格式:DOCX 页数:15 大小:22.37KB
下载 相关 举报
Struts2基础知识总结.docx_第1页
第1页 / 共15页
Struts2基础知识总结.docx_第2页
第2页 / 共15页
Struts2基础知识总结.docx_第3页
第3页 / 共15页
Struts2基础知识总结.docx_第4页
第4页 / 共15页
Struts2基础知识总结.docx_第5页
第5页 / 共15页
Struts2基础知识总结.docx_第6页
第6页 / 共15页
Struts2基础知识总结.docx_第7页
第7页 / 共15页
Struts2基础知识总结.docx_第8页
第8页 / 共15页
Struts2基础知识总结.docx_第9页
第9页 / 共15页
Struts2基础知识总结.docx_第10页
第10页 / 共15页
Struts2基础知识总结.docx_第11页
第11页 / 共15页
Struts2基础知识总结.docx_第12页
第12页 / 共15页
Struts2基础知识总结.docx_第13页
第13页 / 共15页
Struts2基础知识总结.docx_第14页
第14页 / 共15页
Struts2基础知识总结.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Struts2基础知识总结.docx

《Struts2基础知识总结.docx》由会员分享,可在线阅读,更多相关《Struts2基础知识总结.docx(15页珍藏版)》请在冰点文库上搜索。

Struts2基础知识总结.docx

Struts2基础知识总结

Day1

一、框架概述

1、三大框架:

是企业主流JavaEE开发的一套架构

Struts2+Spring+Hibernate

2、什么是框架?

为什么要学框架?

框架是实现部分功能的代码(半成品),使用框架简化企业级软件开发

学习框架,清楚的知道框架能做什么?

还有哪些工作需要自己编码实现?

3、什么是Struts2?

Struts2是一款优秀MVC框架

MVC:

是一种思想,是一种模式,将软件分为Model模型、View视图、Controller控制器

*MVC由来是web开发

JavaEE软件三层结构:

web层(表现层)、业务逻辑层、数据持久层(sun提供JavaEE开发规范)

=============JavaEE开发更强调三层结构,web层开发注重MVC

struts2就是web层开发框架,符合MVC模式

*struts1、webwork、jsf、SpringMVC都是MVC

4、Struts2和Struts1关系

没有关系,Struts2全新框架,引入WebWork很多技术和思想,Struts2保留Struts1类似开发流程

*Struts2内核webwork

Xwork提供了很多核心功能:

前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL–theObjectGraphNavigationLanguage),IoC(InversionofControl反转控制)容器等

二、struts2快速入门

1、下载开发包

最新版本2.3.14.2

课程以struts22.3.7讲解

2、目录结构

apps:

struts2官方demo

docs:

文档

lib:

jar包

src:

源码

3、导入jar包到开发工程

只需要导入apps/struts2-blank.war中所有jar包----11个jar包

4、编写页面

hello.jsp请求页面

访问struts2入门

success.jsp结果页面

5、在web.xml配置struts2前端控制器(Filter)

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

struts2

/*

6、执行struts2过滤器后,读取struts2配置文件,将请求分发

在src下创建struts.xml

--访问struts2入门-->

--将请求分发给一个Action-->

--action的name就是hello.action去掉扩展名-->

7、执行目标Action中execute方法

8、在Action的execute方法中返回字符串,在struts.xml中配置字符串与页面对应关系

/demo1/success.jsp完成结果页面跳转

======================================================================

三、struts2运行流程分析

1、运行流程

请求----StrutsPrepareAndExecuteFilter核心控制器(预处理执行过滤)-----Interceptors拦截器(实现代码功能)-----Action的execute---结果页面Result

*拦截器在struts-default.xml定义

*执行拦截器是defaultStack中引用拦截器

----通过源代码级别断点调试,证明拦截器是执行

2、配置struts.xml提示问题

如果安装Aptana编辑器,请不要用Aptana自带xml编辑器编写struts2配置文件

struts.xml提示来自于DTD约束,

DOCTYPEstrutsPUBLIC

"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN"

"http:

//struts.apache.org/dtds/struts-2.3.dtd">

如果可以上网,自动缓存dtd,提供提示功能

如果不能上网,也可以配置本地DTD提示

***导入DTD时,应该和配置DTD版本一致

3、关联struts2源码

关联zip包

4、ConfigBrower插件使用

提供在浏览器中查看struts2配置加载情况

将解压struts2/lib/struts2-config-browser-plugin-2.3.7.jar复制WEB-INF/lib下

访问http:

//localhost:

8080/struts2_day1/config-browser/index.action查看struts2配置加载情况

四、struts2常见配置

学习路径

1)、struts.xml常量配置(配置文件顺序)、Action访问(ServletAPI)、结果集(使用Struts2编写简单案例)

2)、请求数据

3)、响应页面生成

1、struts2配置文件的加载顺序

struts2配置文件由核心控制器加载StrutsPrepareAndExecuteFilter(预处理,执行过滤)

init_DefaultProperties();//[1]----------org/apache/struts2/default.properties

init_TraditionalXmlConfigurations();//[2]---struts-default.xml,struts-plugin.xml,struts.xml

init_LegacyStrutsProperties();//[3]---自定义struts.properties

init_CustomConfigurationProviders();//[5]-----自定义配置提供

init_FilterInitParameters();//[6]-----web.xml

init_AliasStandardObjects();//[7]----Bean加载

结论:

default.properties该文件保存在struts2-core-2.3.7.jar中org.apache.struts2包里面(常量的默认值)

struts-default.xml该文件保存在struts2-core-2.3.7.jar(Bean、拦截器、结果类型)

struts-plugin(插件).xml该文件保存在struts-Xxx-2.3.7.jar(在插件包中存在,配置插件信息)

struts.xml该文件是web应用默认的struts配置文件(实际开发中,通常写struts.xml)***

struts.properties该文件是Struts的默认配置文件(配置常量)

web.xml该文件是Web应用的配置文件(配置常量)

*后加载文件中struts2常量会覆盖之前加载文件常量内容

2、struts.xml完成Action相关配置

1)必须要为元素配置元素(struts2围绕package进行Action的相关配置)

配置package三个常用属性

name包名称,在struts2的配置文件文件中包名不能重复,name并不是真正包名,只是为了管理Action

namespace和的name属性,决定Action的访问路径(以/开始)

extends继承哪个包,通常开发中继承struts-default包(struts-default包在struts-default.xml定义)

*继承struts-default包后,可以使用包中定义拦截器和结果类型

2)Action的通过元素配置

的name和的namespace属性共同决定Action的访问路径!

例如:

访问路径/user/hello.action

3)元素配置默认值

的namespace默认值/

的class默认值ActionSupport类

的name默认值success

3、默认Action和Action的默认处理类

1)默认Action,解决客户端访问Action不存在的问题,客户端访问Action,Action找不到,默认Action就会执行

2)默认处理类,客户端访问Action,已经找到匹配元素,但是元素没有class属性,执行默认处理类

*在struts-default.xml配置默认处理类ActionSupport

4、struts2常量配置(键值对properties)

1)struts2默认常量在default.properties中配置

2)开发者自定义常量

struts.xml(要求)

格式:

struts.properties(要求)

格式:

struts.devMode=true

web.xml

格式:

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

struts.devMode

true

3)常用常量

-----相当于request.setCharacterEncoding("UTF-8");解决post请求乱码

---访问struts2框架Action访问路径扩展名(要求)

*struts.action.extension=action,,默认以.action结尾扩展名和不写扩展名都会分发给Action

false不缓存,true浏览器会缓存静态内容,产品环境设置true、开发环境设置false

提供详细报错页面,修改struts.xml后不需要重启服务器(要求)

5、struts2配置文件分离

通过将struts2配置文件拆分

上午小结:

1、struts2快速环境搭建(入门案例)

2、理解struts2运行流程图

3、配置文件加载顺序

4、Action配置(Action的访问路径=包名称空间+Action的Name组成)

5、常量配置

5、Action的访问

HTTP请求提交Struts2StrutsPrepareAndExecuteFilter核心控制器------请求分发给不同Action

1、让请求能够访问Action-----Action书写方式三种

第一种Action可以是POJO((PlainOldJavaObjects)简单的Java对象)----不需要继承任何父类,实现任何接口

*struts2框架读取struts.xml获得完整Action类名

*obj=Class.forName("完整类名").newInstance();

*Methodm=Class.forName("完整类名").getMethod("execute");m.invoke(obj);通过反射执行execute方法

第二种编写Action实现Action接口

Action接口中,定义默认五种逻辑视图名称

publicstaticfinalStringSUCCESS="success";//数据处理成功(成功页面)

publicstaticfinalStringNONE="none";//页面不跳转returnnull;效果一样

publicstaticfinalStringERROR="error";//数据处理发送错误(错误页面)

publicstaticfinalStringINPUT="input";//用户输入数据有误,通常用于表单数据校验(输入页面)

publicstaticfinalStringLOGIN="login";//主要权限认证(登陆页面)

*五种逻辑视图,解决Action处理数据后,跳转页面

第三种编写Action继承ActionSupport(推荐)

在Action中使用表单校验、错误信息设置、读取国际化信息三个功能

2、Action中方法调用

1)在配置元素时,没有指定method属性,默认执行Action类中execute方法

2)在元素内部添加method属性,指定执行Action中哪个方法

执行RegistAction的regist方法

*将多个请求业务方法写入到一个Action类中

3)使用通配符*,简化struts.xml配置

添加客户

删除客户

struts.xml

---{1}就是第一个*匹配内容

3、动态方法调用(零配置路线)

访问Action中指定方法,不进行配置

1)在工程中使用动态方法调用,必须保证struts.enable.DynamicMethodInvocation=true常量值为true

2)在action的访问路径中使用"!

方法名"

页面

add.action">添加商品

配置

执行ProductAction中的add方法

六、在Action中使用ServletAPI

1、在Action中解耦合方式间接访问ServletAPI---------使用ActionContext对象

在struts2中ActionAPI已经与ServletAPI解耦合(没有依赖关系)

*ServletAPI常见操作:

表单提交请求参数获取,向request、session、application三个范围存取数据

actionContext=ActionContext.getContext();

1)actionContext.getParameters();获得所有请求参数Map集合

2)actionContext.put("company","传智播客");/actionContext.get("company")对request范围存取数据

3)actionContext.getSession();获得session数据Map,对Session范围存取数据

4)actionContext.getApplication();获得ServletContext数据Map,对应用访问存取数据

2、使用接口注入的方式,操作ServletAPI(耦合)

ServletContextAware:

注入ServletContext对象

ServletRequestAware:

注入request对象

ServletResponseAware:

注入response对象

*程序要使用哪个Servlet的对象,实现对应接口

3、在Action中直接通过ServletActionContext获得ServletAPI

ServletActionContext.getRequest():

获得request对象(session)

ServletActionContext.getResponse():

获得response对象

ServletActionContext.getServletContext():

获得ServletContext对象

*静态方法没有线程问题,ThreadLocal

=================================================================================================================================================

七、基于注解的struts2开发

1、约定struts2提供默认规则,实现零配置

1)导入jar包11个jar+struts2-convention-plugin-2.3.7.jar

2)在web.xml配置前端控制器

3)编写页面

4)插件中plugin配置文件

编写Action类,必须位于action,actions,struts,struts2四个包中

以Action结尾

****结果result页面存放位置

Action被扫描后,如何确定Action的访问路径的?

cn.itcast.struts2.HelloAction(HelloAction位于直接位于四个扫描包下,namespace是/,A

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2