springmvc框架

SpringMVC框架源码解析之一:核心组件和执行流程

百般思念 提交于 2020-01-27 02:36:40
SpringMVC框架源码解析之一:核心组件和执行流程 SpringMVC框架这几年可以说是java语言中最热门的MVC框架了。在前后端分离的时代,就算不使用它来处理前端页面,但也是用它来提供Restful API。 Servlet的生命周期 在开始了解SpringMVC框架之前,先来了解下servlet生命周期: public interface Servlet { //应用容器(如tomcat)调用init方法,传入ServletConfig,来初始化servlet public void init(ServletConfig config) throws ServletException; ... //应用容器获取到http请求后,调用service方法对请求进行处理 public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException; ... //应用容器调用destroy方法,来销毁servlet public void destroy(); } 可以看到,servlet是在应用容器(如tomcat)中生存的,其生命周期由应用容器来管理。 servlet的init() 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用

springmvc(三) 参数绑定、

假如想象 提交于 2020-01-27 00:48:21
      前面两章就介绍了什么是springmvc,springmvc的框架原理,并且会简单的使用springmvc以及ssm的整合,从这一章节来看,就开始讲解springmvc的各种功能实现,慢慢消化                           --WZY 一、参数绑定        1.1、什么是参数绑定?         客户在浏览器端会提交一些参数到服务器端,比如用户的登录等,就会传username 和 password过来,springmvc则通过参数绑定组件将请求参数的内容进行数据转换,然后将转换后的值覆给controller方法的形参,这就是参数绑定的过程,其实, springmvc就是使用controller方法形参来接收请求的参数        1.2、springmvc默认支持的参数类型         可以在Controller方法的形参中直接使用以下类型            HttpServletRequest、HttpServletResponse、HttpSession: 这三个很熟悉,不做解释           Model/ModelMap: 将model数据填充到request域,比如之前的ModelAndView对象添加list,其实就是将list添加到request作用域,只是ModelAndView对象不仅能够添加model数据

Spring MVC介绍

笑着哭i 提交于 2020-01-26 23:39:46
Spring MVC 1 什么是springMVC springMVC基于java实现的MVC的设计模式,通过把model,view,controller分离,将web层进行解耦,将复杂的逻辑清晰化,简化代码开发,方便开发人员之间的配合. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rjgXi86v-1573720869970)(image/springmvc流程.jpg)] 用户向服务器发开请求,请求被SpringMVC 前端控制器 DispatcherServlet 捕获; DispatcherServlet收到请求调用HandlerMapping处理器映射器()。 DispatcherServlet 对请求 URL 进行解析,得到请求资源标识符(URI)。然后根据该 URI,调用 HandlerMapping 获得该 Handler 配置的所有相关的对象(包括 Handler 对象以及 Handler 对象对应 的拦截 器),最后以 HandlerExecutionChain 对象的形式返回; DispatcherServlet 根据获得的 Handler,选择一个合弁的 HandlerAdapter;(附注:如果成功获得 HandlerAdapter 后,此时将开始执行拦截器的 preHandler(true或者false) 方法) 提取

SpringMVC

不羁的心 提交于 2020-01-26 22:45:51
1.1 三层结构介绍 我们的开发架构一般都是基于两种形式,一种是 C/S 架构,也就是客户端/服务器;另一种是 B/S 架构,也就是浏览器服务器。在 JavaEE 开发中,几乎全都是基于 B/S 架构的开发。那么在 B/S 架构中,系统标准的三层架构包括:表现层、业务层、持久层。三层架构在我们的实际开发中使用的非常多,所以我们课程中的案例也都是基于三层架构设计的。 三层架构中,每一层各司其职,接下来我们就说说每层都负责哪些方面: 表现层: 也就是我们常说的web 层。它负责接收客户端请求,向客户端响应结果,通常客户端使用http 协议请求web 层,web 需要接收 http 请求,完成 http 响应。 表现层包括展示层和控制层:控制层负责接收请求,展示层负责结果的展示。 表现层依赖业务层,接收到客户端请求一般会调用业务层进行业务处理,并将处理结果响应给客户端。 表现层的设计一般都使用 MVC 模型。(MVC 是表现层的设计模型,和其他层没有关系) 业务层: 也就是我们常说的 service 层。它负责业务逻辑处理,和我们开发项目的需求息息相关。web 层依赖业务层,但是业务层不依赖 web 层。 业务层在业务处理时可能会依赖持久层,如果要对数据持久化需要保证事务一致性。(也就是我们说的, 事务应该放到业务层来控制) 持久层: 也就是我们是常说的 dao 层。负责数据持久化

