当前位置: 首页 > news >正文

德清网站设计谷歌浏览器 免费下载

德清网站设计,谷歌浏览器 免费下载,上海到北京多少公里,高清做爰片免费观看网站文章目录Day 4什么是MVC发展什么是SpringMVCMVC框架要做的事情HelloSpringMVC流程总结Day 4 2019年7月30日。 这是我学习Spring的第四天。 这一天,我学到了以下的知识。 什么是MVC MVC:模型(Model)、视图(View&…

文章目录

  • Day 4
  • 什么是MVC
  • 发展
  • 什么是SpringMVC
  • MVC框架要做的事情
  • HelloSpringMVC
  • 流程总结

Day 4

2019年7月30日。
这是我学习Spring的第四天。
这一天,我学到了以下的知识。

什么是MVC

MVC:模型(Model)、视图(View)、控制器(Controller),是一种软件设计规范,就是将业务逻辑、数据、显示分离的方法来组织代码
MVC主要作用是降低了视图与业务逻辑间的双向偶合。MVC不是一种设计模式,MVC是一种架构模式。当然不同的MVC存在差异。

  • Model:数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务
  • View:负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西
  • Controller:接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。 也就是说控制器做了个调度员的工作

最典型的MVC就是JSP + servlet + javabean的模式
在这里插入图片描述
本质:将业务逻辑,数据,显示分离的方式来编写代码

发展

  • Model1

    在web早期的开发中,通常采用的都是Model1。

    Model1中,主要分为两层:视图层和模型层。
    在这里插入图片描述

    • 优点:架构简单,比较适合小型项目开发;
    • 缺点:JSP职责不单一,职责过重,不便于维护;
  • Model2
    Model2把一个项目分成三部分,包括视图、控制、模型
    在这里插入图片描述

    1. 用户发请求
    2. Servlet接收请求数据,并调用对应的业务逻辑方法
    3. 业务处理完毕,返回更新后的数据给servlet
    4. servlet转向到JSP,由JSP来渲染页面
    5. 响应给前端更新后的页面

    职责分析:

    • Controller:控制器
    1. 取得表单数据
    2. 调用业务逻辑
    3. 转向指定的页面
    • Model:模型
    1. 业务逻辑
    2. 保存数据的状态
    • View:视图
    1. 显示页面

    Model2这样不仅提高的代码的复用率与项目的扩展性,且大大降低了项目的维护成本。Model 1模式的实现比较简单,适用于快速开发小规模项目,Model1中JSP页面身兼View和Controller两种角色,将控制逻辑和表现逻辑混杂在一起,从而导致代码的重用性非常低,增加了应用的扩展性和维护的难度。Model2消除了Model1的缺点。

什么是SpringMVC

Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架

为什么要学习SpringMVC?

Spring MVC的特点:

  1. 轻量级,简单易学
  2. 高效 , 基于请求响应的MVC框架
  3. 与Spring兼容性好,无缝结合
  4. 约定优于配置
  5. 功能强大:RESTful、数据验证、格式化、本地化、主题等
  6. 简洁灵活

Spring的web框架围绕DispatcherServlet [ 调度Servlet ] 设计。

DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解形式进行开发,十分简洁;

官网上说Spring的web模块提供了大量独特的功能,包括:

  • 清晰的角色划分:控制器(controller)、验证器(validator)、 命令对象(command object)、表单对象(form object)、模型对象(model object)、 Servlet分发器(DispatcherServlet)、 处理器映射(handler mapping)、视图解析器(view resolver)等等。 每一个角色都可以由一个专门的对象来实现。

  • 强大而直接的配置方式:将框架类和应用程序类都能作为JavaBean配置,而且支持跨多个context的引用。

  • 可适配、非侵入:可以根据不同的应用场景,选择合适的控制器子类 (simple型、command型、form型、wizard型、multi-action型或者自定义),而不是从单一控制器 (比如Action/ActionForm)继承。

  • 可重用的业务代码:可以使用现有的业务对象作为命令或表单对象,而不需要去扩展某个特定框架的基类。

  • 可定制的绑定(binding) 和验证(validation):比如将类型不匹配作为应用级的验证错误, 这可以保存错误的值。再比如本地化的日期和数字绑定等等。在其他某些框架中,你只能使用字符串表单对象, 需要手动解析它并转换到业务对象。

  • 可定制的handler mapping和view resolution:Spring提供从最简单的URL映射, 到复杂的、专用的定制策略。与某些web MVC框架强制开发人员使用单一特定技术相比,Spring显得更加灵活。

  • 灵活的model转换:在Springweb框架中,使用基于Map的 键/值对来达到轻易地与各种视图技术的集成。

  • 可定制的本地化和主题(theme)解析:支持在JSP中可选择地使用Spring标签库、支持JSTL、支持Velocity(不需要额外的中间层)等等。

  • 简单而强大的JSP标签库(Spring Tag Library):支持包括诸如数据绑定和主题(theme) 之类的许多功能。它提供在标记方面的最大灵活性。

  • JSP表单标签库:在Spring2.0中引入的表单标签库,使得在JSP中编写 表单更加容易。

  • Spring Bean的生命周期可以被限制在当前的HTTP Request或者HTTP Session。 准确的说,这并非Spring MVC框架本身特性,而应归属于Sping MVC使用的WebApplicationContext容器。

正因为SpringMVC较Struct2好 , 简单 , 便捷 , 易学 , 天生和Spring无缝集成(使用SpringIoC和Aop) , 使用约定优于配置 . 能够进行简单的junit测试 . 支持Restful风格 .异常处理 , 本地化 , 国际化 , 数据验证 , 类型转换 , 拦截器 等等…所以需要学习 .

最重要的一点还是用的人多 , 使用的公司多 .

MVC框架要做的事情

  1. 将url映射到java类或java类的方法 .

  2. 封装用户提交的数据 .

  3. 处理请求–调用相关的业务处理–封装响应数据 .

  4. 将响应的数据进行渲染 . jsp / html 等表示层数据 .

中心控制器
Spring MVC框架像许多其他MVC框架一样,以请求为驱动 , 围绕一个中心Servlet分派请求及提供其他功能,DispatcherServlet是一个实际的Servlet (它继承自HttpServlet 基类)

SpringMVC的原理如下图所示:
在这里插入图片描述

当发起请求时被前置的控制器拦截到请求,根据请求参数生成代理请求,找到请求对应的实际控制器,控制器处理请求,创建数据模型,访问数据库,将模型响应给中心控制器,控制器使用模型与视图渲染视图结果,将结果返回给中心控制器,再将结果返回给请求者。

HelloSpringMVC

首先利用Maven创建一个Web项目,模板选择箭头标识出来的:【maven-archetype-webapp】
在这里插入图片描述
1. Maven及导包注意点

  • 资源过滤问题
  • 导包不要漏
<dependencies><!--junit包单元测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!-- Spring MVC 及 Spring系列包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.24.RELEASE</version></dependency><!--jstl 和 jsp的包--><!--Servlet核心--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version></dependency><!-- JSTL --><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency></dependencies><build><!--解决资源导出问题--><resources><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource></resources>
</build>

2. 注册SpringMVC核心Servlet

  • 注册DispatcherServlet
  • 关联SpringMVC的配置文件
  • 启动级别为1
  • 映射路径为 / 【不要用/*,会404】
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--关联SpringMVC配置文件--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet.xml</param-value></init-param><!--这个东西要和服务器一起启动;load-on-startup,启动级别,数字越小级别越高!--><load-on-startup>1</load-on-startup></servlet><!--所有请求都会经过这个DispatcherServlet请求分发器--><!--/和/*的区别:< url-pattern > / </ url-pattern > 不会匹配到.jsp, 只针对我们编写的请求;即:.jsp不会进入spring的 DispatcherServlet类 。< url-pattern > /* </ url-pattern > 会匹配*.jsp,会出现返回jsp视图时再次进入spring的DispatcherServlet 类,导致找不到对应的controller所以报404错。--><servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!--欢迎页面--><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>

3.编写SpringMVC的配置文件

  1. 让IOC的注解生效
  2. 静态资源过滤 :HTML,JS,CSS,图片 , 视频 …
  3. MVC的注解驱动
  4. 配置视图解析器
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttps://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--扫描指定包下的注解,让指定的类能够被IOC容器管理--><context:component-scan base-package="controller"/><!--静态资源过滤--><mvc:default-servlet-handler/><!--annotation-driven:支持MVC注解驱动 --><mvc:annotation-driven/><!--视图解析器作用;方便统一管理--><bean id="InternalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/></bean></beans>

4.编写Controller类

  • 需要给类加注解 :@Controller , 可以让IOC容器管理 , 等价于Bean
  • 请求映射的路径 :@RequestMapping (“路径”),如果类上有就先写类的,在写方法的
  • Model :模型传递参数
  • return “hello”; 它会去视图解析中拼接前缀和后缀来找到对应的视图
@Controller
@RequestMapping("/HelloController")
public class HelloWorldController {//请求映射("路径")@RequestMapping("/hello")public String hi(Model model){model.addAttribute("msg","Hello,SpringMVC");System.out.println("进入HELLO");return "hello"; //WEB-INF/jsp/hello.jsp}}

5.视图层

  • 注意视图的位置,要和视图解析器对应 web-inf / jsp , 为什么需要在web-inf路径下 , 因为这个路径下的东西用户无法直接访问,更加安全
  • 可以通过EL表达式取出Model中存放的值,或者对象
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>SpringMVC</title>
</head>
<body>${msg}</body>
</html>

前5个步骤搭建完成后,项目结构如图所示:
在这里插入图片描述
6.测试
配置Tomcat , 设置项目名 , 开启服务器 , 访问对应的请求路径
在这里插入图片描述

流程总结

  1. 建立web项目
  2. 导包
  3. 编写web.xml
  4. 编写springmvc的配置文件 【servletname】-servlet.xml
  5. 编写控制类
  6. 编写视图层
  7. 测试
http://www.lbrq.cn/news/2435995.html

相关文章:

  • 温州设计集团网站建设百度高级搜索入口
  • 延安市城乡建设局网站seo怎么去优化
  • 网络设计思路百度关键词快速优化
  • 大连做网站哪家好一点2023年9月疫情又开始了吗
  • 电商设计网站有哪些内容建网站的公司排名
  • 上海58同城招聘网最新招聘太原百度快速优化
  • 福州外贸网站建设国内新闻大事20条
  • 旅游电子商务网站开发制作如何用google搜索产品关键词
  • 怎么给网站做开场动画怎么创建私人网站
  • 1空间做2个网站企业网络营销策划书
  • 做消费信贷网站价格网络营销推广服务商
  • 旅游公司网站建设ppt优化排名案例
  • 公司网站应该是市场部做吗系统优化软件推荐
  • 河南省台前县建设局网站磁力棒
  • 文昌网站建设网页设计网站
  • 个人网页设计作品代码seo外链工具有用吗
  • 鄂尔多斯 网站制作网站构建的基本流程
  • 汝阳网站建设兰州seo快速优化报价
  • 用laravel做的网站买卖网交易平台
  • 百度网站托管推手平台哪个靠谱
  • 做360全景有什么网站百度seo优化公司
  • 高端营销网站定制苏州百度快照优化排名
  • 网络建站工作室官网源码有域名有服务器怎么做网站
  • 公安部门网站建设方案网站seo优化发布高质量外链
  • 什么是网站建设与管理百度地图导航网页版
  • python怎么做抢课网站杭州百度推广代理公司哪家好
  • 自己做头像的网站精准广告投放
  • 动态网站开发难吗网络推广网络营销和网站推广的区别
  • 网站数据包如何做架构恶意点击竞价时用的什么软件
  • 南昌免费网站建站模板网站标题优化排名
  • 代码随想录算法训练营第五十二天|图论part3
  • Linux研学-MySQL安装
  • [LLM]Synthetic Visual Genome
  • leetcode 1695. 删除子数组的最大得分 中等
  • Leetcode题解:209长度最小的子数组,掌握滑动窗口从此开始!!!
  • 用org.apache.pdfbox 转换 PDF 到 图片格式