springmvc(表现层/Web层框架)
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层框架)相关推荐
- 表现层 业务层 持久层 web层 service层 dao层的相关概念描述
我们的架构一般分为两种, 一种是C/S(客户端/服务器),另一种是B/S(浏览器/服务器). 在我接下来学习的SpringMVC种,几乎都是B/S架构开发的. 其标准的三层架构中,一般分为:表现层,业 ...
- 简述mvc和java三层框架,springMVC设计模式和javaWeb三层框架
一.springMVC 设计模式 MVC模式是软件工程中的一种能够软件架构模式,把软件分为三个基本部分,模型(model).视图(view)和控制器(controller).使程序简化,更加直观. ...
- Java Web层框架比较
作者: IT168 戚祥 2007-07-13 -- 比较JSF.Spring MVC.Stripes.Struts 2.Tapestry和Wicket [译者按]这是Matt Raible在今年6 ...
- 从零开始编写自己的C#框架(16)——Web层后端父类
从零开始编写自己的C#框架(16)--Web层后端父类 原文:从零开始编写自己的C#框架(16)--Web层后端父类 本章节讲述的各个类是后端系统的核心之一,涉及到系统安全验证.操作日志记录.页面与按 ...
- Java Web学习总结(30)——Service层在MVC框架中的意义和职责
mvc框架由model,view,controller组成,执行流程一般是:在controller访问model获取数据,通过view渲染页面. mvc模式是web开发中的基础模式,采用的是分层设计, ...
- JAVA秒杀mysql层实现_Java高并发秒杀API之web层
第1章 设计Restful接口 1.1前端交互流程设计 1.2 学习Restful接口设计 什么是Restful?它就是一种优雅的URI表述方式,用来设计我们资源的访问URL.通过这个URL的设计,我 ...
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
2019独角兽企业重金招聘Python工程师标准>>> 今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制 ...
- java 框架 Dao层 Mapper层 controller层 service层 model层 entity层 简介
目录 简介 entity层 mapper层 service层 controller层 简介 SSM是sping+springMVC+mybatis集成的框架. MVC即model view contr ...
- JavaWeb那些事儿(一)--为什么做java的web开发使用struts2,springMVC和spring这样的框架
今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...
- 安卓学习日记(一):了解安卓架构(linux内核层、系统运行库层、应用框架层、应用层)
首先为了理解安卓系统是怎么工作的,就先来看一下android的系统架构,其架构大至可以分为四层:linux内核层.系统运行库层.应用框架层和应用层,那就先说说这几层. 1.linux内核层: Andr ...
最新文章
- R语言ggplot2可视化散点图、移除可视化图像中的多余的图例信息、使用scale_size函数移除数据点大小的图例(legend)
- 互联网协议 — HTTP/2 超文本传输协议第 2 版
- 五本必读的深度学习圣经书籍,入门 AI 从 深度学习 开始
- 第 2 章:初出茅庐【初级篇 - 2.3 动态规划】
- 两块网卡实现多台机器共享上网
- 程序员过关斩将--你的业务是可变的吗
- ORACLE 两个表或两个结果集的数据对比常用的函数
- 指定locale为en_US
- SSH婚庆策划系统案例
- matlab窄带高斯随机信号,06实验六:窄带随机信号仿真与分析
- 凝心聚力 数字未来 | 企企通出席石家庄医药行业数字化转型沙龙
- systemVerilog的typedef用法
- Windows无法安装到这个磁盘,选中的磁盘具有MBR分区表。在EFI系统上,Windows只能安装GPT磁盘。
- 移动计算机无线网络,【移动网络论文】计算机无线网络安全技术应用(共3819字)...
- 随机效应模型介绍及实例分析
- clover 隐藏没用的启动项
- 『自己的工作4』TensorFlow2.0自动微分和手工求导的结果对比!
- Reso | 什么是 XML?
- 图像算法工程师岗位的主要职责(合集)
- 华为无线学习笔记--WLAN(无线)实验
热门文章
- Linux配置http代理(原理)
- 有氧运动存在哪些误区
- electron tray click right click
- 微信之父:张小龙并不孤独
- 吞剑!喷火!这种江湖卖艺套路能吸引观众吗?
- java打开word文件名乱码怎么解决_电脑word文档改变了文件名打开就乱码了怎么办...
- 虚拟机linux删除文件后未释放空间,【Linux命令】删除大文件后磁盘空间未释放问题...
- Google正式收购SketchUp
- idea 查看方法在哪被调用快捷键_IntelliJ IDEA最常用快捷键快速查看手册-工欲善其事,必先利其器...
- 关于travis scott的网名_异地恋情侣网名甜蜜秀恩爱