内置tomcat整合springMVC

2021-03-06 20:27

阅读:966

标签:start   ack   list   str   控制   art   json   上下文   source   

     spring MVC是一个基于MVC模式的表现层框架,在spring2.5以后增加了注解功能。使得开发变得更加高效、快捷。由于spring MVC是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合,可以达到无缝整合。

     springMVC的特点有:

    1、基于的是servlet/jsp模式

              2、控制器不再需要继承其它类,只需要用@Controller注解

      3、应用控制器方法参数,由前端控制器负责封装,方法签名定义灵活。

      4、返回页面直接在方法中指定,可以是String,也可以是其它的,比如:ModelAndView或void等

      5、性能优秀

      下面来看一下,内置tomcat中,如何整合springMVC。

      首先,创建maven项目,导入springMVC相关的依赖。

               由于springMVC是spring的一个模块,所以spring的依赖也需要导入:

org.springframework
    spring-context
    5.2.7.RELEASEorg.springframework
    spring-webmvc
    5.2.7.RELEASE

       当然,内置tomcat也需要导入    

org.apache.tomcat.embed
     tomcat-embed-core
     9.0.36

       另外,为了方便处理json,还需要导入jackson

com.fasterxml.jackson.core
   jackson-databind
   2.11.0com.fasterxml.jackson.module
   jackson-module-parameter-names
   2.11.0com.fasterxml.jackson.datatype
   jackson-datatype-jdk8
   2.11.0com.fasterxml.jackson.datatype
    jackson-datatype-jsr310
    2.11.0  

           第二步,需要编写配置类,完成spring和springMVC相关的配置

@Configuration //申明该类为配置类
@ComponentScan(basePackageClasses = WebApplicationConfig.class)//扫描指定类所在包及子包中的spring组件
@EnableWebMvc //提供mvc支持
public class WebApplicationConfig implements WebMvcConfigurer {

    //设置响应信息编码集
    @Override
    public void extendMessageConverters(
            List> converters) {
        StringHttpMessageConverter stringHttpMessageConverter =
                (StringHttpMessageConverter) converters.get(1);
        stringHttpMessageConverter.setDefaultCharset(
                Charset.forName("utf-8"));
    }

    //提供静态资源的支持
    @Override
    public void addResourceHandlers(
            ResourceHandlerRegistry registry) {
        //客户端以/html/开始的请求,访问类路径下static/html
        registry.addResourceHandler("/html/**").
                addResourceLocations("classpath:/static/html/");
    }
}

        从这里可以看出,响应信息编码集为utf-8,解决了响应信息乱码问题。客户端所访问的静态文件,比如:html、css、js、图片等放在类路径下。由于创建的是maven项目,所以,可以在resources目录下创建static/html,用于放置静态资源。

     

         第三步,编写启动类,在启动类中注册springMVC的前端控制器。

package com.project;

public class MainServer {
    public MainServer(){
        Tomcat tomcat = new Tomcat();//创建tomcat对象
        tomcat.setPort(8088); //设置端口
        tomcat.getConnector();
        
        //创建web容器上下文
        Context context = tomcat.addContext("", null);
        try {
            //注册前端控制器
            DispatcherServlet dispatcherServlet = new DispatcherServlet(
                    this.createApplicationContext(context.getServletContext()));
            Wrapper servlet = tomcat.addServlet(context, "dispatcherServlet", dispatcherServlet);
            servlet.setLoadOnStartup(1);
            servlet.addMapping("/*"); 

            tomcat.start();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 创建spring容器的应用上下文对象
     * @param servletContext WEB容器上下文对象
     * @return spring容器应用上下文对象
     */
    public  WebApplicationContext createApplicationContext(
            ServletContext servletContext) {
        AnnotationConfigWebApplicationContext ctx
                = new AnnotationConfigWebApplicationContext();
        ctx.register(WebApplicationConfig.class); //加载配置类

        ctx.setServletContext(servletContext);
        ctx.refresh();
        ctx.registerShutdownHook();
        return ctx;
    }

    public static void main(String[] args) {
        new MainServer();
    }
}

  好了,springMVC已经注册进内置tomcat。

 

       第四步:书写应用控制器处理客户端请求,产生响应:

package com.project.conrtroller;

@Controller
public class TestController {
    @RequestMapping("/test")
    public String testRequest(String name){
        System.out.println("执行应用控制器方法,参数name为"+name);
       //重定向到指定页面
        return "redirect:/html/info.html";
    }
}

  注意,应用控制器所在的包,必须是配置类扫描包,或子包。比如,在上面配置类中的扫描定义为

@ComponentScan(basePackageClasses = WebApplicationConfig.class)//扫描指定类所在包及子包中的spring组件
public class WebApplicationConfig implements WebMvcConfigurer {
……
}

  那么,应用控制器必须是配置类WebApplicationConfig所在包,及子包中的类。

        在resources目录下,创建static/html。然后,在该目录下,新建info.html,书写文本:“info.html”

 

  第五步,测试

  运行启动类,打开浏览器,输入:http://localhost:8088/test?name=tom。就可以看到info.html中的内容。并且,在服务器控制台上,有"执行应用控制器方法,参数name为tom"文字输出。

 

 

       

 

内置tomcat整合springMVC

标签:start   ack   list   str   控制   art   json   上下文   source   

原文地址:https://www.cnblogs.com/lovozcf/p/14289531.html


评论


亲,登录后才可以留言!