笔记-传智播客springMVC公开课

合集下载

传智播客Spring25视频教程学习笔记

传智播客Spring25视频教程学习笔记

传智播客Spring2.5视频教程学习笔记1.全面阐释Spring及其各项功能1.1Spring是什么?Spring是一个开源的控制反转(Inversion of Control ,IoC)和面向切面(AOP)的容器框架.它的主要目得是简化企业开发。

1.2IoC控制反转所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。

这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。

1.3依赖注入(DI:Dependicy Injection)所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中。

1.4面向切面(AOP)1.5为什么要使用Spring解耦(各层之间通过接口调用)提供事务、消息服务单例模式AOP支持辅助类(JDBCTemplate,HibernateTemplate)支持与Struts,Hibernate,JPA等框架的集成1.6实例化bean的方式构造函数(90%使用),静态工厂方法,实例工厂方法1.使用类构造器实例化<bean id=“orderService" class="cn.i tcast.OrderServiceBean"/>2.使用静态工厂方法实例化<bean id="personService" class="cn.itcast.service.OrderFactory"factory-method="createOrder"/>public class OrderFactory {public static OrderServiceBean createOrder(){return new OrderServiceBean();}}3.使用实例工厂方法实例化<bean id="personServiceFactory" class="cn.itcast.service.OrderFactory"/><bean id="personService" factory-bean="personServiceFactory" factory-method="createOrder"/> public class OrderFactory {public OrderServiceBean createOrder(){return new OrderServiceBean();}}默认情况下使用的是单例的,只有id和class属性的。

(完整word版)传智播客C经典入门课堂笔记-苏坤

(完整word版)传智播客C经典入门课堂笔记-苏坤

今天学习的第一句话:Console.WriteLine(“你想显示的内容。

”);第二句话:Console.ReadKey();当程序执行到Console.ReadKey();时,程序会停到这里,等待用户从键盘上键入一个键,用户键入这个键之后,程序才会继续执行。

在C#中,每一句话都必须以“分号”结束C#中的注释,什么是注释呢?对我程序进行的解释,注释是给人看的。

下面的一对指示可以折叠代码。

#region内容#endregionMSIL:微软中间语言Microsoft Inter mediate LanguageCLR:公共语言运行时Common Language RuntimeCLS公共语言规范Common Language SpecificationCTS:通用类型系统Common Type SystemJIT:即时编译器Just In Time第二天课程:复习--Console.WriteLine()可以用CW加Tab键。

这样就能直接打出Console.WriteLine();变量1:变量:变量代表着一块内存空间,我们可以通过变量名称向内存存\取数据。

有变量就不需要我们记忆复杂的内存地址。

向内存申请一块内存空间的语法:数据类型变量名;整数在我们C#中的数据类型叫intInt nuber;Double:小数Char:字符型只能存储一个字符,并且存储的这个字符要求用单引号引起来String 类型:字符串,就是把0个或1个或多个字符连接起来。

字符串要求用双引号引起来。

Decimal 类型:用来表示钱和货币,失精度不至于丢失。

注意:在C#开发环境中,直接写一个有小数点的数字,这个数字是double类型。

在一个小孩苏idan后面加个m\M,就告诉编译器这是个decimal类型应该写成:money = 100.34m;变量的命名规则:1.必须以“字母”_或@符号开头、2.后面可以跟任意“字母”,数字,下划线。

传智播客-----笔记整理(java基础-----String,StringBuffer,StringBuilde)

传智播客-----笔记整理(java基础-----String,StringBuffer,StringBuilde)

这两天一直比较犯迷糊,每天都不知道在忙啥,所以有些断更了,真的是,咳咳,明天就要接手新班了,对我来说是喜忧参半吧,喜的是可以锻炼一下自己的能力,忧的是怕自己做不好,不过还是尽力吧。

大纲:String:1.1String方法1.2String特点1.3 StringBuffer1.4 StringBuilder1.5 Jdk升级的目的1.6 基本数据类型对象包装类1.7基本类型======>字符串1.8 字符串=====>基本类型1.9 整数具备不同的进制体现。

2.0自动拆装箱面试题挨个走一遍吧,Let's go.String:String对象的初始化由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下:String s = “abc”;s = “Java语言”;其实按照面向对象的标准语法,其格式应该为:String s = new String(“abc”);s = new String(“Java语言”);只是按照面向对象的标准语法,在内存使用上存在比较大的浪费。

例如String s = new String(“abc”);实际上创建了两个String对象,一个是”abc”对象,存储在常量空间中,一个是使用new关键字为对象s申请的空间。

其它的构造方法的参数,可以参看String类的API文档。

