Structs2框架技术简单介绍
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
谢谢!
Structs2工作流程
用户请求
Struts内置或者用户自定义拦 截器 用户自己编写的Action类 如HelloAction
定义结果的视图
响应
Structs2工作流程
• 第一步 用户向Web容器(如Tomcat)发送请求 (如访问index.jsp)
• 第二步 请求经过一系列的过滤器过滤之后, 把该请求传递StrutsPrepareAndExecuteFilter
2 Structs2核心概念
• 2.1package • 2.2Action • 2.3Result
package元素
• name (Struts2) • namespace:定义带包的命名空间。 与Action名称组合在一起,在项目中决定 Action的URL(user/HelloAction) extend:只该包是否继承其他的包。
第二步、创建Struts2的业务逻辑处理类
//导入ActionSupport类,用户自定义的Struts Action需要继承此类 import com.opensymphony.xwork2.ActionSupport; public class HelloAction extends ActionSupport { //定义一个私有成员变量name,用于获取表单中对应名称输入域的信息。 private String username;//setter和Fra Baidu biblioteketter public String getUsername() { return username; } public void setUsername(String username) { this. username = username;} //覆盖ActionSupport类的execute()方法,用于处理业务逻辑,并返回相应结果视 图 public String execute() {//返回SUCCESS代表的视图 return SUCCESS; } }
优点
• 1. Struts2基于MVC架构,框架结构清晰,开发流程 一目了然,开发人员可以很好的掌控开发的过程。
• 2. 使用OGNL进行参数传递。OGNL提供了在Struts2 里访问各种作用域中的数据的简单方式,你可以方 便的获取Request,Attribute,Application,Session, Parameters中的数据。大大简化了开发人员在获取 这些数据时的代码量。
1.1Structs2配置
Filter 在执行Servlet之前,首先执行Filter程序,并 为之做一些预处理的工作 根据程序需要修改请求和响应 在Servlet被调用之后截获Servlet的执行
1.2 Structs简单示例
• • • • 第一步 创建index.jsp 第二步创建Struts2的业务逻辑处理类 第三步 定义处理结果视图hello.jsp 第四步 在Structs.xml中配置Action
Action接口
Import com.opensymphony.xwork2.ActionSupport; public interface Action{ public static final String SUCCESS=“success”; public static final String NONE=“none” public static final String ERROR=“error” public static final String INPUT=“input” public static final String LOGIN=“login” Public String execute() throws Exception; }
第三步,定义处理结果视图hello.jsp
body中只有一行代码 Hello, ${username}!
第四步,在Structs.xml中配置Action
<package name=“struts2" namespace="/user" extends="struts-default"> <action name="HelloAction" class="com.henu.action.HelloAction"> <result name="success">/WEBINF/page/hello.jsp</result> </action></package>
优点
• 3. 强大的拦截器Struts2的拦截器是一个Action级别 的AOP,Struts2中的许多特性都是通过拦截器来实 现的,例如异常处理,文件上传,验证等。拦截器 是可配置与重用的,可以将一些通用的功能如:登 录验证,权限验证等置于拦截器中以完成一些Java Web项目中比较通用的功能。在我实现的的一Web 项目中,就是使用Struts2的拦截器来完成了系统中 的权限验证功能。
第一步 创建index.jsp
<html><head> <title>第一个Struts简单示例</title> </head> <body> <form action="user/HelloAction" method="post"> 请输入你的大名:<input type="text" name="username" /> <br> <input type="submit" value="提交" /> </form></body></html>
• 第三步 核心过滤器接收到请求信息后,根 据URL(如=“/user/HelloAction” )搜索 Action的映射信息 <package name="ch10" namespace="/user" extends="struts-default"> <action name="HelloAction" class="com.henu.action.HelloAction"> <result name="success">/WEBINF/page/hello.jsp</result> </action></package>
action元素
• name(HelloAction) • class:Action类所在的路径 (com.henu.action.HelloAction) • method: (execute())如需要处理多个业务逻 辑,Action中可以定义多个方法
result属性
• name: <result name="success">/WEBINF/page/hello.jsp</result>
Structs2工作流程
• 第四步: 如找到对应的映射信息,则在 struts.xml文件中定义的Action(如HelloAction) 被实例化,并且执行该Action实例的 execute()方法,处理用户的请求信息。 <action name="HelloAction" class="action.HelloAction"> <result name="success">/WEBINF/page/hello.jsp</result>
Struts2框架技术简单介绍
刘泽宇
Structs2框架技术简单介绍
• 1 Structs2快速入门
• 1.1Structs2配置 • 1.2Structs简单示例 • 1.3Structs2工作流程
• 2Struts.xml文件
• 2.1package • 2.2Action • 2.3Result
• 4. 易于测试Struts2的Action都是简单的POJO,这样 可以方便的对Struts2的Action编写测试用例,大大 方便了Java Web项目的测试。
• 5. 易于扩展的插件机制在Struts2添加扩展是一 件愉快而轻松的事情,只需要将所需要的Jar包 放到WEB-INF/lib文件夹中,在struts.xml中作一 些简单的设置就可以实现扩展。 • 6. 模块化Struts2已经把模块化作为了体系架构 中的基本思想,可以通过三种方法来将应用程 序模块化: 将配置信息拆分成多个文件 把自包含的应用模块创建为插件 创建新的框架特性,即将与特定应用无关的新 功能组织成插件,以添加到多个应用中去。
优点
• 7. 全局结果与声明式异常为应用程序添加 全局的Result,和在配置文件中对异常进行 处理,这样当处理过程中出现指定异常时, 可以跳转到特定页面,这一功能十分实用
Struts2曝出高危安全漏洞
• Struts2曝出2个高危安全漏洞,一个是使用缩 写的导航参数前缀时的远程代码执行漏洞,另 一个是使用缩写的重定向参数前缀时的开放式 重定向漏洞。这些漏洞可使黑客取得网站服务 器的“最高权限”,从而使企业服务器变成黑 客手中的“肉鸡”。 • 解决措施 Apache Struts团队已发布了最新的Struts 2.3.15.1,修复了上述漏洞,建议采用Struts 2.0 至Struts 2.3的网站开发者尽快升级至最新版。
Structs2工作流程
• 此外,如果struts.xml文件中还定义了被请 Action的一些拦截器,那么该Action实例被 调用前后,这些拦截器也会被先后执行。
Structs2工作流程
Structs2工作流程
• 第五步 Action对请求处理完毕以后将返回 一个逻辑视图,该逻辑视图将在struts.xml 文件相应的<result>元素中寻找相应的物理 视图,并返回给客户端 • <result name="success">/WEBINF/page/hello.jsp</result>