springMVC整理

Ionic2和angularjs2和angularjs和nosql菜鸟教程一起是做手机的
https://www.bilibili.com/video/av8614724/index_10.html是ionic2公开课地址
FreeCMS
DeDeCMS风信网,数据库表结构
DEDECMS简单建站
Filter和Interceptor的区别
Filter是基于函数回调的,而Interceptor则是基于Java反射的。
Filter依赖于Servlet容器,而Interceptor不依赖于Servlet容器。
Filter对几乎所有的请求起作用,而Interceptor只能对action请求起作用。
Interceptor可以访问Action的上下文,值栈里的对象,而Filter不能。(struts框架)
在action的生命周期里,Interceptor可以被多次调用,而Filter只能在容器初始化时调用一次
springMVC中拦截器,可以有2种方式
实现HandlerInterceptor接口  重写里面的方法,最重要的是  boolean  preHandler
继承HandlerInterceptorAdapter ,重写 boolean  preHandler  (推荐)
return true  放行, return false 停止执行
Admin-servlet.xml是后台控制器,web.xml是页面控制器
Cookies中可以看到session生成的UUID同一个浏览器session一致,要登录多个账号要打开不同的浏览器
MVC框架   ?Spring<--ORM框架
springMVC             MyBaties
servlet                jdbc
struts                 hibernate
设置缓存后,分页查询不用缓存时加useCache=”false”表示取消缓存
*一个代表以及目录,**两个代表n个目录
Sesion时tomcat保存的大概有30分钟时间,存于内存
EJB企业级的开发
Session是Map集合
Pojo和实体类的区别:
        实体类实现serializable接口,与数据库字段对应
        Pojo是一个工具类,与数据库无关
Model和View并不直接交互数据
swift playground一种简单的编程语言
参数注入的方式:
        Set方法
        构造函数
        接口注入
Servlet只实例化一次,用的时候才加载
UUID.randomUUID()计算机生成的不重复的数字
Java图片验证码
Jsp中可以用三元运算sex==0?”男”:”女”
约定大于配置是指,在页面中先写虚拟路径及相关参数,然后controller中参数要和页面一致
在controller中传多个参数时:
@param(“teaId”) int teaId,@param(“teaName”) String teaName
Excel中的拼接字符串函数:=B3&"="&"#{"&B3&"}"&","
ajax提供的页面验证失去焦点才验证data-bv-trigger="blur"
restful语义化的地址传参
kindeditor文件上传、图片,富文本框也是文件上传
throw new  RuntimeException("批量上传学生信息失败的");
Java倒计时跳转页面
Document.getElementById(‘href’).href找到地址
MD5加密32位
MD5加盐
事务的特性:原子性、一致性、隔离性、持久性
Poi文件上传
artDialog是bootstrap的艺术对话框
Mapper的方法没有映射完时项目会报错
React native 和ionic都是专业做手机app的
Angularjs
Param.marjorId上次查询传过去的参数
循环中被选中在option中还原
日期插件datetimepicker
Bootstrap Validate验证
Data-bv-trigger=”blur”鼠标移开后才验证样式
jsp页面代码的提取:
    对于一段的连续的页面代码会被重复用到,将js和css分别提取到单独的jsp文件
在原页面通过<jsp:include page="common/common_js.jsp"></jsp:include>引用
Spring MVC注入时日期会报错,要在实体类中做处理
    @DateTimeFormat(pattern = "yyyy-MM-dd")
动态注入:
@Autowired  //spring实现的动态代理
@Resource(name="classesMapper") //java 框架实现动态代理
后台service接口提取:
封装公业的Mapper
   没有分页的操作Insert,update,findById ,search()(CommonMapper)
   有分页的  建立在没有分页的操作之上的 ,int searchPageCount()
(CommonPageMapper)
封装公共的Service
   没有分页的操作 Insert,update,findById ,search()(CommonService)
有分页的,建立在没有分页的操作之上的 ,int searchPageCount()  (CommonPageService)
封装公共的Service.impl
    没有分页的操作 Insert,update,findById ,search() 建立CommonServiceImpl,
      调用CommonMapper类,必须给一个set方法,让子类来赋值