1.1String方法获取获取字符串中字符的个数(长度)int length();根据位置获取字符char charAt(int index);根据字符获取在字符串中的第一次出现的位置int indexOf(int ch);【因为char类型可以转换成int(对应的是0---2^16),依据ASCII,返回-1时,表示这个字符不存在,此方法也可以判断字符是否存在。

】从指定位置进行ch的查找第一次出现位置int indexOf(int ch,int fromIndex);根据字符串获取在字符串中的第一次出现的位置int indexOf(String str);从指定位置进行ch的查找第一次出现位置int indexOf(String str,int fromIndex)根据字符获取在字符串中的最后一次出现的位置int lastIndexOf(int ch);从指定位置进行ch的查找最后一次出现位置int lastIndexOf(int ch,int fromIndex);根据字符串获取在字符串中的最后一次出现的位置int latindexOf(String str);从指定位置进行ch的查找最后一次出现位置int lastindexOf(String str,int fromIndex);获取字符串中一部分字符串,也叫子串String subString(int beginIndex,int endIndex);【包含begin,但不包含end】String substring(int beginIndex);从beginIndex到最后转换将字符串变成字符串数组(字符串的切割)String [] split(String regex):【里面的条件是一个正则表达式】将字符串变成字符数组char [] toCharArray();将字符串变成字节数组byte [] getBytes();将字符串中的字母转成大小写String toUpperCase();【大写】String toLowerCase();【小写】将字符串中的内容进行替换String replace(char oldch,char newch);String replace(String s1,String s2);将字符串两端的空格去除String trim();将字符串进行连接String concat(String str);判断两个字符串内容是否相同boolean equals(Object obj);【复写Object的方法,所以传递的是Object对象】boolean equalsIgnoreCase(String str);忽略大写比较字符串内容。

springmvc高级知识课堂笔记温习资料

springmvc高级知识课堂笔记温习资料

springmvc第二天高级知识温习:springmvc框架:DispatcherServlet前端操纵器:接收request,进行responseHandlerMapping处置器映射器:依照url查找Handler。

(能够通过xml配置方式,注解方式)HandlerAdapter处置器适配器:依照特定规那么去执行Handler,编写Handler时需要依照HandlerAdapter的要求去编写。

Handler处置器(后端操纵器):需要程序员去编写,经常使用注解开发方式。

Handler处置器执行后结果是ModelAndView,具体开发时Handler返回方式值类型包括:ModelAndView、String(逻辑视图名)、void(通过在Handler形参中添加request和response,类似原始servlet 开发方式,注意:能够通过指定response响应的结果类型实现json数据输出)View resolver视图解析器:依照逻辑视图名生成真正的视图(在springmvc中利用View对象表示)View视图:jsp页面,仅是数据展现,没有业务逻辑。

注解开发:利用注解方式的处置器映射器和适配器:<!--注解映射器--><bean class=""/><!--注解适配器--><bean class=""/>在实际开发,利用<mvc:annotation-driven>代替上边处置器映射器和适配器配置。

@controller注解必需要加,作用标识类是一个Handler处置器。

@requestMapping注解必需要加,作用:1、对url和Handler的方式进行映射。

2、能够窄化请求映射,设置Handler的根途径,url确实是根途径+子途径请求方式3、能够限制http请求的方式映射成功后,springmvc框架生成一个Handler对象,对象中只包括一个映射成功的method。

SpringMVC框架知识点详解

SpringMVC框架知识点详解

SpringMVC框架知识点详解官⽅的下载⽹址是:⼀、Spring MVC简介1.1Spring MVC⼯作流程映射器:主要是根据浏览器上输⼊的url来映射所有满⾜要求的Handle(控制器类)适配器:主要是决定调⽤哪个Handler来实现具体的业务逻辑1.2Spring MVC VS Struts21)springmvc的⼊⼝是⼀个servlet,即前端控制器;struts2⼊⼝是⼀个filter过虑器,即前端过滤器,2)springmvc是基于⽅法开发(控制器类是单例的,不可能维护实体变量),传递参数是通过⽅法形参,可以设计为单例;struts2是基于类开发(维护⼀个实体变量),传递参数是通过类的属性,只能设计为多例3)springmvc通过参数解析器是将request对象内容进⾏解析成⽅法形参,将响应数据和页⾯封装成ModelAndView对象,最后⼜将模型数据通过request对象传输到页⾯;struts采⽤值栈存储请求和响应的数据,通过OGNL存取数据4)springmvc开发运⾏速度快于struts2⼆、Spring MVC⼯程搭建(xml)2.1导⼊springioc,springweb , springmvc相关的jar包2.2在/WEB-INF/ web.xml⽂件配置SpringMVC的前端控制器DispatcherServlet(前端控制器)<!-- 注册springmvc核⼼控制器 --><servlet><!-- servlet-name名字随便写 --><servlet-name>DispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 通知DispatcherServlet去指定的⽬录下加载springmvc.xml配置⽂件classpath:是在⼯程的src路径下寻找如果不配置init-param的话,控制器会⾃动寻找/WEB-INF/<servlet-name>-servlet.xml⽂件--><init-param><!-- 值是固定的,相当于键值对 --><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>DispatcherServlet</servlet-name><url-pattern>*.action</url-pattern>//拦截请求</servlet-mapping>注:在默认情况下:springmvc框架的配置⽂件必须叫<servlet-name>-servlet.xml且必须放在/WEB-INF/⽬录下,我们可以在web.xml⽂件中,为DispatcherServlet配置⼀个初始化参数,让它去我们指定的⽬录下加载springmvc.xml配置⽂件2.3配置springmvc.xml注:该配置⽂件的命名规则遵循web.xml⽂件中核⼼控制器配置。

