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:bean6         class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />7     <beans:bean8         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高;

转载于:https://www.cnblogs.com/EmilZs/p/9204629.html

Struts2和SpringMVC简单配置以及区别总结相关推荐

  1. struts2+spring+mybatis简单配置

    2019独角兽企业重金招聘Python工程师标准>>> ------------------------------------------配置------------------- ...

  2. springmvc、struts2、servlet的联系与区别

    一 servlet - 体系(组织)结构图 图1 - servlet体系(组织)结构图 - 网 参考: Servlet学习笔记五(相关接口与类) - 哔哩哔哩 Servlet继承体系 - 码农岛 错题 ...

  3. SpringMVC简单项目配置

    一.首先,SpringMVC框架使用分层开发,分层是为了实现"高内聚,低耦合".采用"分而治之"的思想,把问题划分开来各个解决,易于控制,延展和分配资源,最重要 ...

  4. SSH(Struts,Spring,Hibernate )和SSM(SpringMVC,Spring,MyBatis )的区别,抽丝剥茧的给你讲清楚

    SSH 通常指的是 Struts2 做前端控制器,Spring 管理各层的组件,Hibernate 负责持久化层. SSM 则指的是 SpringMVC 做前端控制器,Spring 管理各层的组件,M ...

  5. Struts1、Struts2及SpringMVC对比

    Struts2其实并不是一个陌生的Web框架,Struts2是以Webwork的设计思想为核心,吸收了Struts1的优点,因此,可以认为Struts2是Struts1和Webwork结合的产物. 简 ...

  6. 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    2019独角兽企业重金招聘Python工程师标准>>> 今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制 ...

  7. SpringMVC基础配置及使用

    SpringMVC基础配置及使用 SpringMVC: 1.SpringMVC和Spring的关系:     软件开发的三层架构: web层[表示层.表现层]---->Service层----& ...

  8. struts1,struts2,springMVC对比

    struts1,struts2,springMVC对比 [参考原文:http://blog.csdn.net/xiaokui008/article/details/8980429] Struts1官方 ...

  9. Struts2、SpringMVC、Servlet(Jsp)性能对比 测试 。 Servlet的性能应该是最好的,可以做为参考基准,其它测试都要向它看齐,参照...

    2019独角兽企业重金招聘Python工程师标准>>> Struts2.SpringMVC.Servlet(Jsp)性能对比 测试 . Servlet的性能应该是最好的,可以做为参考 ...

最新文章

  1. 闭包漫谈(从抽象代数及函数式编程角度)
  2. 学习使用RIA Framework Flex创建MySQL管理UI(初学Flex实例教程)
  3. 希捷宣布出货双碟装1TB硬盘 单碟500GB上市
  4. 计算机网络(五)——组建客户机/服务器网络
  5. SHELL判断文件是否包含某个字串
  6. JavaFTP文件传输 简单实现
  7. 你还在对着手机干唱?k歌神器挑选法则
  8. 视音频数据处理入门:颜色空间(二)---ffmpeg
  9. 云备份的正确打开方式,你学会了吗?
  10. Ubuntu中编译linux内核后使用make menuconfig报错的解决办法
  11. Python爬取多网页表格数据(非table)
  12. 今天写了个自定义函数验证身份证号是否符合规则
  13. txt文本去重复 亲测50G文本高效去重复
  14. [十月往昔]——Linux内核中的内存管理浅谈
  15. Android Push实现总结
  16. 本地时间和GMT(UTC)时间的转换
  17. 论文阅读——From Image to Imuge: Immunized Image Generation
  18. Unity 之 纹理类型导入设置和压缩格式介绍
  19. 2.1.3如何实现进程的控制、进程控制相关的原语(创建原语、终止、唤醒、阻塞、切换原语)
  20. 微博的文本编辑和显示(emoji表情,@某人、链接高亮点击)

热门文章

  1. CV01-语义分割笔记和两个模型VGG ResNet的笔记
  2. 使用Python和NLTK的自然语言处理(NLP)教程
  3. Docker的使用(docker pull拉取镜像失败问题解决)
  4. 关于springboot vue前后端分离项目部署到阿里云轻量服务器(前后端分开部署)
  5. 1130 Infix Expression
  6. mysql切换系统盘命令_mysql常用命令
  7. 利用spring aop统一处理异常和打日志
  8. vue下实现textarea类似密码框的功能之探索input输入框keyup,keydown,input事件的触发顺序...
  9. PHP 获取数组最后一个值
  10. 营销自动化为什么能吸引企业的喜欢?它有何魅力?