解决SpringMvc加载静态资源时出现No mapping found for HTTP request with URI的问题

余生长醉 提交于 2020-01-26 09:49:55
在搭建SpringMvc框架加载静态资源时,访问web页面没什么异常,就是无法加载静态资源,控制台出现No mapping found for HTTP 错误。 根据错误信息可以看出,发送的静态资源交给了DispatcherServlet,因为DispatcherServlet的<url-pattern> 配置的是/,所以会匹配到所有的请求(排除jsp的请求)。而我们所发送的.js .css .html .txt .png .jpg .avi等都是静态资源,没有映射请求,所以会出现no mapping found的错误。 解决办法:在springmvc.xml的配置文件中加入以下的俩个配置即可完美解决问题。 <mvc:default-servlet-handler></mvc:default-servlet-handler> <mvc:annotation-driven></mvc:annotation-driven> 扩展: 1.配置了 <mvc:default-servlet-handler> 之后,将在springmvc的上下文中定义一个DefaultServletHttpRequestHandler, 它会将对进DispatcherServlet的请求进行筛查,如果发现是没有经过映射的请求, 就将该请求交给WEB应用服务器的默认servlet处理,如果是映射的请求

Java框架之SpringMVC 05-拦截器-异常映射-Spring工作流程

眉间皱痕 提交于 2020-01-25 15:55:24
SpringMVC 米妮小说网 www.amini.net 拦截器   Spring MVC也可以使用拦截器对请求进行拦截处理,可以自定义拦截器来实现特定的功能,自定义的拦截器可以 实现 HandlerInterceptor接口 中的 三 个方法 , 也可以 继承HandlerInterceptorAdapter 适配器类按照需要那个方法,就实现哪个方法 过滤器与拦截器区别   过滤器:过滤器在Servlet之前操作   拦截器:拦截器在Servlet之后,请求处理器(Controller)之前操作。 拦截器三个方法   ① preHandle ():这个方法在(Controller) 处理器处理请求之前被调用 ,在该方法中对用户请求 request 进行处理。如果该拦截器对请求进行拦截处理后还要调用其他的拦截器,或者是业务处理器去进行处理,则返回 true ;如果不需要再调用其他的组件去处理请求,则返回false。(如果返回false则后续操作都不再执行,类似于过滤器的 doFilter 所以正常情况下不要返回 false)   ② postHandle ():这个方法在(Controller) 处理器处理完请求后,但是 DispatcherServlet 向客户端返回响应前 (在视图渲染之前)被调用 ,在该方法中对用户请求request进行处理。   ③

SpringMVC、Spring和Struts的区别

