1 springmvc工作原理

    Spring mvc和Struts2都属于表现层的框架,它是Spring框架的一部分.(表现层框架,学习如何从页面(web端)取数据,如何与后台服务交互,交互后如何把数据绑定,在前端显示)。

1、客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet.
2、DipatcherServlet接收到这个请求之后将根据请求的信息以及HandlerMapping的配置找到处理请求的处理器(Handler)。
3-4、DispatcherServlet根据HandlerMapping找到对应的Handler,将处理权交给Handler(Handler将具体的处理进行封装),再由具体的HandlerAdapter对Handler进行具体的调用。
5、Handler对数据处理完成以后将返回一个ModelAndView()对象给DispatcherServlet。
6、Handler返回的ModelAndView()只是一个逻辑视图并不是一个正式的视图,DispatcherSevlet通过ViewResolver将逻辑视图转化为真正的视图View。
7、Dispatcher通过model解析出ModelAndView()中的参数进行解析最终展现出完整的view并返回给客户端。

2 与struts2对比

1.1 Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文
由于Struts2需要针对每个request进行封装,把request,session等servlet生命周期的变量封装成一个一个Map,供给每个Action使用,并保证线程安全,所以在原则上,是比较耗费内存的。
1.2 SpringMVC的入口是servlet,而Struts2是filter
1.3 SpringMVC集成了Ajax,使用非常方便,只需一个注解@ResponseBody就可以实现,然后直接返回响应文本即可,而Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便。
1.4 Spring MVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高(当然Struts2也可以通过不同的目录结构和相关配置做到SpringMVC一样的效果,但是需要xml配置的地方不少)
1.5 设计思想上,Struts2更加符合OOP的编程思想SpringMVC就比较谨慎,在servlet上扩展。SpringMVC开发效率和性能高于Struts2。SpringMVC可以认为已经100%零配置。

3 web.xml简单配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"><display-name></display-name> <welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!-- 防止中文乱码 --><filter><filter-name>charSetFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param></filter><filter-mapping><filter-name>charSetFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 自定义springmvc配置文件的位置 --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><!-- 文件名随意起 这里叫bbb --><param-value>classpath:bbb.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping></web-app>

4 bbb.xml简单配置(springmvc配置文件)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"><!-- 开启包扫描 --><context:component-scan base-package="com.aaa"></context:component-scan>
<!-- 开启springmvc的注解驱动   识别controller中相关的注解--><mvc:annotation-driven/><!-- 配置拦截器 --><mvc:interceptors><!--  自定义登陆拦截器 --><mvc:interceptor><!-- 配置拦截的路径 相当于filter <url-pattern> /** 拦截所有  /*拦截一级  /*/*拦截两级 --><mvc:mapping path="/*/*.do"/><!-- 配置拦截的具体实现类 相当于filter <filter-class> --><bean class="com.aaa.mvc.interceptor.LoginInterCepter"></bean></mvc:interceptor></mvc:interceptors> <!-- 上传文件配置 --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!-- 限制上传文件大小  value是限制的文件大小,单位是字节 大约20M --><property name="maxUploadSize" value="20480000"></property></bean><!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 前缀,相对目录为WebRoot --><property name="prefix" value="/jsp/"></property><!-- 后缀  视图名称以value配置结尾--><property name="suffix" value=".jsp"></property>
</bean></beans>

5 其他图

