SpringMVC的入口是在web.xml中配置
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
就可以看出 spring的入口是一个servlet,都是以资源的方式访问SpringMVC。
Struts1是在web.xml中配置
<servlet>
<servlet-name>struts1</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>struts1</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<filter>
入口也是servlet 但是struts必须要继承org.apache.struts.action.ActionServlet的子类重写exeute()方法
我们的Action就是面对的是对抽象类编程,请求方式是以任何.do的后缀为请求路径
struts2是在web.xml中配置
<filter>
<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>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
这个就很好了 只要是符合struts2的规范 返回任何的String字符串都能进行页面的流程控制 但是struts的入口是一个过滤器filter
这就是造成struts2性能的致命伤
所以SpringMVC和struts1.x 2.x相比 springMVC的性能安全性都高于struts2.x 上次的struts2的高危漏洞 更是引起了一场业界的轰动 造成巨大的影响