• Struts2和SpringMVC简单配置以及区别总结


    Struts2:

      struts 2 是一个基于MVC(mode-view-con)设计模式的Web应用框架,是由Struts1和WebWork两个经典框架发展而来的。

      工作流程:

        1客户端浏览器发出HTTP请求

        2根据web.xml配置,该请求被FilterDispatcher(过滤器调度员)接收

        3根据struts.xml配置,找到需要调用的Action类和方法,并通过IOC(控制反转)方式,将值注入给Action

        4Action调用业务逻辑组件处理业务逻辑

        5Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应的页面

        6返回HTTP响应到客户端浏览器

      struts2配置过程:

        1:导入Struts2核心jar包,在web.xml配置过滤器filter。      //注:过滤器作用主要是过滤request请求 

     1 <!--配置struts2过滤器-->
     2 <!--配置filter需要配置<filter>和<filter-mapping>标签-->
     3 <!--<filter>标签配置Filter名称,实现类以及初始化的参数。可同时配置多个初始化参数-->
     4 <filter>
     5     <filter-name>struts2Filter</filter-name>
     6     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
     7 </filter>
     8 <!--<filter-mapping>标签配置什么规则下使用这个Filter-->
     9 <filter-mapping>
    10    <!--<filter-name>与上面Filter的那么匹配-->
    11     <filter-name>struts2Filter</filter-name>
    12    <!--<url-pattern>:配置url的规则,可以配置多个,也可以使用通配符(*),可配置多个url-pattern.-->
    13 <url-pattern>/*</url-patten>
    14 </filter-mapping>
    15 <!--常用的Filter有字符编码Filter、防盗链Filter、权限校验Filter、GZIP 压缩 Filter、文件上传Filter-->
      <!--在这里这些Filter就不一一配置了,如果想了解的话可以看这个人的博客: https://blog.csdn.net/u012228718/article/details/39521677/,很详细。-->

         2:配置struts.xml;在src目录下创建struts.xml文件,这里主要是配置Action。

     1 <package name="user" namespace="/user" extends="struts-default">
     2         <action name="list" class="action.UserAction" method="list">
     3             <result name="success">/list.jsp</result>
     4         </action>
     5         <action name="add" class="action.UserAction" method="add">
     6             <result name="success">/add.jsp</result>
     7         </action>
     8         <action name="delete" class="action.UserAction" method="delete">
     9             <result name="success">/delete.jsp</result>
    10         </action>
    11         <action name="update" class="action.UserAction" method="update">
    12             <result name="success">/update.jsp</result>
    13         </action>
    14 </package>

    SpringMVC:是spring提供的一个强大而灵活的WEB框架,在springmvc中是通过dispatcherservlet来管理request请求的。

      Spring MVC主要由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成。

        1.DispatcherServlet:主要负责接受HTTP请求,协调springmvc各个组成部分工作。其主要功能:

          1).截获符合特定格式的URL请求。

          2).初始化DispatcherServlet上下文对应WebApplicationContext,并将其与业务层、持久化层的WebApplicationContext建立关联。

          3).初始化Spring MVC的各个组成组件,并装配到DispatcherServlet中。

        2:处理器映射(HandlerMapping):能够完成客户请求到Controller的映射。

        3:处理器(控制器Controller):功能和struts2的action功能是一样的,当Controllert处理完用户请求后,则返回ModeAndView给DispatcherServlet前端控制器。

        4:视图解析器(ViewResolver):spring提供视图解析器在WEB应用中查找View对象,从而将结果渲染给客户。

      SpringMVC配置过程:

        1:配置web.xml,主要在配置中设置springmvc-context.xml的路径

     1   <servlet>
     2         <servlet-name>appServlet</servlet-name>
     3         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     4         <init-param>
     5             <param-name>contextConfigLocation</param-name>
     6             <param-value>classpath:META-INF/spring/springmvc-context.xml</param-value>
     7         </init-param>
     8         <load-on-startup>1</load-on-startup>
     9     </servlet>
    10     <servlet-mapping>
    11         <servlet-name>appServlet</servlet-name>
    12         <url-pattern>/</url-pattern>
    13     </servlet-mapping>

        2:配置spring-context.xml文件,这一部分主要是开启注解功能、配置试图解析器

     1   <!-- ①:对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 -->
     2     <context:component-scan base-package="com.zs" />
     3 
     4     <!-- 这两个类用来启动基于Spring MVC的注解功能,将控制器与方法映射加入到容器中 -->
     5     <beans:bean
     6         class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
     7     <beans:bean
     8         class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
     9 
    10     <!-- 这个类用于Spring MVC视图解析 -->
    11     <beans:bean id="viewResolver"
    12         class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    13         <beans:property name="prefix" value="/WEB-INF/pages/" />
    14         <beans:property name="suffix" value=".jsp" />
    15     </beans:bean>

     Struts2和SpringMVC的区别:

      1:Struts2的核心是基于Filter,即StrutsPreparedAndExcuteFilter。

        SpringMVC的核心是基于Servlet,即DispatcherServlet(前端控制器)。

      2:Struts2是基于类开发的,传递的参数是通过类的属性传递,所以只能设置为多例模式。

        SpringMVC是基于类的开法开发的,也就是一个url对应一个方法,传递的参数是传到类的形参上,即可设置为单例模式也可设置为多例模式。

      3:Struts2是采用值栈存储请求以及响应数据,OGNL存取数据。

        SpringMVC是request来解析请求,然后其内部的getParmater方法来给方法形参赋值,然后在把处理后的数据通过ModeAndView存储,Mode存储数据,View存储返回的页面,再把对象通过request传输到页面去。

      4:拦截器机制不同:SpringMVC是独立的AOP实现的,而Struts2有自己的interceptor机制。

      5:Spring MVC和Spring是无缝(无缝:无须数据格式转换,直接访问来自数据源数据格式)的。从这个项目的管理和安全上也比Struts2高;

  • 相关阅读:
    Maven入门教程
    认识Java Core和Heap Dump
    [Java IO]03_字符流
    Eclipse 实用技巧
    可变和不可变的区分
    什么猴子补丁待补充
    当退出python时,是否释放全部内存
    解释python中的help()和dir()函数
    在python中是如何管理内存的
    解释一下python中的继承
  • 原文地址:https://www.cnblogs.com/EmilZs/p/9204629.html
Copyright © 2020-2023  润新知