别等时光非礼了梦想. 提交于 2020-01-25 10:02:34
http://www.cnblogs.com/hhx626/p/6010293.html 导读: 近期做到的项目中,用到的框架师SSM(SpringMVC+Spring+Mybatis),那么在这之前用过SSH,这里主要是区分一下SpringMVC和Struts,但是由于SpringMVC和Spring真的也挺容易迷糊的,所以,本篇博客,就是区分一下这三者之间的关系,明确其具体所指,为接下来的框架搭建和应用做准备! 说明:纯属个人观点 一、Spring 首先,结合到自己对于Spring的使用,我明确的一点是,Spring严格上来说,并不是一种框架。它相当于一个粘合剂,黏合了别的框架或者组件。所以,spring是一个容器!为什么用Spring,个人感觉,spring就是一个容器的本质,程序开发的模块组件,都可以通过spring这个容器进行组装拼合,spring为我们提供了很多 管理的功能。而且,它是一个轻量级的容器。我们常说EJB是重量级,Spring是轻量级的,那么,究竟什么叫轻量级或重量级呢? 附:轻量级和重量级(往简单了说) 首先;轻量级和重量级,它只是一个相对的概念。如果没有对比,就没有所谓的轻重之分 轻量级:当轻量级的框架启动时,创建和销毁的资源都非常少。简而言之,一个轻量级的框架,它的入侵性非常小,也可以说是耦合性很低。可以很轻易的替换掉它,而不需要做太大的改动

springMVC带参数请求重定向

陌路散爱 提交于 2020-01-24 20:50:38
SpirngMVC返回逻辑视图名 可以分下面几种情况: 1. servlet进行请求转发,返回到jsp页面,如 return "index.jsp" ; 2. servlet 返回结果,让请求 重定向到某个jsp页面 ,此时servlet 返回语句类似: return " redirect : index.jsp "; 3. servlet 的返回结果是 请求另外一个servlet 此时servlet 返回语句类似: return " redirect : goIndex.do "; 4. servlet 的返回结果是 请求另外一个servlet,并且还需要带上请求参数,也就是 Controller 间的带参数重定向 ,此时servlet 返回语句就不能直接写了,需要进行url拼接再返回: 类似: String url="redirect: goSeeComment.do?newsId="+newsid; return url; 举个例子 ,下面的代码片段实现这么一个功能,从一个新闻显示列表中,点击添加评论按钮(跳转到goAddComment.do,把新闻newsId 转发到addComment.jsp),为该条新闻添加评论,添加完评论进行表单的提交(提交到addComment.do),然后再返回到这条新闻对应的评论列表: 1 //添加评论步骤1:获取newsId

Java框架之SpringMVC 05-拦截器-异常映射-Spring工作流程

久未见 提交于 2020-01-24 19:36:02
SpringMVC 拦截器   Spring MVC也可以使用拦截器对请求进行拦截处理,可以自定义拦截器来实现特定的功能,自定义的拦截器可以 实现 HandlerInterceptor接口 中的 三 个方法 , 也可以 继承HandlerInterceptorAdapter 适配器类按照需要那个方法,就实现哪个方法 过滤器与拦截器区别   过滤器:过滤器在Servlet之前操作   拦截器:拦截器在Servlet之后,请求处理器(Controller)之前操作。 拦截器三个方法   ① preHandle ():这个方法在(Controller) 处理器处理请求之前被调用 ,在该方法中对用户请求 request 进行处理。如果该拦截器对请求进行拦截处理后还要调用其他的拦截器,或者是业务处理器去进行处理,则返回 true ;如果不需要再调用其他的组件去处理请求,则返回false。(如果返回false则后续操作都不再执行,类似于过滤器的 doFilter 所以正常情况下不要返回 false)   ② postHandle ():这个方法在(Controller) 处理器处理完请求后,但是 DispatcherServlet 向客户端返回响应前 (在视图渲染之前)被调用 ,在该方法中对用户请求request进行处理。   ③ afterCompletion ():这个方法在

SpringMvc简单使用

女生的网名这么多〃 提交于 2020-01-24 13:43:08
SpringMvc框架的简单使用 第一步:导入依赖 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.1.RELEASE</version> </dependency> </dependencies> 同时,引入编译插件,使编译时使用JDK1.8版本(非必须) <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> 第二步:编辑 web.xml 文件 新增springmvc的入口servlet <web-app> <servlet> <servlet-name>mvc</servlet-name>