springMVC_基础

springMVC框架 (三层架构+springMVC)

一:三层架构:

1:表现层 WEB层,用来和客户端进行数据交互的,表现层一般采用MVC设计模式

2:业务层 处理公司具体业务逻辑的

3:持久层 用来操作数据库的

二:MVC模型(模型视图控制器)

1:model 数据模型 Javabean的类,用来进行数据封装

2:view 指 jsp,HTML用来展示数据给客户

3:controller 用来接收客户的请求,对整个流程的控制,进行数据的校验

三:springMVC设计模式

M:model模型=JavaBean

V:view视图 JSP

C:controller控制器 Servlet

springMVC框架在表现层

spring框架在业务层

MyBatista框架在持久层

四:springMVC是什么

定义:

1. 是一种基于Java实现的MVC设计模型的请求驱动类型的轻量级WEB框架。

2. Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供 了构建 Web 应用程序的全功能 MVC 模块。

3. 使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的 SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2等。

优势:模块化分工明确+清晰的角色划分+分工明确扩展点灵活+和spring框架无缝集成+强大的JSP标签库

和Struts2对比

优势:它们都是表现层框架,基于MVC框架设计的

它们的底层都离不开原始的ServletAPI

它们的处理请求机制都是一个核心控制器

区别:1-springMVC的入口是servlet,而struts是FilterspringMVC是基于方法设计的,而Struts2是基于类,Struts2每次执行都会创建一个动作类,所以springMVC会稍微比Struts2快些

2-springMVC使用更加简洁,同时还支持JSR303,处理ajax的请求更方便

Struts2的OGNL,表达式使页面的开发效率相比SpringMVC更高些,但执行效率并没有比JSTL提升,尤其是Struts2的表单标签,远没有thml开发效率高。

springMVC的@contr0ller是单例的

@Scope("request"):多例。

 

五:使用springMVC

1:配置核心控制器--一个servlet

使用标签<servlet><servlet-name></servlet-name><servlet-class></servlet-class>

配置初始化参数,用于读取springMVC的配置文件

使用标签<init-param><param-name></param-name><param=value></param=value>

配置servlet的对象的创建时间点,应用加载时创建,取值只能是非0正整数,表示启动数据

<load-on-startup>1</load-on-startup>

配置mapping

<servlet-mapping><servlet-name></servlet-name><url-pattern></url-pattern>

2:创建配置文件-springmvc.xml

添加约束

配置创建spring容器要扫描的包

使用的标签<context:component-scan base-package="com.it"></context:component-scan>

配置视图解析器

使用的标签<bean class="org.springfreamwork...">

<property name="prefix" value="/WEB-INF/pages"></property>//prefix是指访问页面的前 缀,指定页面存放的文件夹

<property name="suffix" value=".jsp"></property></bean>//suffix:是指文件的后缀名, 常见的后缀名有html,jsp,php,txt,mp3

3:编写控制器并使用注解配置

控制器添加注解@Controller("helloController")

控制器内方法添加注解@RequestrianMapping("/hello")

从此过程得到结论:

HelloController和InternalResourceViewResolver,但远不止这些

#浏览器发送请求,被DispatherServlet捕获,该servlet并不是处理请求,而是把请求转发出去,转发的路径是根据请求URL,匹配@RequestrianMapping中的内容

#匹配到后,执行对应的方法,该方法有一个返回值

#根据方法的返回值,借助InternalResourceViewResoulver找到对应的结果视图

#渲染结果视图,响应浏览器

该过程中涉及到的组件

1:DispatcherServlet:前端控制器:用户请求到达这里,它调用其他组件处理用户请求,它的存在降低了组件之间的耦合性

2:HandlerMapping处理器映射器:它负责根据用户请求找到Handler即处理器,SpringMVC提供了不同映射器实现不同的映射方式(如:配置文件方式 实现接口方式 注解方式等)

3:Handler处理器:它是开发中要编写的具体业务控制器,由DispatcherServlet把用户请求转发到Handler,Handler对具体用户请求进行处理

4:HandlAdapter处理器适配器:通过它对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行

5:View Resolver视图解析器:负责将处理结果生成View视图,首先根据逻辑视图名解析成物理视图,即具体的页面地址再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户

6:View视图:springMVC框架提供很多的View视图类型的支持,如:jstView,freemarkerView,pdfView.最常用的是jsp。一般情况下需要通过页面标签或者页面模板技术奖模型通过页面展示给用户,需要程序员根据业务需求开发具体的页面

7:<mvc:annotation-driven>说明:在springMVC的各个组件中,处理器映射器 处理器适配器 视图解析器成为springMVC的三大组件。使用<mvc:annotation-driven>自动加载RequestMappingHandlerMapping(处理映射器和RequestHandlerAdapter(处理适配器),可用在Spring.xml配置文件中使用<mvc:annotation-driven>替代注解处理器和适配器的配置。

它相当于在xml中配置了如下配置:

RequestMapping注解

源码

作用:用于建立请求URL和处理请求方法之间的对应关系

出现位置:

类上:请求URL的第一级目录,不写默认为根目录,写的话需要以/开头,它的目的是为了使URL可以按照模块化管理

例如:账户模块 :/account/add

/account/update

订单模块:/order/add

/order/update

红色部分就是把RequestMapping写在类上,使我们的URL更加精细

方法上:请求URL的第二级访问目录

属性:

value:用于指定请求的URL。它和path属性的作用是一样的

method:用于指定请求的方式

parame:用于指定限制请求参数的条件,它支持简单的表达方式,要求请求参数的KEY和value必须和配置一样

headers:用于指定限制请求消息头的条件

注意:以上四个属性只要出现2个或以上,他们的关系是与关系

六:绑定说明

1:绑定的机制:表单中请求参数都是基于key=value的,springMVC绑定请求参数的过程是通过把表单提交请求参数,作为控制器中方法参数进行绑定的

例如:<a href="account/findAccount?accountId=10">查询账户</a>

请求参数是:accountId=10

2:支持的数据类型:

基本的数据类型:包含基本类型和String类型

POJO类型参数:包含实体类,以及关联的实体类

数据和集合类型参数:包含List和Map结构的集合(包括数组)

springMVC绑定请求参数是自动实现的,但是想要使用必须遵循使用要求

3:使用要求:

如果是基本类型或者String类型的:

要求参数名称必须和控制器中方法的形参名称保持一致(严格区分大小写)

如果是POJO类型或者和它的关联对象

要求表单中参数名称和POJO类的属性名称保持一致,并且控制器方法的参数类型是POJO类型

如果是集合类型,有两种方式

第一种:要求类型参数必须在POJO中,在表单中请求参数名称要和POJO中集合属性名称相同

给List集合中的元素复制,使用下标

给Map集合中的元素赋值,使用键值对

第二种:接收的请求参数是json格式数据,需要借助一个注解实现

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值