有分页的CommonPageServiceImpl继承CommonServiceImpl调用CommonPageMapper  必须给一个set方法,让子类来赋值
数据库与实体类列名不同时,查询语句要加as处理
分页公共接口继承公共接口
bootstrap中向右浮动的css用pull-right
A标签提交表单:<a href=‘javascript:document.getElementById(‘form1’).submit();‘></a>
Spring MVC 分离了控制器、模型对象、过滤器以及处理程序对象的角色,这种分离让它们更容易进行定制
MVC是设计模式,三层架构是一种思想
JSP本质是servlet
Spring MVC:契约式的编程,约定大于配置,名字写死
具体步骤:
   1、 首先用户发送请求——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制;
   2、 DispatcherServlet——>HandlerMapping,HandlerMapping 将会把请求映射为 HandlerExecutionChain 对象(包含一个 Handler 处理器(页面控制器)对象、多个 HandlerInterceptor 拦截器)对象,通过这种策略模式,很容易添加新的映射策略;
   3、 DispatcherServlet——>HandlerAdapter,HandlerAdapter 将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器;
   4、 HandlerAdapter——>处理器功能处理方法的调用,HandlerAdapter 将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理;并返回一个 ModelAndView 对象(包含模型数据、逻辑视图名);
   5、 ModelAndView 的逻辑视图名——> ViewResolver, ViewResolver 将把逻辑视图名解析为具体的 View,通过这种策略模式,很容易更换其他视图技术;
   6、 View——>渲染,View 会根据传进来的 Model 模型数据进行渲染,此处的 Model 实际是一个 Map 数据结构,因此很容易支持其他视图技术;
   7、 返回控制权给 DispatcherServlet,由 DispatcherServlet 返回响应给用户,到此一个流程结束。
核心开发步骤
  1、 DispatcherServlet 在 web.xml 中的部署描述,从而拦截请求到 Spring Web MVC
  2、 HandlerMapping 的配置,从而将请求映射到处理器
  3、 HandlerAdapter 的配置,从而支持多种类型的处理器
  4、 ViewResolver 的配置,从而将逻辑视图名解析为具体视图技术
  5、 处理器(页面控制器)的配置,从而进行功能处理
配置spring mvc与mybatis 最好不要单独用
   Spring   mvc   -->Spring <-- mybatis
   1)、resource 下面去建立一个名为 applicationContext.xml (可以改,默认都叫这个)文件
   2)、在这里面做如下配置
       2.1)、扫包 ( 业务逻辑包,数据访问包)
       2.2)、声明 支持 注解方式
       2.3)、数据连接池的操作(数据库,驱动,用户名,密码 .....)
       2.4)、创建SqlSessionFactory
       2.5)、配置事务管理
       2.6)、使用Spring AOP(动态代理)设定对哪些方法做什么样的事情(只读可提交)
   3)、配置mybatis的一些常用的设定,如调试打印出sql,映射文件 在哪个包下面
4)、最后要在 web.xml中去启动 刚刚配置好的 applicationContext.xml

1、当用户通过浏览器发送web请求时,首先接受到的是应用服务器,比如tomcat,应用服务器通过协议解析等一系列动作后,将请求对象HttpServletRequest交给DispatcherServlet,DispatcherServlet是Spring MVC的核心入口。
2、DispatcherServlet收到request请求后会在doService方法里设置一些request相关的属性,比如applicationContext,支持国际化用的LocalResolver等,然后将request交由请求处理适配器
3、Spring 在初始化applicationContext的阶段会将请求uri与请求处理器进行一个映射,在运行期由请求处理适配器HandlerAdapter通过request对象找到对应的处理器 HandlerMethod,Spring MVC中的Handler是Object类型,实际上是在Controller上配了@ReqquestMapping的方法,[email protected]
4、Handler处理请求,即调用对应的业务方法逻辑后将返回ModelAndView视图对象,然后调用HandlerExecutionChain的 applyPostHandle方法处理视图对象
5、Spring MVC使用视图解析器解析ModelAndView对象,然后生成对应的页面交由DispatcherServlet,由它将响应写回给客户端,这样就基本完成了整个请求的处理

1、当springMVC的初始化完成之后、就进入到Servlet的第二个阶段“Service“时期、当浏览器发送一个request的到服务器的时候、Servlet容器启动一个线程、通过service()方法将请求转到doGet或者doPost来处理。
2、此时springMVC已经建立了一个子上下文、此上下文中存放着通过依赖注入的各种编程元素。Struts2采取的是一种完全和Web容器隔离和解耦的事件机制。诸如Action对象、Result对象、Interceptor对象,这些都是完全脱离Servlet容器的编程元素。Struts2将数据流和事件处理完全剥离开来,从Http请求中读取数据后,下面的事件处理流程就只依赖于这些数据,而完全不知道有Web环境的存在。反观SpringMVC,无论HandlerMapping对象、HandlerAdapter对象还是View对象,这些核心的接口所定义的方法中,HttpServletRequest和HttpServletResponse对象都是直接作为方法的参数出现的。这也就意味着,框架的设计者,直接将SpringMVC框架和容器绑定到了一起。或者说,整个SpringMVC框架,都是依托着Servlet容器元素来设计的。
3、DispatcherServlet作为一个标准的Servlet、那么当一个请求过来时、我们就可以按照Servlet的执行过程去分析、他是如何处理request的。对于springMVC的模版化设计模式、我们时常要去父类中寻找我们需要的方法。下面就从DispatcherServlet入手、来分析一个request的请求过程

