Processo de solicitação SpringMVC |
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;
}
}
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:
Sucesso !! ~~ Isso é tudo