您的位置:首页 > 编程语言 > Java开发

使用Java配置的方式完成SpringMVC的搭建

2018-01-22 16:38 465 查看
SpringMVC请求过程


简单描述一下请求过程:

1.请求到达前端控制器DispatcherServlet,他的作用是将请求转发给相应的控制器(controller)

2.DispatcherServlet通过处理器映射得到具体是哪个控制器,然后将请求转发

3.控制器进行信息的处理,然后将模型打包(模型中是后台查出来需要展示给前台的信息),并且标示出用于渲染输出的视图名

4.DispatcherServlet在使用视图解析器(控制器不直接传给视图解析器名称,而是通过Servlet,这样是为了使控制器和视图解析器解耦)来匹配特定的视图进行渲染

搭建SpringMVC
一、配置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;
}

}




我们创建的SpittrWebAppInitializer这个类是继承了

AbstractAnnotationConfigDispatcherServletInitializer,任意继承自这个类的类都会自动的配置Dispatcher-Servlet和Spring应用上下文*,但是真正完成配置上下文的是WebApplicationInitializer的类

Spring Web中通常会有两种应用上下文,一种是Spring应用上下文,这种上下文通过DispatcherServlet加载,对应上边的getServletConfigClasses()方法,另一种上下文不是spring的就要通过ContextLoaderListerner创建,对应的是方法getRootConfigClasses()

AbstractAnnotationConfigDispatcherServletInitializer会同时创建DispatcherServlet和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();
}
}


三、编写controller

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";
}
}


四、定义简单的JSP页面

<%@ 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>


运行一下,看一下效果:



成功!!~~That’s All
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