20150322springmvc课堂笔记(企业重点)

20150322springmvc课堂笔记(企业重点)

springmvc第二天注解开发高级知识1复习springmvc框架:用户请求url到DispatcherServlet前端控制器,相当于中央调度器,降低系统各组件之间耦合度DispatcherServlet前端控制器通过HandlerMapping根据url找到Handler。

DispatcherServlet前端控制器通过HandlerAdapter处理器适配器执行Handler。

DispatcherServlet前端控制器拿着Handler返回的ModelAndView通过视图解析器ViewResolver去进行视图解析。

视图解析:将程序中写的逻辑视图名,转成真正的视图(springmvc通过view表示各各不同类型的视图)。

DispatcherServlet前端控制器调用View的渲染方法进行视图渲染(将ModelAndView中的Model放到request域)。

要掌握springmvc的注解开发,企业中常用springmvc注解开发。

使用专门注解处理器映射器(RequestMappingHandlerMapping)和处理器适配器(RequestMappingHandlerAdapter)。

<mvc:annotation-driven/>可以代替上边的处理器映射器和适配器的配置。

在Handler(Controller)中定义很多的方法,一个方法通过RequestMapping和url进行映射。

方法返回值:ModelAndView、string(jsp的逻辑视图名)、void(通过response将数据输出成json)方法输入参数(形参):springmvc需要将请求的key/value(串,id=001&type=t002)、解析、绑定到Handler(Controller)中方法的形参上。

springmvc默认支持多类型的参数绑定。

