Notas de estudo do Spring MVC-01 uso preliminar

1. Modelo de arquitetura de três camadas (MVC)

A. Modelo de desenvolvimento tradicional Modelo 1

       No início do desenvolvimento Java Web, JSP era responsável pela solicitação e resposta e chamava os métodos relacionados ao banco de dados em JavaBean, que era chamado de modo Model1. A arquitetura dessa abordagem é bastante simples, mas as responsabilidades funcionais do JSP não são únicas e é difícil obter a reutilização do código. Ao mesmo tempo, há um sério acoplamento entre JSP e JavaBean, o que não é favorável à manutenção.

B. Modelo de desenvolvimento tradicional Modelo 2

       A fim de resolver os problemas acima, a tecnologia Servlet surgiu. Todas as solicitações do usuário serão interceptadas primeiro pelo Servlet, então o Java Bean correspondente será selecionado de acordo com a solicitação e o resultado será exibido pelo JSP.

       A arquitetura de desenvolvimento é geralmente baseada em duas arquiteturas, B / S (navegador / servidor) e C / S (cliente / servidor). No desenvolvimento JavaEE, quase todos são baseados na arquitetura B / S. A arquitetura padrão de três camadas inclui: camada de apresentação, camada de negócios e camada de persistência.

Camada de apresentação : é a camada da web que costumamos dizer, responsável por receber solicitações do cliente, incluindo parâmetros de solicitação, e responder aos resultados ao cliente. Normalmente, o cliente usa o protocolo http para solicitar a camada da web, e a camada da web precisa receber a solicitação http e responder ao serviço de atendimento ao cliente por meio da resposta http.

A camada de apresentação pode ser dividida em uma camada de controle e uma camada de exibição: a camada de controle é responsável por receber as solicitações e seus parâmetros, e a camada de exibição é responsável por exibir os resultados.

Camada de negócios : a camada de serviço que costumamos dizer, responsável pelo processamento da lógica de negócios. A camada de negócios pode contar com a camada de persistência ao realizar o processamento de negócios.Se você deseja persistir os dados, você precisa garantir a consistência das coisas (as transações devem ser colocadas na camada de negócios para controle).

Camada de persistência : é a camada dao que costumamos dizer, responsável pelas operações de persistência de dados.

Modelo de desenvolvimento MVC:

M: O modelo do modelo é na verdade o objeto JavaBean que usamos para armazenar dados em desenvolvimento.

V: visão da vista, usada para exibir os resultados, como JSP, HTML.

C: Controller Controller, responsável por interagir com os usuários e receber solicitações, como Servlet.

C. Spring MVC

        Spring MVC é uma estrutura da web leve baseada no tipo orientado a solicitação do padrão MVC implementado por Java. Uma classe Java simples pode ser usada como um controlador para processar solicitações por meio de um conjunto de anotações sem a necessidade de implementar nenhuma interface. Também oferece suporte Solicitação de estilo RESTful. E por ser um produto subsequente da estrutura do Spring, é muito fácil usar a integração do Spring. Simplesmente entenda que Spring MVC é uma estrutura baseada em spring, que é uma atualização e extensão de servlet. (A camada inferior do desenvolvimento web é o servlet)

         O Spring MVC pode criar objetos de controlador para receber solicitações do usuário e retornar resultados de processamento e colocá-los no contêiner Spring MVC. O objeto controlador que criamos usando a anotação @Controller é apenas um objeto de uma classe comum em vez de um servlet (o servlet deve herdar HttpServlet), mas o Spring MVC fornece ao objeto controlador as funções de recebimento de parâmetros e retorno de resultados.

         A entrada do Spring MVC é DispatcherServlet e todos os pedidos são encaminhados ao objeto Controller responsável pelo processamento via DispatcherServlet.

Experiência de uso:

0. Crie um novo projeto web maven