springmvc(表现层/Web层框架)相关推荐

  1. 表现层 业务层 持久层 web层 service层 dao层的相关概念描述

    我们的架构一般分为两种, 一种是C/S(客户端/服务器),另一种是B/S(浏览器/服务器). 在我接下来学习的SpringMVC种,几乎都是B/S架构开发的. 其标准的三层架构中,一般分为:表现层,业 ...

  2. 简述mvc和java三层框架,springMVC设计模式和javaWeb三层框架

    一.springMVC  设计模式 MVC模式是软件工程中的一种能够软件架构模式,把软件分为三个基本部分,模型(model).视图(view)和控制器(controller).使程序简化,更加直观. ...

  3. Java Web层框架比较

    作者: IT168 戚祥  2007-07-13 -- 比较JSF.Spring MVC.Stripes.Struts 2.Tapestry和Wicket [译者按]这是Matt Raible在今年6 ...

  4. 从零开始编写自己的C#框架(16)——Web层后端父类

    从零开始编写自己的C#框架(16)--Web层后端父类 原文:从零开始编写自己的C#框架(16)--Web层后端父类 本章节讲述的各个类是后端系统的核心之一,涉及到系统安全验证.操作日志记录.页面与按 ...

  5. Java Web学习总结(30)——Service层在MVC框架中的意义和职责

    mvc框架由model,view,controller组成,执行流程一般是:在controller访问model获取数据,通过view渲染页面. mvc模式是web开发中的基础模式,采用的是分层设计, ...

  6. JAVA秒杀mysql层实现_Java高并发秒杀API之web层

    第1章 设计Restful接口 1.1前端交互流程设计 1.2 学习Restful接口设计 什么是Restful?它就是一种优雅的URI表述方式,用来设计我们资源的访问URL.通过这个URL的设计,我 ...

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

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

  8. java 框架 Dao层 Mapper层 controller层 service层 model层 entity层 简介

    目录 简介 entity层 mapper层 service层 controller层 简介 SSM是sping+springMVC+mybatis集成的框架. MVC即model view contr ...

  9. JavaWeb那些事儿(一)--为什么做java的web开发使用struts2,springMVC和spring这样的框架

    今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...

  10. 安卓学习日记(一):了解安卓架构(linux内核层、系统运行库层、应用框架层、应用层)

    首先为了理解安卓系统是怎么工作的,就先来看一下android的系统架构,其架构大至可以分为四层:linux内核层.系统运行库层.应用框架层和应用层,那就先说说这几层. 1.linux内核层: Andr ...

最新文章

  1. R语言ggplot2可视化散点图、移除可视化图像中的多余的图例信息、使用scale_size函数移除数据点大小的图例(legend)
  2. 互联网协议 — HTTP/2 超文本传输协议第 2 版
  3. 五本必读的深度学习圣经书籍,入门 AI 从 深度学习 开始
  4. 第 2 章:初出茅庐【初级篇 - 2.3 动态规划】
  5. 两块网卡实现多台机器共享上网
  6. 程序员过关斩将--你的业务是可变的吗
  7. ORACLE 两个表或两个结果集的数据对比常用的函数
  8. 指定locale为en_US
  9. SSH婚庆策划系统案例
  10. matlab窄带高斯随机信号,06实验六:窄带随机信号仿真与分析
  11. 凝心聚力 数字未来 | 企企通出席石家庄医药行业数字化转型沙龙
  12. systemVerilog的typedef用法
  13. Windows无法安装到这个磁盘,选中的磁盘具有MBR分区表。在EFI系统上,Windows只能安装GPT磁盘。
  14. 移动计算机无线网络,【移动网络论文】计算机无线网络安全技术应用(共3819字)...
  15. 随机效应模型介绍及实例分析
  16. clover 隐藏没用的启动项
  17. 『自己的工作4』TensorFlow2.0自动微分和手工求导的结果对比!
  18. Reso | 什么是 XML?
  19. 图像算法工程师岗位的主要职责(合集)
  20. 华为无线学习笔记--WLAN(无线)实验

热门文章

  1. Linux配置http代理(原理)
  2. 有氧运动存在哪些误区
  3. electron tray click right click
  4. 微信之父:张小龙并不孤独
  5. 吞剑!喷火!这种江湖卖艺套路能吸引观众吗?
  6. java打开word文件名乱码怎么解决_电脑word文档改变了文件名打开就乱码了怎么办...
  7. 虚拟机linux删除文件后未释放空间,【Linux命令】删除大文件后磁盘空间未释放问题...
  8. Google正式收购SketchUp
  9. idea 查看方法在哪被调用快捷键_IntelliJ IDEA最常用快捷键快速查看手册-工欲善其事,必先利其器...
  10. 关于travis scott的网名_异地恋情侣网名甜蜜秀恩爱