会员版2.0-就业课springmvc spring5mvc第一天大纲笔记_第1页
会员版2.0-就业课springmvc spring5mvc第一天大纲笔记_第2页
会员版2.0-就业课springmvc spring5mvc第一天大纲笔记_第3页
会员版2.0-就业课springmvc spring5mvc第一天大纲笔记_第4页
会员版2.0-就业课springmvc spring5mvc第一天大纲笔记_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SpringMVC第一第1章SpringMVC的基本概关于三层架构和三层架C/S/B/SJavaEEB/SB/S包表现层的设计一般都使用MVC模型。(MVC是表现层的设计模型,和其他层没有关系)也就是我们常说的service层。它负责业务逻辑处理,和我们开发项目的需求 务层,但是业务层不依赖web层。 MVC模型MVCMVCModelViewController,是模型(model)-视图(view)-控制器(controller)的缩写,是一种用于设计创建Web应用程序表现层的模式。MVC中每个部分各司其职:Model(模型View(视图 必须是1~100之间的整数 SpringMVC是什么SpringMVCSpringMVC是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于SpringFrameWork的后续产品,已经融合SpringWebFlow里面。Spring框架提供Web应用程序的全功的SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2等。SpringMVC已经成为目前最主流的MVC框架之一,并且随着Spring3.0的发布,全面 为最优秀的MVC框架。它通过一套注解,让一个简单的Java类成为处理请求的控制器,而无须实现任何接口。同时它还支SpringMVC在三层架构的位SpringMVC的优势 验证器(Validator)命令对象(Command请求参数绑定到的对象就叫命令对象个定 SpringMVCStruts2的优略分它们的底层都离不开原始ServletAPI。 SpringMVC 是Servlet,而Struts2是以SpringMVC会稍微比Struts2快些。SpringMVC使用更加简洁,同时还支JSR303处理ajax的请求更方(JSR303是一JavaBean参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在我们JavaBean的属性上面,就可以在需要校验的时候进行校验了。) 第2章SpringMVCSpringMVC的案前期准创建一个javaweb工程<a<ajarspringspringmvcjar配置控制器-一个<?<?xmlversion="1.0"encoding="UTF-" id="WebApp_ID" 控制器-- 取值只能是非0正整数,表示启动顺序--> springmvc的配置文<?<?xmlversion="1.0"encoding="UTF-<beans"""" ponent-scanbase-<propertyname="suffix"编写控制器并使用注解配springmvc @Version public oControllerpublicStringo() returno方法执行了。。。。}}测试案例的执行过 和 SpringMVC的请求响应流程DispatcherServlet:前端控制于HandlerMap:处理器映射Handler:处理器它就是我们开发中要编写的具体业务控制器。由它就是我们开发中要编写的具体业务控制器。由DispatcherServlet把用户请求转发到Handler。HandlAdapter:处理器适配通过通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对 ViewResolverView:视图SpringMVCSpringMVCView视图类型的支持,包括:jstlView <mvc:annotation-driven>说明在在SpringMVC的各个组件中,处理器映射器、处理器适配器、视图解析器称为SpringMVC的三大组件。使用<mvc:annotation-driven>自动加载 (处理映射器) HandlerAdapter()SpringMVC.xml它就相当于在xml中配置了: 相当于如下配置--<!--Begin--<!-- <!--HandlerAdapter--<!--HadnlerExceptionResolvers-- <!--End-- 使用说 public@interface } 使用示出现位置的示例控制器代码控制器代码* @Version publicclassAccountControllerpublicStringreturn}}<%@pagelanguage="java"contentType="text/html;charset=UTF-<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN" 方式--<a 方式--methodpublicStringsaveAccount(){return"success";}<formaction="account/saveAccount"paramspublicString");return"success";} 第3章请求参数的绑绑定的机制 publicStringfindAccount(Integer"+accountId);return"success";}支持的数据类型POJO使用要求:如果是基本类型或者如果是基本类型或者String如果是POJO类型,或者它的关联对象:如果是集合类型,有两种方式:给List集合中的元素赋值,使用下标。Map集合中的元素赋值,使用键值对。注意org.springframework.core.convert.support包下。有:java.lang.Boolean->java.lang.String:ObjectToStringConverterjava.lang.Character->java.lang.Number:CharacterToNumberFactoryjava.lang.Character->java.lang.String:ObjectToStringConverterjava.lang.Enum->java.lang.String:EnumToStringConverterjava.lang.Number->java.lang.Character:NumberToCharacterConverterjava.lang.Number->java.lang.Number:NumberToNumberConverterFactoryjava.lang.Number->java.lang.String:ObjectToStringConverterjava.lang.String->java.lang.Boolean:StringToBooleanConverterjava.lang.String->java.lang.Character:StringToCharacterConverterjava.lang.String->java.lang.Enum:StringToEnumConverterFactoryjava.lang.String->java.lang.Number:StringToNumberConverterFactoryjava.lang.String->java.util.Locale:StringToLocaleConverterjava.lang.Stringjava.util.PropertiesStringToPropertiesConverterjava.lang.String->java.util.UUID:StringToUUIDConverterjava.util.Locale->java.lang.String:ObjectToStringConverterjava.util.Propertiesjava.lang.StringPropertiesToStringConverterjava.util.UUID->java.lang.String:ObjectToStringConverter使用示基本类型和String类型作jspjsp基本类 publicStringfindAccount(IntegeraccountId,StringaccountName)}returnPOJO类型作为参 @VersionpublicclassAccountimplementsSerializableprivateIntegerid;privateStringname;privateFloatmoney;privateAddressaddress;//gettersand} @VersionpublicclassAddressimplementsSerializableprivateStringprivateString//gettersand}jsppojo类型演<formaction="account/saveAccount"账户名称:<inputtype="textname="name账户金额:账户金额:<inputtype="textname="money账户省份:<inputtype="textname="vinceName@param publicStringsaveAccount(Account{return}POJO类中包含集合类型参数 @VersionpublicclassUserimplementsSerializableprivateStringusername;privateStringpassword;privateIntegerage;privateList<Account>privateMap<String,Account>//gettersandpublicStringtoString()return"User[username="+username+",password="+password+",+age+",\naccounts="++",\naccountMap="+accountMap+}}jspPOJO类包含集合类用户名称:<inputtype="textname="username用 :<inputtype="password"name="password"用 :<inputtype="text"name="age"1名称:<inputtype="text"name="accounts[0].name"><br/>1金额:<inputtype="textname="accounts[0].money><br/>2名称:<inputtype="text"name="accounts[1].name"><br/>2金额:<inputtype="textname="accounts[1].money><br/>3名称:<inputtype="text"name="accountMap['one'].name"><br/>3金额:<inputtype="textname="accountMap['one'].money><br/>4名称:<inputtype="text"name="accountMap['two'].name"><br/>4金额:<inputtype="textname="accountMap['two'].money><br/> publicStringupdateAccount(Userreturn}请求参数乱码问postpost 过滤所 <!--location表示路径 的文件--<mvc:resourceslocation="/css/" <ConnectorconnectionTimeout="20000"port="8080"protocol="HTTP/1.1"redirectPort="8443"/><ConnectorconnectionTimeout="20000"port="8080"protocol="HTTP/1.1"redirectPort="8443"自定义类型转换使用场景 jsp代码 publicStringdeleteAccount(Stringreturn}当我们把控制器中方法参数的类型改为Date时: publicStringdeleteAccount(Date"+date);return"success";}Failedtobindrequestelement:Failedtoconvertvalueoftype'java.lang.String'torequired'java.util.Date';nestedexceptionis'java.util.Date';nestedexceptionisFailedtoconvertfromtype[java.lang.String]totype[java.util.Date]value'2018-01-01';nestedexceptionis使用步第一步:定义一个类,实现第一步:定义一个类,实现ConverterpublicinterfaceConverter<ST>//S:表示接受的类型,T:表示目标类*实现类型转换的方Tconvert(S} @VersionpublicclassStringToDateConverterimplementsConverter<String,Date>publicDateconvert(String{DateFormatformat=null;try{thrownewNullPointerException("请输入要转换的日期}format=newSimpleDateFormat("yyyy-MM-dd");Datedate=format.parse(source);return}catch(Exceptione)thrownewRuntimeException("输入日期有误}}}第二步:在spring <beanid="converterService"<property<bean第三步:在annotation- 配置的类型转换服 使用ServletAPI对象作为方法参数jsp **publicStringtestServletAPI(HttpServletRequestHttpSessionsession){return"success";}使用说使用示jspjsprequestParams注解的使@param public age){System.out.println(username+","+age);return}使用说get请求方式不适用。required:是否必须有请求体。默认值是:true。当取值true时,get请求方式会报错。如果取值为false,get请求得到是null。使用示postpost请求jsprequestbody用户名称:<inputtype="textname="username用 :<inputtype="password"name="password"用 :<inputtype="text"name="age"get请求jsp@param publicString useRequestBody(@RequestBody(required=false)Stringbody){System.out.println(body);return}使用说中使用示jspjspPathVariable<ahref="springmvc/usePathVariable/100">pathVariable注解</a>@param** publicString usePathVariable(@PathVariable("id")Integerid){System.out.println(id);return}REST什么是REST(英文:RepresentationalStateTransfer,简称REST)描述了一个架构样式的网络系统,比如web应用程序。它首次出现在2000年RoyFielding的博士 中,他是HTTP规范的主要编写者之一。在目前主流的三种Web服务交互方案中,REST相比于SOAP(SimpleObjectAccessprotocol,简单对象协议)以及XML-RPC更加简单明了,无论是对URL的处理还是对Payload的编码,REST都倾向于用更加简 。值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格。 价值在于如何设计出符合REST风格的网络接口。restful restful 资源定位符)指向它,每种资源对应一个特定的URI。要 它的URI就可以,因此URI即为每一个资源的独一无二的识别符表现层(Representation):把资源具体呈现出来的形式,叫做它的表现 (Representation)比如,文本可以用txtHTML、XML、JSON用二HTTP协议,是一个无状态协议,即所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种,让服务器端发生“状态转化”(StateTransfer)。而这种转化是建立在表现层之上的,所以就是表现层状态转化。具体说是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来restful HTTPGET 得到id1的 HTTPDELETE除id=1 HTTP id1 HTTP 新增HiddentHttpMethodFilter的示由于浏览器form表单只支持GETPOST请求,而DELETE、PUT等method并不支持,Spring3.0添加了一个过滤器,可以将浏览器请求改为指定的请求方式,发GET、POST、PUT与DELETE请求。第一步web.xml置该过滤器。jsp用户名称:<inputtype="text<!--<inputtype="hidden"name="_method"value="POST">--用户名称:<inputtype="text<inputtype="hidden"name="_method"<inputtype="hidden"name="_method"<inputtype="hidden"name="_method"@param publicString testRestfulURLPOST(Useruser){System.out.println("restpost"+user);return"success";}@param publicString testRestfulURLPUT(@PathVariable("id")Integerid,Useruser){System.out.println("restput"+id+","+user);return}@param publicString testRestfulURLDELETE(@PathVariable("id")Integerid){System.out.println("restdelete"+id);returnreturn}@param publicString testRestfulURLGET(@PathVariable("id")Integerid){System.out.println("restget"+id);return}使用说注使用示@param public requestHeader){System.out.println(requestHeader);return"success";}使用说 使用示jspjsp<a**@param public return}使用说 为使用示POJO属性的基本使用jpsjps@parampublicvoidshowModel(Useruser)}@param publicStringtestModelAttribute(User{System.out.println("执行了控制器的方法"+user.getUsernamereturn"success";}基于Map

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论