Spring MVC请求处理流程
从web.xml中 servlet的配置开始, 根据servlet拦截的url-parttern,来进行请求转发
Spring工作流程描述
      1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;
      2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回;
      3. DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(...)方法)
      4.  提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。 在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:
      HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息
      数据转换:对请求消息进行数据转换。如String转换成Integer、Double等
      数据根式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等
      数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中
      5.  Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象;
      6.  根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet ;
      7. ViewResolver 结合Model和View,来渲染视图
      8. 将渲染结果返回给客户端。
为什么Spring只使用一个Servlet(DispatcherServlet)来处理所有请求?
     详细见J2EE设计模式-前端控制模式
Spring为什么要结合使用HandlerMapping以及HandlerAdapter来处理Handler?
符合面向对象中的单一职责原则,代码架构清晰,便于维护,最重要的是代码可复用性高。如HandlerAdapter可能会被用于处理多种Handler
1. 当DispatcherServlet接到请求时,他先回查找适当的处理程序来处理请求。DispatcherServlet通过一个或者多个处理程序映射,将每个请求映射到处理程序中。处理程序映射配置在web应用程序的上下文中,是实现了HandlerMapping接口的Bean。它负责为请求返回一个适当的处理程序(也就是Controller)。处理程序映射通常根据请求的URL将请求映射到处理程序(Controller)。
2. 一旦DispatcherServlet选择了适当的控制器,它就会调用这个控制器来处理请求。
3. 控制器处理完请求后,会将模型和视图名(有时候是视图对象)返回给DispatcherServlet。模型包含了控制器要传递给视图进行显示的属性。如果返回的是视图名称,它会被解析成视图对象再进行呈现。绑定模型和视图的基本类是ModelAndView
4. 当DispatcherServlet接收到模型和视图名称时,它会将逻辑视图名称解析成视图对象再进行呈现。DispatcherServlet从一个或者多个视图解析器中解析视图。视图解析器配置在Web应用程序上下文中,是实现了ViewResolver接口的Bean。它的任务是根据逻辑视图名称返回试图对象。
5. 一旦DispatcherServlet将视图名称解析称为试图对象,它就会呈现视图对象,并传递控制器返回的模型。视图的任务是将模型属性展示给用户。
DispatcherServlet接到请求后如何映射到Controller呢?
在Spring MVC中,Web请求被Web应用程序上下文中声明的一个或者多个处理程序映射Bean(是吸纳了HandlerMapping接口的Bean)映射到Controller。
Spring MVC提供了几种HandlerMapping实现:
1. BeanNameUrlHandlerMapping(默认情况),他根据Controller Bean名称中指定的URL模式将请求映射到处理程序上。
eg. <bean name="/welcome.htm" class="com.kevin.controller.WelcomeController">...</bean>
当你访问http://******/welcome.htm这个URL时,DispatcherServlet通过BeanNameUrlHandlerMapping映射就找到了WelcomeController。
2. ControllerClassNameHandlerMapping,它是按控制器类名称映射请求。
3. SimpleUrlHandlerMapping,用定制的映射定义来映射请求。
Controller接口:是Spring MVC中所有控制器类的基本接口。通过实现这个接口,你可以创建自己的控制器。在handleRequest()方法中,可以随意地处理Web请求。
AbstractController:如果你想让控制器具备一些基本的特性,如过滤受支持的HTTP方法(GET,POST和HEAD),以及在HTTP响应中生成cache-control头部等,你可以让它扩展AbstractController类。
ParameterizableViewController:用来创建带有参数化视图的控制器。
SimpleFormController:它支持命令对象的概念(commandName),并且可以将表单域的值绑定到命令对象的同名属性上。
AbstractWizardFormController:为向导表单的处理定义了基本的任务。向导表单有多个单页,因此必须为向导表单控制器定义多个页面视图。然后这个控制器可以跨越所有这些表单页面来管理表单状态。向导表单会有多个动作,不像SimpleFormController只有单个提交动作。AbstractWizardFormController会根据特殊的请求参数决定用户的动作,通常是用提交按钮的名称来指定动作的。
_finished: 完成向导表单。
_cancel: 取消向导表单。
_targetx: 进入目标页面,这里的x是从0开始的页面索引。
MultiActionController:允许你将多个相关的动作分组到一个控制器中。
几种常见的ViewResolver的解析:
1. InternalResourceViewResolver: 根据URL解析视图。通过添加前缀和后缀的方法,将每个视图名称都映射到一个URL上。
2. XmlViewResolver: 从XML配置文件中解析视图。将视图声明成Spring的Bean,并按他们的Bean Name进行解析。
3. ResourceBundleViewResolver: 从ResourceBundle中解析视图。
4. 用多个视图解析器解析视图, 需要注意的是,您需要为你配置的视图解析器配置解析的优先级。<property name="order" value="0"/> value越小,优先级越高。
时间: 2024-11-10 13:02:41

