struts2简要概述一

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

曝出高危安全漏洞-----大概是2013年左右,很多大型企业受影响,具体请自行网络查询。
Struts2曝出2个高危 安全漏洞,一个是使用缩写的导航参数前缀时的远程代码执行漏洞,另一个是使用缩写的重定向参数前缀时的开放式重定向漏洞。这些漏洞可使黑客取得网站服务器的“最高权限”,从而使企业服务器变成黑客手中的“肉鸡”。
解决措施
Apache Struts团队已发布了最新的Struts 2.3.15.1,修复了上述漏洞,建议采用Struts 2.0至Struts 2.3的网站开发者尽快升级至最新版。  [1]  


struts2的Lib目录中的jar包介绍(重要程度排序):

1

struts2-core-2.3.x.jar

Struts 2框架的核心类库

2

xwork-core-2.3.x.jar

Command命令模式框架, Struts2和WebWork都基于和依赖xwork

3

ognl-3.0.x.jar

OGNL对象图导航语言(Object Graph Navigation Language), struts2框架通过其读写对象的属性。(类似于EL但更强大)

4

commons-fileupload-1.2.2.jar

文件上传组件,2.1.6版本后需要加入此文件

5

commons-io-2.0.1.jar

上传文件依赖的jar包

6

commons-lang-2.5.jar

对java.lang包的增强,主要是提供字符串等操作的公用方法

7

commons-logging-1.1.x.jar

ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。(JCL,java通用日志接口)

8

log4j*.jar

一个日志实现

9

freemarker-2.3.*.jar

模版引擎,struts2标签库,依赖freemarker ,Struts 2的UI标签的模板使用FreeMarker编写

10

asm-*.jar

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

11

asm-commons-3.3.jar

提供了基于事件的表现形式

12

asm-tree-3.3.jar

提供了基于对象的表现形式

13

javassist*.jar

生成代理的类库

struts.xml配置文件如下

l package标签:



<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPEstrutsPUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

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

<struts>

<!--

    package:包:以前学习java的时候,

      包的作用:管理java类,不同的包中可以存放同名的java类

          不同的包中存放的代码的功能是不一样

  在struts2中,包的作用也是如此        

    name:包名

    extends:继承,必须继承struts-defalut,在struts-defalut包中实现了非常多的功能

namespace:名称空间,与访问路径相关的

 -->

<packagename="default"extends="struts-default"namespace="/">

<!-- Hello的action

     name:请求的名字

     class:Action对应的完整的包路径 

 -->

<actionname="hello"class="cn.demo.HelloAction">

<!-- 配置业务逻辑处理完成之后,跳转的action

     name:与action中return的String类型的值对应

 -->

<resultname="success">/a_hello/result.jsp</result>

</action>

</package>

</struts>

1.1.1. <action>详解

l action标签:用来管理具体的Action,负责接收客户端的请求,进行处理,并且完成响应

1.name属性:action的名字,用于配置请求的URL路径。

2.class属性:action对应的完整包路径,该类编写了action具体业务逻辑代码。

3.找到action之后,系统会默认会执行Action类中的execute方法

4.没有class属性系统会默认执行ActionSupport中execute方法,而ActionSupport的execute会默认返回 success逻辑视图这种处理方式在struts-default.xml 文件已经进行了规定。

5.当访问的Action不存在的时候,我们可以自行设定默认执行的Action。在操作中,当系统访问不到对应请求的action的时候,会执行我们自行设定默认执行的action,这种方式需要我们在struts.xml文件中提前进行相关配置

快捷键的使用:ctrl+o  查找当前类中的属性和方法

1. Action的编写方式和访问方式(重点)

1.1. Action编写方式(3种)

Struts2中Action有三种实现方式:

第一种:实现Action接口(可以使用结果集常量字符串)

第二种:继承ActionSupport类:(重点中的重点)(它也实现了Action接口)

* 对请求参数进行校验

* 设置错误信息

* 读取国际化信息

第三种:pojo类(非侵入性、简单、干净)

1.1. 注解配置开发(重点)

注解的好处:

1、结果集可以自定义

2、访问的action的名字可以自定义,但action的扫描还是约定action还得符合包+类名约定。)

注解依赖于约定,如何理解?

你使用注解的时候,你的包名得包含action,actions,struts,struts2这个四个关键字之一

 

 

注解怎么用?

答:注解是在类代码中进行配置,不需要单独 XML文件,注解依赖约定扫描 (也就是说:Action 还是存在于 action、actions、struts、 struts2

 

主要使用两个注解:@Action 和@Result,分别用来配置 Action访问路径 和 结果集页面位置。

struts2小结

1. 什么是框架? 为什么使用框架?

2. MVC模式? 三层架构 ?

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

4. 开发struts2 应用,需要导入哪些jar包 (xml开发、 注解开发)

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

6. struts2 运行流程

7. struts2 有哪些配置文件6个, 加载顺序

8. Action相关配置 ,访问Action路径 (package namespace + actionname)

9. 默认Action 和 Action 默认处理类

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

11. Action 三种实现方式 (掌握第二种:继承ActionSupport类)

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

13. Action方法如何使用Servlet API (间接和直接(ServletActionContext))

14. 结果集类型 dispatcher、chain、 redirect、 redirectAction )

15. struts2 约定零配置开发 和 注解开发(约定扫描+注解)






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值