springboot之tomcat创建

1、依赖(注意版本,有些版本有问题我用9.0.16和5.1.5不行之后改的)

    <!-- java语言操作tomcat -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
            <version>8.5.16</version>
        </dependency>
    <!--     <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-el</artifactId>
            <version>8.5.16</version>
        </dependency> -->
        <!-- java语言对jsp的支持 -->
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jasper</artifactId>
            <version>8.5.16</version>
        </dependency>
        
         <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
          <version>5.0.4.RELEASE</version>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>5.0.4.RELEASE</version>
          <scope>compile</scope>
        </dependency>

2、servlet启动demo

/**
 * 使用java语言创建tomcat服务器
 * tomcat 底层执行程序  最终servlet
 * springmvc 底层使用servlet封装
 */
public class TomcatApp {

    private static int PORT = 8887;
    private static String CONTEX_PATH = "/sirius";
    private static String SERVLET_NAME = "indexServlet";
    
    public static void main(String[] args) throws Throwable {
        //创建tomcat服务器
        Tomcat tomcat = new Tomcat();
        //设置端口号
        tomcat.setPort(PORT);
        //是否设置自动部署
        tomcat.getHost().setAutoDeploy(false);
        //创建上下文
        StandardContext standardContext = new StandardContext();
        standardContext.setPath(CONTEX_PATH);
        //监听上下文
        standardContext.addLifecycleListener(new Tomcat.FixContextListener());
        //tomcat容器添加standardContext
        tomcat.getHost().addChild(standardContext);
        //创建servlet
        tomcat.addServlet(CONTEX_PATH, SERVLET_NAME, new IndexServlet());
        //servleturl映射
        standardContext.addServletMappingDecoded("/index", SERVLET_NAME);
        tomcat.start();
        System.out.println("tomcat服务器启动成功");
        //异步进行接收请求
        tomcat.getServer().await();
    }
}

3、springboot启动类

public class AppTomcat {

    public static void main(String[] args) throws Throwable {
        // 使用Java内置Tomcat运行SpringMVC框架 原理:tomcat加载到
        // springmvc注解启动方式,就会创建springmvc容器
        start();
    }

    private static void start() throws Throwable {
         // 创建Tomcat容器
          Tomcat tomcatServer = new Tomcat();
          // 端口号设置
          tomcatServer.setPort(9090);
          // 读取项目路径 加载静态资源
          StandardContext ctx = (StandardContext) tomcatServer.addWebapp("/sirius", new File("src/main").getAbsolutePath());
          // 禁止重新载入
          ctx.setReloadable(false);
          // class文件读取地址
          File additionWebInfClasses = new File("target/classes");
          // 创建WebRoot
          WebResourceRoot resources = new StandardRoot(ctx);
          // tomcat内部读取Class执行
          resources.addPreResources(
                new DirResourceSet(resources, "/WEB-INF/classes", additionWebInfClasses.getAbsolutePath(), "/"));
          tomcatServer.start();
          // 异步等待请求执行
          tomcatServer.getServer().await();
    }
}

/**
 * 根配置
 * @author EDZ
 */
@Configuration
@ComponentScan("com.sirius.springboot")
public class RootConfig {

}

/**
 * springmvc 配置信息
 * @author EDZ
 */
@Configuration //加载配置文件
@EnableWebMvc //开启springmvc功能(扫包、视图转换器......)
@ComponentScan(basePackages = {"com.sirius.springboot.controller"})
public class WebConfig extends WebMvcConfigurerAdapter{

    //需要配置视图转换器
    @Bean
    public ViewResolver viewResolver(){
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        resolver.setExposeContextBeansAsAttributes(true);//可以在页面通过${}访问beans
        return resolver;
    }
}

public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{

    /**
     * 加载根配置信息 spring核心
     */
    protected Class[] getRootConfigClasses() {
        return new Class[]{RootConfig.class};
    }

    /**
     * springmvc加载配置信息
     */
    protected Class[] getServletConfigClasses() {
        return new Class[]{WebConfig.class};
    }

    /**
     * springmvc拦截url映射 拦截所有请求
     */
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

}

@RestController
public class IndexController {

    @RequestMapping(value = "/index", produces = "text/html;charset=UTF-8")
    public String test(){
        return "index纯手写springboot";
    }
}

@Controller
public class UserController {

    @RequestMapping(value = "/pageIndex")
    public String test(){
        return "pageIndex";
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值