springmvc框架

SpringMVC执行流程

非 Y 不嫁゛ 提交于 2020-01-15 13:01:20
一、springMvc概念 springMvc是基于servlet的web框架,其简化了web程序的开发 二、springMvc请求流程 在阅读时不妨可以带着几个问题阅读: 1.我们通常在浏览器输入的接口怎么由DispatcherServlet调到具体的Handler的(就是我们自己开发的Controller类) 2.编写Controller的形式有哪几种? springMvc重要组件: 之所以先说这几个组件,是因为只要了解了这几个组件后你便可以对springMvc请求流程有个大致的清晰认识了。(Handler就是我们写的Controller) HandlerMapping HandlerAdapter ViewResolver View HandlerExceptionResolver HandlerInterceptor DisPatcher作为一个主流程入口,看一下DispatcherServlet结构 DispatcherServlet为了简洁,省去了很多方法跟属性 public class DispatcherServlet extends FrameworkServlet { //定义了默认策略名字 private static final String DEFAULT_STRATEGIES_PATH = "DispatcherServlet.properties";

springmvc和struts2的区别

泄露秘密 提交于 2020-01-15 09:03:41
谈谈springmvc和struts2的区别 相同点 :二者都是基于mvc的web层的框架,都是负责接收用户浏览器提交的请求参数,通过某些校验操作调用业务层,而后获取到业务层返回的数据,将数据通过某种方式在前台展示。 不同点 :   (1)springmvc是基于方法开发的,struts2是基于类开发的。   (2)因为二者基于的出发点不同,所以在接收请求参数时区别比较大。     springmvc是通过参数绑定接收浏览器请求参数(方法上各种形参(request、response、session、Model、ModelMap、简单类型、简单pojo、包装类pojo)浏览器的请求参数),方法执行结束,形参数据就会销毁。    struts2是通过类中的成员变量接收浏览器请求参数的。   (3)由于接收请求参数方式的不同     springmvc:因为方法之间是线程隔离的,所以springmvc支持单例和多例的开发方式。    struts2:成员变量在开发中多线程会存在线程安全问题,所以struts2只能支持多例的开发方式。  (4)springmvc是通过存储数据ModelAndView,在前台页面通过jstl(默认)展示数据的    struts2是通过值栈存储数据,在页面通过OGNL展示数据的 还有一点扩展的,想起来就大概说说  

SpringMVC的入门例子

谁说我不能喝 提交于 2020-01-14 13:39:35
MVC框架是什么 模型-视图-控制器(MVC)是一个众所周知的以设计界面应用程序为基础的设计模式。它主要通过分离模型、视图及控制器在应用程序中的角色将业务逻辑从界面中解耦。通常,模型负责封装应用程序数据在视图层展示。视图仅仅只是展示这些数据,不包含任何业务逻辑。控制器负责接收来自用户的请求,并调用后台服务(manager或者dao)来处理业务逻辑。处理后,后台业务层可能会返回了一些数据在视图层展示。控制器收集这些数据及准备模型在视图层展示。MVC模式的核心思想是将业务逻辑从界面中分离出来,允许它们单独改变而不会相互影响。 在Spring MVC应用程序中,模型通常由POJO对象组成,它在业务层中被处理,在持久层中被持久化。视图通常是用JSP标准标签库(JSTL)编写的JSP模板。控制器部分是由dispatcher servlet负责,在本教程中我们将会了解更多它的相关细节。 一些开发人员认为业务层和DAO层类是MVC模型组件的一部分。我对此持有不同的意见。我不认为业务层及DAO层类为MVC框架的一部分。通常一个web应用是3层架构,即数据-业务-表示。MVC实际上是表示层的一部分。 Dispatcher Servlet(Spring控制器) 在最简单的Spring MVC应用程序中,控制器是唯一的你需要在Java web部署描述文件(即web.xml文件)中配置的Servlet

SpringMVC 和Struts2的区别

↘锁芯ラ 提交于 2020-01-14 01:54:55
SpringMVC 和Struts2的区别 1. 机制: spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同。 2. 性能: spring会稍微比struts快。spring mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于方法,粒度更细,但要小心把握像在servlet控制数据一样。spring3 mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去,在spring3 mvc中,一个方法对应一个request上下文。而struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入;struts2实际上是通 setter getter方法与request打交道的;struts2中,一个Action对象对应一个request上下文。 3. 参数传递: struts是在接受参数的时候,可以用属性来接受参数,这就说明参数是让多个方法共享的。 4. 设计思想上: struts更加符合oop(面向对象编程)的编程思想, spring就比较谨慎,在servlet上扩展。 5. intercepter的实现机制:

SpringMVC学习(七)——Controller类的方法返回值

僤鯓⒐⒋嵵緔 提交于 2020-01-13 13:59:25
返回ModelAndView Controller类方法中定义ModelAndView对象并返回,对象中可添加model数据、指定view。之前我就已讲过,在此并不过多赘述。 返回void 在Controller类方法形参上可以定义request和response,使用request或response指定响应结果: 1.使用request转向页面,如下: request.getRequestDispatcher("页面路径").forward(request, response); 之前我们实现商品列表的查询,返回的是ModelAndView,如果现在该方法的返回值是void,那么就应使用request跳转页面,如下: @RequestMapping("/itemList2") public void itmeList2(HttpServletRequest request, HttpServletResponse response) throws Exception { // 查询商品列表 List<Items> itemList = itemService.getItemList(); // 向页面传递参数 request.setAttribute("itemList", itemList); // 如果使用原始的方式做页面跳转,必须给的是jsp的完整路径 request

Spring和Spring MVC包扫描

会有一股神秘感。 提交于 2020-01-13 04:58:28
在Spring整体框架的核心概念中,容器是核心思想,就是用来管理Bean的整个生命周期的,而在一个项目中,容器不一定只有一个,Spring中可以包括多个容器,而且容器有上下层关系,目前最常见的一种场景就是在一个项目中引入Spring和SpringMVC这两个框架,那么它其实就是两个容器,Spring是父容器,SpringMVC是其子容器,并且在Spring父容器中注册的Bean对于SpringMVC容器中是可见的,而在SpringMVC容器中注册的Bean对于Spring父容器中是不可见的,也就是子容器可以看见父容器中的注册的Bean,反之就不行。 springmvc 的配置文件和spring的配置文件都可以配置包扫描,如下: <context:component-scan base-package="com.xxx"/> 从Spring提供的参考手册中我们得知该配置的功能是扫描配置的base-package包下的所有使用了@Component注解的类,并且将它们自动注册到容器中,同时也扫描@Controller,@Service,@Respository这三个注解,因为他们是继承自@Component。 在项目中我们经常见到还有如下这个配置,其实有了上面的配置,这个是可以省略掉的,因为上面的配置会默认打开以下配置。以下配置会默认声明了@Required、@Autowired、

ssm重新开发计科院新闻网站

巧了我就是萌 提交于 2020-01-13 00:34:23
ssm重新开发计科院新闻网站 一.SSM SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。 ①Spring   Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。   Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。 ②SpringMVC   SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts ③mybatis   mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时

SpringMVC框架笔记02_参数绑定返回值文件上传异常处理器JSON数据交互_拦截器

我与影子孤独终老i 提交于 2020-01-12 01:09:46
目录 第1章 高级参数的绑定 1.1 参数的分类 1.2 数组类型的参数的绑定 1.3 集合类型的参数的绑定 第2章 @RequestMapping的用法 2.1 URL路径映射 2.2 请求方法限定 2.3 窄化请求映射 第3章 Controller方法的返回类型 3.1 返回ModelAndView 3.2 返回void 3.3 返回类型为String 3.3.1 逻辑视图名 3.3.2 重定向 3.3.3 转发 第4章 文件上传【重要】 4.1 文件上传页面三要素 4.2 SpringMVC上传文件注意点 4.3 开始上传 4.3.1 场景设计 4.3.2 导入文件上传的jar包 4.3.3 修改页面的jsp代码 4.3.4 配置文件 解析器 4.3.5 编写 Controller 修改商品的方法,其中包括文件上传 4.3.6 测试 4.3.7 注意 第5章 异常处理器 5.1 异常处理的思路 5.2 自定义异常处理器的举例 5.2.1 场景描述 5.2.2 自定义异常处理器 5.2.3 编写错误页面 5.2.4 配置异常处理器 5.2.5 模拟异常 5.2.6 测试 第6章 JSON数据交互 6.1 场景设计 6.2 在修改页面引入JS支持 6.3 修改提交方式 6.4 编写save函数和ajax代码 6.5 在Controller中编写updateitemAjax方法 6

SpringMVC使用HandlerExceptionResolver实现全局异常处理器

两盒软妹~` 提交于 2020-01-11 18:56:46
在SpringMVC中,提供了一个全局异常处理器,用于对系统中出现的异常进行统一处理。在一般的系统中,DAO层、Service层及Controller层出现异常都以“throws Exception”的形式向上层抛出,最后都会有SpringMVC的前端控制器(DispatcherServlet)统一交由全局异常处理器进行异常处理。 1、HandlerExceptionResolver接口 在SpringMVC中提供的HandlerExceptionResolver接口可以实现全局异常处理器,该接口的源码如下: package org.springframework.web.servlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.lang.Nullable; public interface HandlerExceptionResolver { @Nullable ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,

从源码角度了解SpringMVC的执行流程

戏子无情 提交于 2020-01-11 18:53:35
目录 从源码角度了解SpringMVC的执行流程 SpringMVC介绍 源码分析思路 源码解读 几个关键接口和类 前端控制器 DispatcherServlet 结语 从源码角度了解SpringMVC的执行流程   SpringMVC的执行流程网上有很多帖子都有讲解,流程图和文字描述都很详细,但是你如果没有通过具体源码自己走一遍流程,其实只是死记硬背。所以想开个帖子从源码角度再梳理一遍SpringMVC的执行流程,加深印象。 SpringMVC介绍   SpringMVC采用的是 前端控制器(Front Controller) + 各个业务处理器(Controller)来处理请求的。前端控制器来响应所有请求,通过一定的调度规则找到具体负责处理的业务处理器,并将请求委派给具体的业务处理器去执行业务逻辑,业务处理器返回给前端控制器模型数据model,最后前端控制器将model交给视图View进行渲染。 源码分析思路   看源码的同学可能往往会陷入一个怪圈,刚开始看可能还能看懂,等到一层一层点进去会越来越晕,让自己陷入了太多的细节中,而这些细节其实对主要流程并没有多大影响,然后就埋头研究。之后不得不又从头开始看,又让自己陷入了另一个细节。其实看源码开始时只是需要看一个大致的框架和思路,了解代码的大致执行流程,千万不要让自己陷入到细节的泥潭中