版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36594703/article/details/81333391
1.springboot是一个快速整合第三方常用开发框架,简化XML,完全采用注解化,内置HTTP服务器,最终以java程序运行。
2.重点三部分:快速整合第三方框架、完全无配置文件(注解方式)、内置http服务器。
(1)快速整合第三方框架,原理maven子父依赖关系,相当于需要整合的环境的jar封装好依赖信息
(2)完全无配置文件(采用注解化)
如何初始化?没有web.xml那么tomcat如何启动的?注解在什么时候产生?spring3.0以上(提供注解)springmvc内置注解加载整个springmvc容器。使用java代码编写springmvc配置初始化,传统web项目,通过什么配置文件加载整个项目流程 web.xml----class文件。
(3)内置http服务器:java语言创建tomcat容器,使用类加载器加载class文件。
pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.e3mall</groupId>
<artifactId>springboot-tomcat</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>8.5.28</version>
</dependency>
<!-- Tomcat对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>
</dependencies>
</project>
一些配置文件加载springmvc----dispatcherServlet:
//加载springmvc---dispatcherServlet
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[] {"/"};//拦截所有请求
}
}
WebConfig这个配置文件是springboot整合jsp配置视图解析器的。
@EnableWebMvc
@Configuration
@ComponentScan(basePackages= {"com.itmayiedu.controller"})
public class WebConfig extends WebMvcConfigurerAdapter{
//需要配置视图解析器
//springboot整合jsp最好是war包
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver=new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/jsp/");
viewResolver.setSuffix(".jsp");
//可以在jsp页面通过${}访问beans
viewResolver.setExposeContextBeansAsAttributes(true);
return viewResolver;
}
}
根配置其实主要是扫描注解:
//根配置
@Configuration
@ComponentScan("com.itmayiedu")
public class RootConfig {
}
Controller层IndexController:
@RestController
public class IndexController {
@Autowired
private UserService userService;
@RequestMapping(value="/index",produces="text/html;charset=UTF-8")
public String index() {
return userService.index();
}
}
Service层UserService:
@Service
public class UserService {
public String index() {
return "我正在雪springboot2.0";
}
}
还有一个转发视图的controller这个是整合的jsp即UserController:
@Controller
public class UserController {
@RequestMapping("/pageIndex")
public String pageIndex() {
return "pageIndex";
}
}
启动类,使用java语言写了一个tomcat容器:
public class AppTomcat {
public static void main(String[] args) throws ServletException, LifecycleException {
//使用java内置tomcat运行springMVC框架
//原理:tomcat加载到springmvc注解启动方式,就会创建springmvc容器
start();
}
public static void start() throws ServletException, LifecycleException {
//创建Tomcat服务器
//创建Tomcat服务器
Tomcat tomcatServer=new Tomcat();
//指定端口号
tomcatServer.setPort(9090);
//读取项目路径
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();
//异步等待请求执行
tomcatServer.getServer().await();
}
}