Se você usar o maven para construir automaticamente, pode modificar o arquivo de configuração do maven (settings.xml) para usar o espelhamento da nuvem Alibaba:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                          https://maven.apache.org/xsd/settings-1.0.0.xsd">

      <mirrors>
        <mirror>  
            <id>alimaven</id>  
            <name>aliyun maven</name>  
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
            <mirrorOf>central</mirrorOf>          
        </mirror>  
      </mirrors>
</settings>

Depois que a compilação automática for concluída, também precisamos adicionar manualmente main / java, main / resource, a estrutura do projeto é a seguinte:

1. Importar dependências

Uma vez que os projetos construídos automaticamente são frequentemente diferentes de nosso ambiente de uso, precisamos ajustar manualmente o pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>SpringMVC-01</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!--JDK版本-->
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <!--servlet依赖-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>
    <!--springmvc依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.5.RELEASE</version>
    </dependency>
  </dependencies>
</project>

2. Registre DispatcherServlet em web.xml

O projeto da web construído automaticamente por maven usa uma versão do aplicativo da web baixa, então nós mudamos para 4.0.

O controlador frontal DispatcherServlet (também chamado de dispatcher central) é um servlet herdado de HttpServlet; é usado para receber solicitações do usuário, chamar o objeto controlador responsável pelo processamento da solicitação e retornar os resultados do processamento; no método init () do DispatcherServlet , Criou um objeto de contêiner SpringMVC e o colocou em ServletContext.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--注册DispatcherServlet,配置Tomcat启动后就创建-->
    <servlet>
        <!--SpringMVC容器创建时,读取的配置文件默认为<servlet-name>-servlet.xml-->
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <init-param>
            <!--自定义SpringMVC读取的配置文件的位置-->
            <param-name>contextConfigLocation</param-name>
            <!--类路径下的springmvc.xml文件(resources目录就是类路径)-->
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>

        <!--Tomcat启动后,创建对象的顺序-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <!--配置DispatcherServlet拦截哪些请求-->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!--
            使用框架时,url-pattern可以使用两种
            1. 扩展名  *代表通配符,匹配任意长度的路径  只看扩展名  *.do *.action 等
            2. 使用 "/"
        -->
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
</web-app>

3. Crie uma página index.jsp para iniciar a solicitação

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <p>第一个项目</p>
    <a href="some.do">发起请求</a>
</body>
</html>

4. Criar controlador de classe

1) Use @Controller para declarar que este é um objeto controlador e injete-o no contêiner Spring MVC.

2) Use @RequestingMapping para declarar o caminho da solicitação. Os métodos modificados com @RequestingMapping são chamados de métodos de processador ou métodos de controlador, que são usados ​​para processar solicitações, semelhantes aos métodos doGet, doPost e serviço em servlets.

3) Modelo: Após o processamento da solicitação de armazenamento, os dados serão devolvidos ao usuário

    Visualização: armazena a visualização usada para exibir os dados, como jsp

package com.zzt.Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class MyController {

    @RequestMapping("/some.do")
    public ModelAndView doSome(){
        ModelAndView modelAndView = new ModelAndView();

        // 存放数据 框架会自动将数据放到request作用域
        modelAndView.addObject("msg","hello-word");

        // 指定视图的路径 框架会自动通过forward进行请求转发 request.getRequestDispatcher("/show.jsp").forward(..)
        modelAndView.setViewName("/show.jsp");

        return modelAndView;
    }

}

5. Crie uma página para exibir os resultados

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <p>请求的参数为:${requestScope.get("msg")}</p>
</body>
</html>

6. Crie o arquivo de configuração SpringMVC

Como usamos a anotação @Controller para anotar a classe do controlador, precisamos configurar o scanner para escanear o pacote e injetar automaticamente a classe de entidade no contêiner

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-3.1.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">

    <!--声明组件扫描器-->
    <context:component-scan base-package="com.zzt.Controller"/>

</beans>

 

Acho que você gosta

Origin blog.csdn.net/qq_39304630/article/details/112604515
Recomendado
Clasificación