springMVC整理的相关文章

springMVC整理02--常用注解的使用

1.使用@RequestMapping  映射请求 1.1在类和方法上添加@RequestMappingSpringMVC 使用@RequestMapping 为控制器指定可以处理哪些 URL 请求.可以在类上和方法上都添加@RequestMapping 注解.如在 IndexController 中添加注解: 1 @Controller 2 //加上这个注解,本类方法访问路径前都要加上/mvc 3 @RequestMapping("/mvc") 4 public class Inde

springMVC整理03--处理数据模型 &amp; 试图解析器 &amp; @ResponseBody &amp; HttpEntity

1.处理模型数据 SpringMVC 中的模型数据是非常重要的,因为 MVC 中的控制(C)请求处理业务逻辑来生成数据模型(M),而视图(V)就是为了渲染数据模型的数据.当有一个查询的请求,控制器(C)会把请求拦截下来,然后把根据请求的内容对它进行分配适合的处理方法,在处理方法上进行处理查询的业务逻辑,得到了数据,再把数据封装成数据模型对象,最后把数据模型(M)对象传给了视图(V),让视图去渲染数据模型.SpringMVC 提供了以下几种途径输出模型数据: ModelAndView:处理方法返回

springMVC整理04--文件上传 &amp; 拦截器 &amp; 异常处理

1.  文件上传 SpringMVC 的文件上传非常简便,首先导入文件上传依赖的 jar: 1 <!-- 文件上传所依赖的 jar 包 --> 2 <dependency> 3 <groupId>commons-fileupload</groupId> 4 <artifactId>commons-fileupload</artifactId> 5 <version>1.3.1</version> 6 </

SpringMVC框架整理(二)

SpringMVC框架整理第二发,数据绑定流程,数据校验(错误信息国际化),拦截器,异常处理. 数据绑定流程(数据转换,数据格式化,数据校验) 1. Spring MVC 主框架将 ServletRequest  对象及目标方法的入参实例传递给 WebDataBinderFactory 实例,以创建 DataBinder 实例对象 2. DataBinder 调用装配在 Spring MVC 上下文中的 ConversionService 组件进行数据类型转换.数据格式化工作.将 Servlet

Maven + SpringMVC + Mybatis【绝非原创,单纯整理】【四】

对于我这样的菜鸟来说,这一部分是我最痛苦的部分了,各种错误啊.而且这里涉及具体的配置,网上牛人各种方式都有,我也在配置的过程中去翻翻mybatis的源代码,尽管没看懂,但是还是比较装2的跟人家炫耀:俺也看过框架源代码,就是没看懂(当然,后面这句没说出口,他们替我说了). 第四篇:web.xml,ApplicationContext.xml,xxx-servlet.xml(spring mvc的配置文件),mybatis-config.xml以及sql映射语句xxxxMapper.xml的配置.=

SpringMvc+Mybatis(maven工程)整理出来了,纯自己手工整理!!!!!!!!!!!!有图有真相!!!!!!!!!!!!!!!!求高分!!!!

原文:SpringMvc+Mybatis(maven工程)整理出来了,纯自己手工整理!!!!!!!!!!!!有图有真相!!!!!!!!!!!!!!!!求高分!!!! 源代码下载地址:http://www.zuidaima.com/share/1550463690738688.htm 部署直接可用. 开发工具:Eclipse jdk:1.6 部署工具:tomcat7 db driver:mysql,其中可以自己随意改了,这里不多说了.... 数据库就不给了,没什么用处,主要分享框架.  

springMVC 获取本地项目路径 以及上传文件的方法整理

String path=request.getSession().getServletContext().getRealPath("upload/img/product"); //二进制上传 MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; //获取文件 CommonsMultipartFile fpic=(CommonsMultipartFile) multipa

关于springmvc中常用的注解,自己也整理一下

1.@Controller 在springMVC中@controller主要用在控制层的类上,之前只知道用注解开发的时候必须加一个@controller ,今天看了别的大佬整理的才知道为什么这么用,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个model,然后把该model返回给对应的view进行展示. [email protected] @RequestMapping可以用在类或者方法上使用,主要是用来映

myBatis+Spring+SpringMVC框架面试题整理

myBatis+Spring+SpringMVC框架面试题整理(一) 2018年09月06日 13:36:01 新新许愿树 阅读数 14034更多 分类专栏: SSM 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_41541619/article/details/82459873 目录 ■ SpringMVC 的工作原理 ■ 谈谈你对SpringMVC的理解 ■ SpringMVC