2012-07-26 39 views
1

在Struts Action类的执行方法,我们有下列四个参数, HttpServletRequest, HttpServletResponse, ActionForm, ActionMappingStruts只支持HttpProtocol吗?

这是否意味着HTTP以外的任何其他协议不是由支柱支承???我在想!

另外,在Struts v2.x中,我们没有将这些参数嵌入到execute方法中。这是否意味着Struts支持2.0版本的所有协议?

回答

2

简而言之,Struts的开发是为了提供一个更好的warpper,这是基于标准的基于HTTP的web应用程序的开发方式。

框架背后的想法是通过消除其工作的底层HTTP协议的复杂性,使开发更容易和更灵活。

在系统的核心甚至Strut中使用HTTP Request和Repose来为您执行其功能和其他工作。

更新: 框架后续Servlet规范,因此将支持ServletRequest request, ServletResponse response

你问到Struts2的签名所以这里是这个答案,Struts2提供一个干净的方法,使基础,从而使你的行动POJO轻松测试并不意味着它不支持Servlet规范,

Struts2已经清理了execute方法签名,以便删除您的Acton类的底层Servlet依赖关系,但是它使用一组拦截器来取消HTTP复杂性走出你的行动课堂,并轻松地继续写下你尼特测试案例。

虽然Xwork的是S2的核心,您可以编写独立的应用程序,但不是很好的宣传其实

+0

作为这篇出色文章的补充:struts也支持https。 – 2012-07-26 06:36:42

1

Struts是支持更好的方法基于HTTP的Web应用程序的包装。 在后面它使用基于Servlet的机制。

它也有Servlet API.jar作为依赖。

每一个Struts Action类扩展Action和默认覆盖execute

public ActionForward execute(ActionMapping mapping, 
          ActionForm form, 
          HttpServletRequest request, 
          HttpServletResponse response) 

检查 http://struts.apache.org/1.x/apidocs/org/apache/struts/action/Action.html#execute%28org.apache.struts.action.ActionMapping,%20org.apache.struts.action.ActionForm,%20javax.servlet.ServletRequest,%20javax.servlet.ServletResponse%29

有用于非HTTP请求也的方法。