默认支持哪些类型:HttpServletRequest、response、session、Model(用于将数据填充到request域)@requestParam注解:用于绑定单个请求参数,常用于简单类型参数(Integer、String 、Float。

传智播客课堂笔记模板头文件以及include指令

传智播客课堂笔记模板头文件以及include指令

头文件,源文件,#include1.cpp是C++文件,也就是英文cplusplus的简称,可以兼容C语言找不到printf这个函数2.头文件,英文是head,所以文件后辍是.h,head的简称。

头文件是源文件的辅助文件,一般把一些变量,函数定义到头文件,而将函数的实现放在源文件。

3.#include是预编译指令,将其他文件的内容包含进来。

#include"yincheng.itcast"#include"include.h"可以包含头文件,也可以包含其他任意类型的文件4.预编译指令一般不需要加上分号,对于include来说,加上也不影响执行4.C++的源文件是兼容C语言源文件,写C语言可以用C++的源文件(.cpp),也可以用C语言的源文件(.c)5.#include可以包含任意类型,不仅.h也可以.c,也可以.cpp6.同样的一个作用域范围,变量不可以重名,将另外一个变量命名就可以。

7.重复包含内容重复包含,出现了变量重名。

千万要记住,不要重复包含。

7.实现加法,并打印出结果变量定义可以在头文件int a = 10;//int代表整数,a代表变量名,10代表a的初始值int b = 20;int c;变量的运算可以在源文件c = a + b;//c=10+20=30printf("\n");// /n代表换行也就是,重新开启一行新的printf("\n");// /n代表换行也就是,重新开启一行新的printf("%d", c);//也就是把C按照十进制打印出来8.头文件的作用,如何有效的使用头文件。

头文件可以将源文件的有效信息提取出来,就像身份证吧一个人信息概括了一样。

一般情况下,函数的声明,应该放在头文件。

函数的实现与变量的定义应当放在源文件。

void add();函数的声明变量的定义int a = 10;//int代表整数,a代表变量名,10代表a的初始值int b = 20;int c;函数的实现void add(){c = a + b;//c=10+20=30printf("\n");// /n代表换行也就是,重新开启一行新的printf("\n");// /n代表换行也就是,重新开启一行新的printf("%d", c);//也就是把C按照十进制打印出来}。

SPRINGMVC第一天课堂笔记

SPRINGMVC第一天课堂笔记

springmvc 第一天 springmvc的基础知识
课程安排:
第一天:springmvc的基础知识
什么是springmvc?
springmvc框架原理(掌握)
前端控制器、处理器映射器、处理器适配器、视图解析器
springmvc入门程序
目的:对前端控制器、处理器映射器、处理器适配器、视图解析器学习非注解的处理器映射器、处理器适配器
注解的处理器映射器、处理器适配器(掌握)
springmvc和mybatis整合(掌握)
springmvc注解开发:(掌握)
常用的注解学习
参数绑定(简单类型、pojo、集合类型(明天讲))
自定义参数绑定(掌握)
springmvc和struts2区别
第二天:springmvc的高级应用
参数绑定(集合类型)
数据回显
上传图片
json数据交互
RESTful支持
拦截器
1 springmvc框架
1.1 什么是springmvc
springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。

springmvc是一个基于mvc的web框架。

SpringMVC学习笔记

SpringMVC学习笔记

SpringMVC学习笔记作者:胡晟源。

QQ:1312837781配置spring提示:1 Spring Tool Suit (STS)2 Hibernate Tools对于JUNO版本的Eclipse 可以在help->Eclipse Marketplace 输入插件的名字在列表中选择插件安装就可以了。

SpringMvc原理图解:导入jar包一:springmvc工作流程。

①.servlet容器初始化一个request请求②.DispatcherServlet分发器负责发送请求到映射器.③.despatcherServlet把请求交给处理器映射Mapping,mapping来寻找需要执行的control④.处理器映射把请求分发给控制器Controler。

⑤.Controler执行完毕后返回ModelAndView(视图解析器)⑥.把ModelAndView返回给dispatcherServlet核心分发器⑦.由于DespatcherServlet不参与具体的处理,所以把modelAndView交给视图解析器。

⑧.视图解析器解析成一个真正的视图,再发给view然后response。

ParameterizableViewController(参数控制器)①.在springmvc-servlet.xml里面加上配置②.通过参数控制器访问页面流程解析:也可以直接在参数控制器里定义name属性,直接通过name属性地址来访问。

如下:但要注意的是:配置文件里必须有BeanNameUrlHandlerMapping情况下,默认映射将会被覆盖;以name属性;来访问将会失败。

命令控制器③.在springmvc里面有如下配置。

④.使用简单url进行访问,参数被封装进javabean。

http://localhost:8080/mysm/comm.do?id=1&userName=zhangsan&password=123&age=13 命令控制器①.首先:springMVC有三个映射器,如果不定义映射Mapping,那么就会使默认:●<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>也就是说:上面这个定义和不定义都是一样的。

第2章MVC设计模式

第2章MVC设计模式

第2章MVC设计模式学习目标◆了解MVC的概念,可以描述MVC思想和工作流程◆掌握模型、控制器和视图的创建◆掌握MVC框架的实现,理解自动加载与请求分发机制◆掌握MVC在项目中的使用,能够运用MVC开发留言板项目MVC是目前广泛流行的一种软件开发模式。

利用MVC设计模式可以将程序中的功能实现、数据处理和界面显示分离,从而在开发复杂的应用程序时,开发者可以专注于其中的某个方面,进而提高开发效率和项目质量。

本章将针对MVC进行详细讲解。

2.1 什么是MVCMVC是Xerox PRAC(施乐帕克研究中心)在80年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用。

MVC设计模式强制性的使应用程序中的输入、处理和输出分开,将软件系统分成了三个核心部件:模型(Model)、视图(View)、控制器(Controller),它们各自处理自己的任务,MVC这个名称就是由Model、View、Controller这三个单词的首字母组成的。

在用MVC进行的Web程序开发中,模型是指处理数据的部分,视图是指显示到浏览器中的网页,控制器是指处理用户交互的程序。

例如,提交表单时,由控制器负责读取用户提交的数据,然后向模型发送数据,再通过视图将处理结果显示给用户。

接下来通过一个图例来演示MVC的工作流程,如图2-1所示。

http请求Model View 调用数据调用数据库网页模板返回HTMLController图2-1MVC的工作流程1从图2-1中可以看出,客户端向服务器端的控制器发送了http请求,控制器就会调用模型来取得数据,然后调用视图,将数据分配到网页模板中,再将最终结果的HTML网页返回给客户端。

另外,这里演示的只是在Web开发中比较常见的形式,MVC模式在其他方面的软件开发中也很常用。

MVC是优秀的设计思想,使开发团队能够更好的分工协作,显著提高工作效率。

但是任何事物都有两面性,MVC也存在一些缺点。

springmvc知识点整理

springmvc知识点整理

springmvc知识点整理1.Springmvc架构2.Springmvc组件三⼤组件:处理器映射器,处理器适配器,视图解析器处理器映射器:注解式处理器映射器,对类中标记了@ResquestMapping的⽅法进⾏映射,根据@ResquestMapping定义的url匹配@ResquestMapping标记的⽅法,匹配成功返回HandlerMethod对象给前端控制器。

<!-- 配置处理器映射器 --><beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />处理器适配器:对标记@ResquestMapping的⽅法进⾏适配<!-- 配置处理器适配器 --><beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />解决办法:SpringMVC使⽤<mvc:annotation-driven>⾃动加载RequestMappingHandlerMapping和RequestMappingHandlerAdapter可以在springmvc.xml配置⽂件中使⽤<mvc:annotation-driven>替代注解处理器和适配器的配置。

<!-- 注解驱动 --><mvc:annotation-driven />视图解析器:视图解析器使⽤SpringMVC框架默认的InternalResourceViewResolver,这个视图解析器⽀持JSP视图解析。

<!-- 配置视图解析器 --><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 配置逻辑视图的前缀 --><property name="prefix" value="/WEB-INF/jsp/" /><!-- 配置逻辑视图的后缀 --><property name="suffix" value=".jsp" /></bean>最终jsp物理地址:前缀+逻辑视图名+后缀3.1简单参数的绑定(@RequestParam)当请求的参数名称和处理器形参名称⼀致时会将请求参数与形参进⾏绑定,若不⼀致,就需要@RequestParamvalue:参数名字,即⼊参的请求参数名字,如value=“itemId”表⽰请求的参数区中的名字为itemId的参数的值将传⼊required:是否必须,默认是true,表⽰请求中⼀定要有相应的参数,否则将报错TTP Status 400 - Required Integer parameter 'XXXX' is not presentdefaultValue:默认值,表⽰如果请求中没有同名参数时的默认值public String queryItemById(@RequestParam(value = "itemId", required = true, defaultValue = "1") Integer id,ModelMap modelMap) {}这⾥需要传⼊的是id,实际传⼊的是itemId,需要⽤@RequestParam转换⼀下3.2pojo参数绑定如果提交的参数很多,或者提交的表单中的内容很多的时候,可以使⽤简单类型接受数据,也可以使⽤pojo接收数据,但是pojo对象中的属性名和表单中input的name属性⼀致。

传智播客 spring 黎活明(很经典)

传智播客 spring  黎活明(很经典)

对于 spring 容器,它提供了很多服务,但这些服务并不是默认为应用打开的,应用需要某种服务,还需要指明 使用该服务,如果应用使用的服务很少,如 : 只使用了 spring 核心服务,那么我们可以认为此时应用属于 轻量级的,如果应用使用了 spring 提供的大部分服务,这时应用就属于重量级。目前 EJB 容器就因为它 默认为应用提供了 EJB 规范中所有的功能,所以它属于重量级。 北京传智播客教育

北京传智播客教育
— 高级 软 件 人 才 实 作 培 训 专 家 件人才 作培 家 !
另外,如果使用 spring, 我们也不需要处理复杂的事务传播行为
public void payment(){ Bean1.update();// 更新金额 Bean2.save();// 记录操作日志 } 如果我们不使用 Spring ,针对下面这两种业务需求,我们该如何做?
北京传智播客教育
— 高级 软 件 人 才 实 作 培 训 专 家 件人才 作培 家 !
使用 Spring, 不再需要我们处理复杂的事务传播行为
使用 Spring ,我们只需要通过声明式的事务属性配置就可以轻松地实现这两种业务需求 1. 要求 Bean1.update() 和 Bean2.save() 的在同一个事务中执行 2. 要求不管 Bean1.update() 的事务是否成功,都需要记录日志。 @Transactional(propagation=Propagation.Required) public void payment(){ Bean1.update();// 更新金额 Bean2.save();// 记录日志 }
北京传智播客教育
实例化 spring 容器
使用 Spring 的好处

传智播客spring

传智播客spring

调用BeanPostProcessor的 预初始化方法
调用定制的销毁方法 调用InitializingBean的 afterPropertiesSet()方法 北京传智播客教育 Bean在Spring Bean应用上下文中的生命周期
—高级软件人才实作培训专家! 二、装配Bean
北京传智播客教育
—高级软件人才实作培训专家! 二、装配Bean

2.1 容纳你的bean
• 2.1.2 使用应用上下文
ApplicationCotext,spring更加高级的容器。功能 强大: 1.提供文本信息解析工具,包括对国际化支持。 2.提供载入文件资源的通用方法,如图片。 3.可以向注册为监听器的bean发送事件。 在很少的情况下,使用BeanFactory,如在移动设 备。
北京传智播客教育
—高级软件人才实作培训专家! 二、装配Bean

2.2 基本装配

2.2.1 使用XML装配(续) 上下文定义文件的根元素是<beans>.<beans>有多 个<bean>子元素。每个<bean>元素定义了一个 bean如何被装配到spring容器中。 <beans> <bean id="foo" class="...Foo"/> <bean id="bar" class="...Bar"/> </beans>
Bean可以使用了 调用BeanFactoryAware的 setBeanFactory()方法
容器关闭
调用BeanPostProcessor的 预初始化方法 调用InitializingBean的 afterPropertiesSet()方法 调用DisposableBean的 destory()方法 调用定制的销毁方法

spring mvc培训 ppt课件

spring mvc培训 ppt课件

2020/12/7
12
Spring MVC 培训——孙林
一个Model 2规范实现的Web框架
视图层采用JSP实现;控制层采用Servlet实现,整 个框架采用同一个Servlet,以实现请求的中转;模型 层采用Java实现,主要决定用来做什么;在模型层后 添加了一个DAO,目的是将决定做什么和具体怎么 做分开。
业务模型还有一个很重要的模型那就是数据模型。数据模型 主要指实体对象的数据保存(持续化)。比如将一张订单保存到 数据库,从数据库获取订单。我们可以将这个模型单独列出,所 有有关数据库的操作只限制在该模型中。
2020/12/7
8
Spring MVC 培训——孙林
MVC设计思想
控制(Controller)可以理解为从用户接收请求, 将模型与视图 匹配在一起,共同完成用户的请求。划分控制层的作用也很 明显,它清楚地告诉你,它就是一个分发器,选择什么样的 模型,选择什么样的视图,可以完成什么样的用户请求。控 制层并不做任何的数据处理。
例如,用户点击一个连接,控制层接受请求后, 并不处理 业务信息,它只把用户的信息传递给模型,告诉模型做什么, 选择符合要求的视图返回给用户。因此,一个模型可能对应 多个视图,一个视图可能对应多个模型。
2020/12/7
9
Spring MVC 培训——孙林
JSP Model 1架构
Model 1的基础是JSP文件,它由一些相互独立的JSP文件和其他一些 Java Class组成。这些JSP从HTTP Request中获得所需要的数据,处理业务 逻辑,然后将结果通过Response返前端浏览器。Model 1的应该说是唯一 的好处是“简单”,可以大大加快系统的开发进度。它把表现层和业务 逻辑层柔和在一起,不利于以后的维护工作以及开发角色的分配,所以 这种模式只能适合于小的系统开发。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SpringMVC公开课笔记高浩阳2014-11-29目录1SpringMVC框架 (2)1.1SpringMVC框架 (2)1.2SpringMVC组件总结 (2)2开发SpringMVC的第一个程序 (3)2.1准备环境 (3)2.2开发SpringMVC的第一个程序 (3)2.2.1创建Java Web工程 (3)2.2.2向工程中填充SpringMVC的jar包 (3)2.2.3配置前端控制器 (4)2.2.4创建一个配置文件springmvc.xml(名称不固定) (7)2.2.5配置处理器映射器HandlerMapping (8)2.2.6配置处理器适配器HandlerAdapter (9)2.2.7配置视图解析器ViewResolver (12)2.2.8编写Handler (13)2.2.9在springmvc.xml中配置helloAction.java (16)2.2.10将工程部署到tomcat,启动tomcat (17)2.3小结: (18)3注解开发第一个例子 (19)3.1新建工程SpringMVCTest02 (19)3.2在springmvc.xml中配置 (20)3.3开发action (21)3.4配置action (22)3.5部署工程,运行Tomcat (24)4注解开发学生信息管理功能 (24)5SpringMVC特点 (33)6和Jquery easyui 整合完成数据列表 (33)1SpringMVC框架1.1SpringMVC框架1. 用户发起请求request(比如请求链接叫http://www.xxx/user.action)注册用户信息。

2. SpringMVC通过DispatcherServlet接受请求。

DispatcherServlet是一个前端控制器(想到struts2在web.xml配置一个filter前端控制器)相当于控制器Controller3. DispatcherServlet调用HandlerMapping(处理器映射器)根据user.action找到处理器(Handler)HandlerMapping负责分局user.action这个链接找到Handler,根据xml配置或注解配置找到Handler4. HandlerMapping将找到的Handler给DispatcherServlet前端控制器5. DispatcherServlet前端控制器调用HandlerAdapter(处理器适配器)去执行Handler处理器适配器负责执行Handler6. Handler将处理结果返回给HandlerAdapter(处理器适配器)处理结果就是ModelAndView(封装了模型数据和视图)7. DispatcherServlet调用视图解析器ViewResolver去解析视图8. 将View给用户相应1.2SpringMVC组件总结1. DispatcherServlet前端控制器(不需要程序员写)负责框架调度,相当于中央处理器基本controller控制器功能:接收用户request请求和给用户response响应2. HandlerMapping(处理器映射器)(不需要程序员写)负责根据action的连接找到Handler处理器(理解成写的action)3. HandlerAdapter(处理器适配器)(不需要程序员写)负责去执行Handler4. **Handler处理器需要程序员写理解成struts里边的action,需要程序员写action类,这个action类符合适配器的执行规则。

5. ViewResolver(视图解析器)(不需要程序员写)负责将模型数据填充到View6. **View视图需要程序员写jsp页面SpringMVC是什么?SpringMVC和struts一样是一个表现层的框架。

SpringMVC是Spring的一个模块。

2开发SpringMVC的第一个程序2.1准备环境2.2开发SpringMVC的第一个程序2.2.1创建Java Web工程2.2.2向工程中填充SpringMVC的jar包包括:Spring的jar包SpringMVC模块的jar依赖的jarD:\BaiduYunDownload\spring mvc公开课课件代码\spring mvc公开课课件代码\jar包\springmvcJavaWeb工程自身有一个lib文件全部复制进去自动build path了2.2.3配置前端控制器在web.xml中配置前端控制器是一个Servlet在web.xmlweb.xml其中:<servlet-class>org.springframework.web.servlet.DispatcherServlet.class</servlet-class> 在右击DispatcherServlet.class/Copy Qualified Name,再粘贴。

这里面有一个错误导致后来部署后没有发布成功,类找不到错误。

先按下不表。

2.2.4创建一个配置文件springmvc.xml(名称不固定) springmvc.xml是SpringMVC的一个全局配置文件,配置处理器映射器HandlerMapping处理器适配器HandlerAdapter视图解析器ViewResolver编写的Handler新建source文件config右击工程/new/source folder在config里新建springmvc.xmlspringmvc.xml中的文件头springmvc.xml中要配置的内容2.2.6配置处理器适配器HandlerAdapter加载源码<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> ctrl+单击Attch SourceExternal File…D:\BaiduYunDownload\spring mvc公开课课件代码\spring mvc公开课课件代码\jar包\源码2.2.7配置视图解析器ViewResolver2.2.8编写Handler按照适配器要求的规则来编写。

SimpleControllerHandlerAdapter实现Controller接口新建Action,HelloAction.java//设置视图modelAndView.setViewName(viewName);需要jsp页面,新建jsp页面在工程SpringMVCTest/WebRoot/WEB-INF/jsp/hello.jsp2.2.9在springmvc.xml中配置helloAction.java 相当于让Spring管理helloActionCopy Qualified Name of HelloAction.java2.2.10将工程部署到tomcat,启动tomcat访问路径:http://localhost:8080/SpringMVCTest/hello.action 失败!!!!已找到问题所在。

在web.xml中应该把.class删掉,这样就好了重新部署发布,success2.3小结:掌握SpringMVC开发的步骤。

使用实现Controller接口的方式开发存在问题:实现了Controller接口的Action类中只能写一个方法,不方便实际开发。

3注解开发第一个例子3.1新建工程SpringMVCTest02将lib, jsp, web.xml, config, com.haoyang.springmvc.action包全部复制进来3.2在springmvc.xml中配置修改config资源文件中的springmvc.xml处理器映射器HandlerMapping,支持注解,通过注解找action处理器适配器HandlerAdapter,支持注解,解析action中的各种注解,执行action类。

视图解析器,不用改3.3开发action 在HelloAction.java中HelloAction.java3.4配置actionspringmvc.xml中扫描@component、@controller、@service、@repository的注解注意:如果使用组件扫描则controller不需要在springmvc.xml中配置3.5部署工程,运行Tomcathttp://localhost:8080/SpringMVCTest02/hello.actionsuccess!4注解开发学生信息管理功能需求:学生信息管理,包括查询学生信息、添加学生信息、修改学生信息、删除学生信息。

分析:创建一个StudentAction.java编写各个功能的操作方法:查询学生信息、添加学生信息、修改学生信息、删除学生信息pojo指纯粹的javabean,就是只有属性及其set/get方法,但是javabean可以是数据bean,也可以是业务逻辑bean视频中使用的包名是pojo,这里我还是用JavaBean吧回到StudentAction.java(未完成)创建一个jsp页面加载jstl标签,前缀为cStudentAction.java中添加分链接@RequestMapping("/student")部署发布访问地址http://localhost:8080/SpringMVCTest02/student/queryStudent.action以上是页面展示数据,现在从页面向后台传输数据StudentAction.java中添加StudentAction.java重新部署在浏览器中http://localhost:8080/SpringMVCTest02/student/queryStudent.action?type=1015SpringMVC特点SpringMVC是基于方法开发的,通过方法形参接收请求的参数,可以使用单例或多例,建议使用单例。

Struts通过成员变量存储参数,只能设计为多例。

6和Jquery easyui 整合完成数据列表数据列表的效果:我也不知道为什么没有显示出demo中的数据file:///D:/BaiduYunDownload/spring%20mvc%E5%85%AC%E5%BC%80%E8%AF%BE%E8% AF%BE%E4%BB%B6%E4%BB%A3%E7%A0%81/spring%20mvc%E5%85%AC%E5%BC%80% E8%AF%BE%E8%AF%BE%E4%BB%B6%E4%BB%A3%E7%A0%81/%E8%B5%84%E6%96%99 /jquery%20easyui/jquery-easyui-1.2.2/demo/datagrid.html使用jQuery easyUI的datagrid组件datagrid.html<title>jQuery EasyUI</title><link rel="stylesheet"type="text/css"href="../themes/default/easyui.css"><link rel="stylesheet"type="text/css"href="../themes/icon.css"><script type="text/javascript"src="../jquery-1.4.4.min.js"></script><script type="text/javascript"src="../jquery.easyui.min.js"></script><script>$(function(){$('#test').datagrid({title:'My Title',//数据列表标题iconCls:'icon-save',//显示图标width:600,//数据列表的宽度height:350,//列表的高度nowrap: false,//单元格中的数据不换行,如果为true表示不换行,不换行情况下数据加载性能高,如果为false就是换行,换行数据加载性能不高striped:true,//条纹显示效果collapsible:true,//是否可以折叠url:'datagrid_data.json',//加载数据的连接,引连接请求过来是json数据sortName: 'code',//排序字段名称sortOrder: 'desc',//排序的顺序remoteSort: false,//是否远程排序,如果要使用排序建议使用远程排序,对数据库中所有数据进行排序,通过远程排序datagrid将sortName和sortOrder传到后台,这时后台的代码调用service及dao进行数据库排序idField:'code',//此字段很重要,数据结果集的唯一约束frozenColumns:[[//冻结列{field:'ck',checkbox:true},{title:'code',field:'code',width:80,sortable:true}]],columns:[[//普通列{title:'Base Information',colspan:3},{field:'opt',title:'Operation',width:100,align:'center', rowspan:2, formatter:function(value,rec){return '<span style="color:red">Edit Delete</span>';}}],[{field:'name',title:'Name',width:120},{field:'addr',title:'Address',width:120,rowspan:2,sortable:true,sorter:function(a,b){return (a>b?1:-1);}},{field:'col4',title:'Col41',width:150,rowspan:2}]],pagination:true,//是否显示分页rownumbers:true,//是否显示行号toolbar:[{//工具栏id:'btnadd',text:'Add',iconCls:'icon-add',handler:function(){$('#btnsave').linkbutton('enable');alert('add')}},{id:'btncut',text:'Cut',iconCls:'icon-cut',handler:function(){$('#btnsave').linkbutton('enable');alert('cut')}},'-',{id:'btnsave',text:'Save',disabled:true,iconCls:'icon-save',handler:function(){$('#btnsave').linkbutton('disable');alert('save')}}]});var p = $('#test').datagrid('getPager');if (p){$(p).pagination({onBeforeRefresh:function(){alert('before refresh');}});}});function resize(){$('#test').datagrid('resize', {width:700,height:400});}function getSelected(){var selected = $('#test').datagrid('getSelected');if (selected){alert(selected.code+":"++":"+selected.addr+":"+selected.col4);}}function getSelections(){var ids = [];var rows = $('#test').datagrid('getSelections');for(var i=0;i<rows.length;i++){ids.push(rows[i].code);}alert(ids.join(':'));}function clearSelections(){$('#test').datagrid('clearSelections');}function selectRow(){$('#test').datagrid('selectRow',2);}function selectRecord(){$('#test').datagrid('selectRecord','002');}function unselectRow(){$('#test').datagrid('unselectRow',2);}function mergeCells(){$('#test').datagrid('mergeCells',{index:2,field:'addr',rowspan:2,colspan:2});}</script></head><body><h1>DataGrid</h1><div style="margin-bottom:10px;"><a href="#"onclick="resize()">resize</a><a href="#"onclick="getSelected()">getSelected</a><a href="#"onclick="getSelections()">getSelections</a><a href="#"onclick="clearSelections()">clearSelections</a><a href="#"onclick="selectRow()">selectRow</a><a href="#"onclick="selectRecord()">selectRecord</a><a href="#"onclick="unselectRow()">unselectRow</a><a href="#"onclick="mergeCells()">mergeCells</a></div><table id="test"></table></body></html>datagrid组件需要加载url,url需要返回json数据:让SpringMVC编写一个action方法,返回json数据。

相关文档
最新文档