在学习Struts2框架之前,首先我们要明白学习Struts2的目的是何?它能够给我们带来什么非同一般的好处?
Struts2框架是一个流行的全新的MVC框架,它是Struts的下一代产品,适合分层开发,应用于我们的web层开发。
针对此句话,我们需要了解两点:
Struts 2=struts1+webwork,,它是基于webWork而开发的一个全新的框架,其实struts2的出现的原因就是因为webWork框架完美出现,但是唯一美中不足的就是不兼容struts,因为后来再一次升级,才取名struts2,所以,Struts2号称全新框架,也仅仅是相对于Struts1而言。Struts2与Struts1相比,确实是有很多革命性的改进,但他并非是新发布的框架。不过,他比较擅长吸取他人优点,取长补短,吸收了Struts1和WebWork两者的优势,走在了流行之路上。
基于MVC开发的过程,Struts是MVC的一种实现,他将Servlet和jsp标记用作实现的一部分,继承的MVC的所有特性,并针对J3EE的特点,做了相应的变化和扩展,有了自己的个性。实现原理图如下:
Struts2框架是以ActionServlet作为核心控制器,而ActionServlet是以Struts-config.xml作为核心,所以Struts-config.xml就是Struts2框架的神经中枢。当启动容器(浏览器,tomact)时,容器实例化ActionServlet,初始化ActionServlet,在初始化时加载xml文件。ActionServlet根据请求决定是否调用业务逻辑控制器来处理用户的请求,当结果处理完毕后,处理结果将通过JSP呈现给用户
对于Struts2的官方解释,我们必须要去深入理解,我们可以通过一个demo调用来对其原理有一个简单的分析:
对于Struts2框架,我们使用第一步的前提就是在web.xml配置文件中配置一个Filter。(org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter),只有配置完成之后,才可使用。所以我们的执行从此开始。
3、框架使用过程:
<filter> <span style="white-space:pre"> </span><filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 使用这一句,则是关闭了动态方法调用 --> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <package name="default" namespace="/" extends="struts-default"> <!-- 使用pojo创建action --> <action name="demo1" class="cn.itcast.action.Demo1Action"> <result>/success.jsp</result> </action> <span style="white-space:pre"> </span></package> </struts>配置完毕之后,剩下的就是Action和JSP页面的完工了。整体介绍就是如此,代码调用截图,配置如下:
一个优秀的框架可以帮助我们更有效,稳定的开发合格的产品,但是我们也不能单一的去依赖,辅助式的学习可以更加促进我们的成长。