纯手写springboot实现

pom依赖
<dependencies>
	<!-- Java语言操作tomcat -->
		<dependency>
	      <groupId>org.apache.tomcat.embed</groupId>
	      <artifactId>tomcat-embed-core</artifactId>
	      <version>8.5.28</version>
	   </dependency>
	   <!-- spring-web -->
   <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.0.4.RELEASE</version>
      <scope>compile</scope>
    </dependency> 
	   <!-- spring-mvc -->
   <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.0.4.RELEASE</version>
       <scope>compile</scope>
    </dependency>
	   <!-- tomcat对jsp支持 -->
	<dependency>
	    <groupId>org.apache.tomcat</groupId>
	    <artifactId>tomcat-jasper</artifactId>
	    <version>8.5.28</version>
	</dependency>
	</dependencies>
相关仿写类

SplittrWebAppInitializer

package com.itmayiedu.config;

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

/**
 * 加载springmvc的dispatcherservlet
 * @author yb
 *这个类实现web.xml功能
 */
//AbstractAnnotationConfigDispatcherServletInitializer初始化DispatcherServlet
public class SplittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    //加载根配置信息  spring核心
	@Override
	protected Class<?>[] getRootConfigClasses() {
		return new Class[] {RootConfig.class};
	}
   //springmvc加载配置信息
	@Override
	protected Class<?>[] getServletConfigClasses() {
		return new Class[] {WebConfig.class};
	}
    //springmvc 拦截url映射  "/"表示拦截所有请求
	@Override
	protected String[] getServletMappings() {
		return new String[] {"/"};
	}

}

RootConfig

package com.itmayiedu.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * 根配置
 * @author yb
 *这个类实现spring.xml功能,即spring核心
 */
@Configuration
@ComponentScan("com.itmayiedu")
public class RootConfig {

}

WebConfig

package com.itmayiedu.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.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

/**
 * springmvc配置信息
 * @author yb
 *这个类实现springmvc.xml功能
 */
//WebMvcConfigurerAdapter表示可以配置一些springmvc配置信息
@Configuration//加载配置文件
@EnableWebMvc//开启springmvc功能,如扫包、视图展示器等
@ComponentScan(basePackages = {"com.itmayiedu.controller"})
public class WebConfig extends WebMvcConfigurerAdapter{
   //需要配置视图转换器
	@Bean
	public ViewResolver viewResolver() {
		InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
		viewResolver.setPrefix("/WEB-INF/views/");
		viewResolver.setSuffix(".jsp");
		//可以在jsp页面中通过${}访问beans
		viewResolver.setExposeContextBeansAsAttributes(true);
		return viewResolver;	
	}
}

IndexController

package com.itmayiedu.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.itmayiedu.service.UserService;

@RestController
public class IndexController {
	@Autowired
	private UserService userservice;
	@RequestMapping(value="/index",produces = "text/html;charset=UTF-8")
    public String index() {
    	return userservice.index();
    }
}

UserController

package com.itmayiedu.controller;

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

@Controller
public class UserController {
	@RequestMapping("/pageIndex")
    public String pageIndex() {
    	return "pageIndex";
    }
}

UserService

package com.itmayiedu.service;

import org.springframework.stereotype.Service;

@Service
public class UserService {
    public String index() {
    	return "springBoot 2.0 yb finsh";
    }
}

启动类AppTomcat

package com.itmayiedu;


import java.io.File;

import javax.servlet.ServletException;

import org.apache.catalina.LifecycleException;
import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.startup.Tomcat.FixContextListener;
import org.apache.catalina.webresources.DirResourceSet;
import org.apache.catalina.webresources.StandardRoot;


public class AppTomcat {
	public static void main(String[] args) throws ServletException, LifecycleException {
     //使用Java内置Tomcat运行SpringMVC框架
     //原理:springmvc注解方式启动,就会创建springmvc容器
        //创建tomcat服务器
		Tomcat tomcatServer = new Tomcat();
		//指定端口号
		tomcatServer.setPort(9090);
		//是否设置自动部署  false表示不设置
//		tomcatServer.getHost().setAutoDeploy(false);
		//读取项目路径   加载静态资源
		StandardContext ctx = (StandardContext)tomcatServer.addWebapp("/",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();
		System.out.println("tomcat服务器启动了");
		//异步进行接收请求
		tomcatServer.getServer().await();
	}
}

pgeIdex.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>yb</title>
</head>
<body>
<h1>纯手写springboot框架整合jsp</h1>
</body>
</html>
运行效果
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200424164009418.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MjY2NTAz,size_16,color_FFFFFF,t_70)

在这里插入图片描述

发布了9 篇原创文章 · 获赞 15 · 访问量 251

猜你喜欢

转载自blog.csdn.net/m0_46266503/article/details/105734182
今日推荐