Struts基础总结

 

本文是在学习了基础的javaWeb后对Struts的基础总结。java

目的一是,在于之后本身能更加方便的去回顾这些理论知识,另外也但愿可以帮助知识水平和我差很少的人。spring

错误的地方,但愿你们能指出来。apache

 

            Struts基础总结

1.Struts是一个实现MVC设计模式的优秀的框架。Struts定义了通用的控制器,经过配置文件和视图,以Action的概念封装用户请求,让代码更加清晰易读。设计模式

2.Struts2WebWork优秀的设计思想为核心,吸取了Struts框架的部分优势,提供了一个使用更加整洁的MVC设计模式实现的Web应用程序框架。浏览器

 

体系结构

Struts2Struts1的体系差异很是大,由于Struts2使用了WebWork的设计核心。Struts2频繁使用拦截器处理用户请求,容许用户的业务逻辑控制器与Servlet API完全分离。Struts2的体系结构主要包括Struts2的控制器组件,Struts2配置文件和Struts2标签库,3个部分。session

 

Struts2的控制器组件app

Struts2的控制器组件是Struts2框架的核心,事实上全部MVC框架均以控制器组件为核心。框架

Struts2的控制器有一下的两个部分组成ssh

(1)核心控制器:StrutsPrepareAndExecuteFilterjsp

StrutsPrepareAndExecuteFilterStruts2的核心控制器,该控制器做为一个filter运行于Web应用程序中,负责拦截全部的用户请求,当用户请求到达时,该filter会过滤用户请求。若是请求以*.action结尾,则该请求将被转入Struts2框架处理。Struts将根据*去查找对应的action

(2)业务控制器:业务控制器action由用户实现,并在配置文件中进行配置。

a) 彻底的POJO

b) 无需与任何ServletAPI耦合

c) 既可使用execute()做为默认的处理方法,也可使用另一个public String name方法动态调用

 

配置文件

Struts2建立系统的action代理时,须要使用Struts2的配置文件,Struts2的配置文件分为如下两种:

(1)配置actionStruts.xml文件。

(2)配置Struts2全局属性的struts.properties文件(可选)

<struts>

<!-- Struts2Action均需配置于package-->

<!--Struts的常量配置-->

<constant name=”struts.action.extension” value=”do”>

<!--Action的默认访问扩展名*.Action改成*.do-->

<constant name="struts.i18n.encoding" value="UTF-8"></constant>

<constant name="struts.objectFactory" value="spring"></constant>

 

<package name="struts2" namespace="/" extends="struts-default">

<!--定义一个loginAction类,实现类为LoginAction-->

<action name="login" class="LoginAction">

<!--定义结果于视图的映射关系-->

<result name="success">/index.jsp</result>

<result name="error">/error.jsp</result>

</action>

</package>

</struts>

 

Struts2的标签库

导入库:<%@taglib url=”/struts-tags” prefix=”s” %>

 

架包

如下是我在ssh整合时Struts2的必备包

 

 

Struts2的运行流程

(1)浏览器发送请求,如请求/login.action

(2)核心控制器strutsPreprareAndExecuteFilter根据请求决定调用合适的Action

(3)WebWork的拦截器链自动对请求应用通用功能,如workflowvalidation或文件上传等功能。

(4)回调Actionexecute()方法,该方法先获取用户请求参数,而后调用业务逻辑组件来处理用户请求

Actionexecute()方法处理结果信息将被输出到浏览器中,能够是HTML页面、图像、也能够是P DF文档或是其余文档。支持的视图技术很是多,即支持JSP、也支持VelocityFreeMarker等模版技术。

 

 

 

 

 

使用Action来访问servlet API

传统的Web开发中,常常会用到servlet API中的HttpServletRequestHttpSessionServletContent3个对象。

Struts提供了两种方式:解耦的访问方式与耦合的访问方式(是否使用到底层的http)

 

解耦的访问方式

 

Struts23个对象进行了封装,构造了三个Map对象用于代替这三种对象。咱们能够直接使用对应的Map对象保存和读取数据。

 

获取HttpServletRequest对象(访问request对象)

ActionContext context=ActionContext.getContext()

Map request=(Map) context.get(“request”);

 

获取HttpSession对象(访问session

ActionContext context=ActionContext.getContext()

Map session=(Map)context.getSession;

 

获取ServletContext(访问application

ActionContext context=ActionContext.getContext()

Map application=(Map)context.getApplication

 

利用请求对象传递数据,即直接使用ActionContextput()方法将数据保存至ActionContext中,如ActionContext.getContext.put(),至关于request.setAttribute,缘由在于Struts2中的org.apache.struts2.dispatcher.StrutsRequestWrapper类,该类是HttpServletRequest的包装类,其重写了getAttribute方法。

 

耦合的方式

 

获取HttpServletRequest 对象

HttpServletRequest request=ServletActionContext.getRequest();

HttpServletRequest request=A

 

获取HttpSession对象

HttpSession session=ServletActionContext.getRequset().getSession();

 

获取HttpServletResponse对象

HttpServletResponse response=ServletActionContext.getResponse();

 

获取ServletContext对象

ServletContext Context=ServletActionContext.getServletContext();

 

还能够如下方法得到HttpServletRequest对象和ServletContext对象

 

获取HttpServletRequest对象

ActionContext.getContext.get(ServletActionContext.HTTP_REQUEST);

//或者ServletActionContext.HTTP_CONTEXT来获得application

相关文章
相关标签/搜索