Use a configuração Java para completar a construção do SpringMVC

Processo de solicitação SpringMVC


Escreva a descrição da imagem aqui

Descreva resumidamente o processo de solicitação:
1. A solicitação chega ao controlador frontal DispatcherServlet e sua função é encaminhar a solicitação para o controlador correspondente (controlador)
2. O DispatcherServlet mapeia o processador para obter o controlador específico e, em seguida, encaminha a solicitação
3. O controlador processa as informações e, em seguida, empacota o modelo (no modelo são as informações que precisam ser exibidas em primeiro plano a partir do fundo) e indica o nome da visualização usada para renderizar a saída
4. DispatcherServlet está usando o analisador de visualização (o controlador não transmite diretamente Dê o nome do resolvedor de visão, mas através do Servlet, isso é para desacoplar o controlador e o resolvedor de visão) para corresponder a uma visão específica para renderização

Construir SpringMVC

Um, configure DispatcherServlet

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

/**
 * 
 * @author CELINE
 *
 */
//扩展自Abstrac~Initializer的任意类,都会自动地配置Dispatcher-Servlet和Spring应用上下文
//spring的应用上下文会位于程序的Servlet上下文之中
public class SpittrWebAppInitializer  extends
        AbstractAnnotationConfigDispatcherServletInitializer {
    
    

   @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[] { WebConfig.class };
    }

    //映射“/”,表示会使用默认的Servlet
    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

    @Override
    protected Class<?>[] getRootConfigClasses() {
        // TODO Auto-generated method stub
        return null;
    }

}

Escreva a descrição da imagem aqui

A classe SpittrWebAppInitializer que criamos herda
AbstractAnnotationConfigDispatcherServletInitializer. Qualquer classe que herde desta classe configurará automaticamente o Dispatcher-Servlet e o contexto do aplicativo Spring * , mas o contexto de configuração real é a classe WebApplicationInitializer

Normalmente há dois contextos de aplicativo no Spring Web. Um é o contexto de aplicativo Spring. Este contexto é carregado por DispatcherServlet e corresponde ao método getServletConfigClasses () acima. O outro contexto não é spring e precisa ser criado por meio de ContextLoaderListerner. O método correspondente é getRootConfigClasses ()

AbstractAnnotationConfigDispatcherServletInitializer criará DispatcherServlet e ContextLoaderListener

二 、 WebConfig

package spitter.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@EnableWebMvc
@ComponentScan("spitter.web")
public class WebConfig extends WebMvcConfigurerAdapter {
    
    

    /**
     * 配置JSP视图解析器,他会查找jsp文件,在查找的时候
     * 他会在视图名称上加一个特定的前缀和后缀
     * home的视图——解析成为/WEB-INF/views/home.jsp
     * @return
     */
    @Bean
    public ViewResolver viewResolver(){
        InternalResourceViewResolver resolver=
                new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        resolver.setExposeContextBeansAsAttributes(true);
        return resolver;
    }

    /**
     * 通过调用enable方法,我们要求DispatcherServelet将
     * 对静态资源的请求转发到Servlet容器中的默认的Servlet上,
     * 不是DispatcherServelet本身处理
     * @param configurer
     */
    public void configureDefaultServleHandling(
            DefaultServletHandlerConfigurer configurer){
        configurer.enable();
    }
}

Três, escreva o controlador

package spitter.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


@Controller
public class HomeController {
    
    

    @RequestMapping(value="/",method=RequestMethod.GET)
    public String home(){
        //视图名为home
        //配置的InternalResourceViewResolver方式,
        //home会被解析成"/WEB-INF/views/home.jsp"
        return "home";
    }
}

Quarto, defina uma página JSP simples

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Spitter</title>
</head>

<body>
    <h1>Welcome to Spittr!!!</h1>
</body>

</html>

Execute para ver o efeito:

Escreva a descrição da imagem aqui

Sucesso !! ~~ Isso é tudo

Acho que você gosta

Origin blog.csdn.net/cd18333612683/article/details/79130683
Recomendado
Clasificación