Spring-----MVC配置和基本原理

Java web的发展历史

Model I开发模式和Model I开发模式

1.Model I开发模式

Model1的开发模式是:JSP+JavaBean的模式,它的核心是Jsp页面,在这个页面中,Jsp页面负责++整合页面和JavaBean(业务逻辑)++,而且渲染页面,它的基本流程如下:

什么是JSP页面?

JSP页面是把当前所有的前端后端和数据库都写在同一个页面上,也就是把 html\css\js\java\sql语句等都写在jsp页面中

这样的设计模式到这一个js页面负责了视图的展示和业务流程的控制高度耦合的结果是++Jsp代码十分复杂,后期维护困难++

2.Model Il开发模式

在Model II的模式下,利用jsp页面、servlet和JavaBean 组件分工协作共同完成系统的所有任务,其中jsp负责数据显示逻辑任务,servlet负责程序的流程控制任务,JavaBean负责处理业务逻辑任务。但是后来jsp被替换成了html,它的基本流程如下:

Model2:相对于Model1来说,职责分工更为明确,在Model1的基础上,抽取了Servlet层,体现了一个分层的思想,适合大型的项目开发

MVC模式

Spring mvc是基于Spring的一个模块,专门做web开发,可以理解为是Servlet的升级

在Spring MVC框架当中,Controller替代Servlet担负控制器的职能

M: 指model, ++模型层++,指工程当中的Java Bean,作用是处理数据

Java Bean分两类:

  • 一类是实体类Bean:专门存储业务数据的
  • 一类为业务处理Bean:指Servlet或Dao对象,专门处理业务逻辑和数据

V: View, ++视图层++指项目当中的html或jsp等页面,作用是与用户进程交互,展示数据

c: Contoller, ++控制层++,指工程当中的servlet,.作用是接受请求和响应数据

MVC思想不是那个语言所特有的设计模式,也不是wb应用所特有的思想,而是一种规范。MVC思想将一个应用分成三个基本部分:Model(模型)、View(视图)和Controller(控制器),这三个部分以最少的耦合协同工作,从而++提高了应用的可扩展性和可维护性++。他们三者的关系如下图所示

++++

注意:打包方式创建为war包

MVC配置过程

1、创建项目并命名

2、配置导入

将以下代码导入到pom.xml文件中

XML 复制代码
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <spring.version>5.0.2.RELEASE</spring.version>
  </properties>

  <dependencies>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.9.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.9.0</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!--SpringMVC-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!--servlet API-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>

    <!--日志-->
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.3</version>
    </dependency>

    <dependency>
      <groupId>org.thymeleaf</groupId>
      <artifactId>thymeleaf-spring4</artifactId>
      <version>3.0.9.RELEASE</version>
    </dependency>

  </dependencies>

在web.xml中配置内容

XML 复制代码
  <!--在web.xml中配置Spring提供的过滤器类 -->
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>
       org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <async-supported>true</async-supported>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!--不拦截所有是html的页面请求-->
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>

  <!--配置前端控制器,对浏览器发送的请求进行统一处理-->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>
       org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <!--加载springmvc.xml配置文件的位置和名称,配置的是Spring配置-->
    <init-param>
      <!--contextConfigLocation:上下文配置路径,固定值-->
      <param-name>contextConfigLocation</param-name>
      <!--classpath:类路径,值得是Java和resources文件夹-->
      <!--springmvc.xml:指的是配置文件的名称:需要配置springmvc.xml,在下面-->
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <!--配置启动加载-->
    <load-on-startup>1</load-on-startup>
  </servlet>

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

  <!--开启项目时打开的页面-->
  <welcome-file-list>
    <welcome-file>/index.html</welcome-file>
  </welcome-file-list>

3、在main下建立java和resource目录,并在resource下建立xml文件

并在其文件中配置

XML 复制代码
<!--配置spring创建容器时要扫描的包-->
<context:component-scan base-package="com.qcby"></context:component-scan>

<!--处理映射器-->
<bean 
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

<!--处理器适配器-->
<bean 
class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

<!--配置视图解析器-->
<bean id="viewResolver" 
class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
   <property name="order" value="1"/>
   <property name="characterEncoding" value="UTF-8"/>
   <property name="templateEngine" ref="templateEngine"/>
</bean>
<!-- templateEngine -->
<bean id="templateEngine" 
class="org.thymeleaf.spring4.SpringTemplateEngine">
   <property name="templateResolver" ref="templateResolver"/>
</bean>
<bean id="templateResolver"
class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
   <property name="prefix" value="/html/" />
   <property name="suffix" value=".html" />
   <property name="templateMode" value="HTML5"/>
</bean>
<!-- JSON View -->
<bean
    class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
</bean>
<!-- 配置spring开启注解mvc的支持  默认就是开启的 ,
要想让其他组件(不包含映射器、适配器、处理器)生效就必须需要配置了-->
<mvc:annotation-driven></mvc:annotation-driven>

4、在webapp下可建立html文件布置前端页面

5、在java下可建立java类文件与html文件关联

如:建立文件index.html和HelloController

6、创建命名空间(springmvc.xml)

7、添加tomcat

点击"运行"并选择"编辑配置"在其中选择 本地tomcat服务器

相关推荐
耳东哇10 分钟前
spring ai-openai-vl模型应用qwen-vl\gpt-文字识别-java
java·人工智能·spring
花开富贵ii1 小时前
代码随想录算法训练营四十三天|图论part01
java·数据结构·算法·深度优先·图论
布朗克1682 小时前
Java 10 新特性及具体应用
java·开发语言·新特性·java10
ZZHow10245 小时前
JavaWeb开发_Day05
java·笔记·web
CHEN5_025 小时前
【Java虚拟机】垃圾回收机制
java·开发语言·jvm
Warren985 小时前
Lua 脚本在 Redis 中的应用
java·前端·网络·vue.js·redis·junit·lua
艾伦~耶格尔9 小时前
【数据结构进阶】
java·开发语言·数据结构·学习·面试
爪洼传承人9 小时前
18- 网络编程
java·网络编程
smileNicky10 小时前
SpringBoot系列之从繁琐配置到一键启动之旅
java·spring boot·后端
祈祷苍天赐我java之术10 小时前
Java 迭代器(Iterator)详解
java·开发语言