SpringBoot入门篇
SpringBoot资料查看方式
-
打开spring官网
-
最下方点击快速开始
-
选择用到的工具
-
查看即可
SpringBoot-HelloWorld
- pom依赖
<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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
</parent>
<groupId>com.x</groupId>
<artifactId>SpringBootHello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
- 控制器
@Controller
public class SpringBootHelloworld {
@RequestMapping("/hello")
@ResponseBody
public Map<String, Object> showHelloWorld(){
Map<String, Object> map = new HashMap<>();
map.put("mag", "helloworld");
return map;
}
}
- SpringBoot启动类
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
- 注意:
启动器存放的位置:启动器可以和controller位于同一级包下,或者位于controller的上一级包中。但是,不能放到controller的平级包及子包下。
SpringBoot整合servlet
- 两种方式:
①通过注解扫描完成servlet组件的注册;
②通过方法完成servlet组件的注册;
第一种方式:通过注解扫描完成servlet组件的注册
第一步:编写servlet:
/**
* SpringBoot整合servlet方式一
*
*<servlet>
* <servlet-name>FirstServlet</servlet-name>
* <servlet-class>com.x.servlet.FirstServlet</servlet-class>
*</servlet>
*<servlet-mapping>
* <servlet-name>FirstServlet</servlet-name>
* <url-pattern>/first</url-pattern>
*</servlet-mapping>
*/
@WebServlet(name="FirstServlet",urlPatterns="/first")
public class FirstServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("servlet启动");
}
}
第二步:编写启动器类
@SpringBootApplication
@ServletComponentScan //在springboot启动时会扫描@WebServlet注解,并将该类实例化
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
第二种方式:通过方法完成servlet组件的注册
第一步:编写servlet
public class SecondServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("secondservlet");
}
}
第二步:编写启动器类
@SpringBootApplication
public class App2 {
public static void main(String[] args) {
SpringApplication.run(App2.class, args);
}
/**
* 注册servlet
*/
@Bean
public ServletRegistrationBean getServletRegistrationBean() {
ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
bean.addUrlMappings("/second");
return bean;
}
}
SpringBoot整合filter
- 两种方法:
①通过注解完成filter组件注册;
②通过方法完成filter组件注册;
第一种:通过注解完成filter组件注册
- 第一步:编写servlet
@WebServlet(name="FirstServlet",urlPatterns="/first")
public class FirstServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("servlet启动");
}
- 第二步:编写filter
/**
* springboot整合filter方式一:
*
* <filter>
* <filter-name>FirstFilter</filter-name>
* <filter-class>com.x.filter.FirstFilter</filter-class>
* </filter>
*
* <filter-mapping>
* <filter-name>FirstFilter</filter-name>
* <url-pattern>/first</url-pattern>
* </filter-mapping>
*
*/
//@WebFilter(filterName="FirstFilter",urlPatterns= {"*.do","*.jsp"})
@WebFilter(filterName="FirstFilter",urlPatterns= "/first")
public class FirstFilter implements Filter {
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
System.out.println("进入filter");
arg2.doFilter(arg0, arg1);
System.out.println("离开filter");
}
}
- 第三步:编写启动器类
@SpringBootApplication
@ServletComponentScan
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
第二种:通过方法完成filter组件注册
第一步:编写Servlet
public class SecondServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("secondservlet");
}
}
第二步:编写Filter
public class SecondFilter implements Filter {
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
System.out.println("进入filter");
arg2.doFilter(arg0, arg1);
System.out.println("离开filter");
}
}
第三步:编写启动器类
@SpringBootApplication
public class App2 {
public static void main(String[] args) {
SpringApplication.run(App2.class, args);
}
/**
* 注册Servlet
*/
@Bean
public ServletRegistrationBean getServletRegistrationBean() {
ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
bean.addUrlMappings("/second");
return bean;
}
/**
* 注册Filter
*/
@Bean
public FilterRegistrationBean getFilterRegistrationBean() {
FilterRegistrationBean bean = new FilterRegistrationBean(new SecondFilter());
//bean.addUrlPatterns(new String[] {"*.do","*.jsp"});
bean.addUrlPatterns("/second");
return bean;
}
}
SpringBoot整合Listener
- 两种方式:
①通过注解注册Listener;
②通过方法注册Listener;
- 第一种:通过注解注册Listener。
第一步:编写Listener类
/**
* <listener>
* <listener-class>com.x.Listener.FirstListener</listener-class>
* </listener>
*/
@WebListener
public class FirstListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("Listener...init......");
}
}
第二步:编写启动器类
@SpringBootApplication
@ServletComponentScan
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
- 第二种:通过方法注册Listener。
第一步:编写Listener
public class SecondListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("SecondListener...init......");
}
}
第二步:编写启动器类:
@SpringBootApplication
public class App2 {
public static void main(String[] args) {
SpringApplication.run(App2.class, args);
}
/**
* 注册Listener
*/
@Bean
public ServletListenerRegistrationBean<SecondListener> getServletListenerRegistrationBean(){
ServletListenerRegistrationBean<SecondListener> bean = new ServletListenerRegistrationBean<SecondListener>(new SecondListener());
return bean;
}
}
SpringBoot访问静态资源
- 默认位置:
①SpringBoot从classpath/static的目录找;
②ServletContext根目录找;
SpringBoot从classpath/static
:
- 第一步:在
src/main/resources
目录下新建static
目录。 - 第二步:在
static
目录下新建images
目录,放置图片。 - 第三步:编写启动器类,访问即可
http:localhost:8080/images/a.jpg
。
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
ServletContext根目录:
- 第一步:在
src/main
下新建webapp
目录。 - 第二步:将静态资源放在该目录下。
- 第三步:编写启动器类。
SpringBoot文件上传
- 编写页面
<body>
<form action="/fileupload" method="post" enctype="multipart/form-data">
上传文件:<input type="file" name="filename">
<input type="submit" value="提交">
</form>
</body>
- 编写控制器
@RestController
:–对该类下所有方法的返回值做json格式转换,可以看做@Controller和@ResponseBody的复合体
@RestController
public class FileuploadController {
@RequestMapping("/fileupload")
public Map<String, Object> fileupload(MultipartFile filename) throws Exception, IOException{
System.out.println(filename.getOriginalFilename());
filename.transferTo(new File("E:/"+filename.getOriginalFilename()));
Map<String, Object> map = new HashMap<>();
map.put("msg", "ok");
return map;
}
}
- 在classpath根目录下编写配置文件
在src/main/resources/application.properties
,名称是默认,不可以包含在任何一个目录中。
maxFileSize:单个文件大小限制。
maxRequestSize:总文件上传大小限制。
注意:单位需要写全称。
spring.http.multipart.maxFileSize=200MB
spring.http.multipart.maxRequestSize=200MB
- 编写启动器类
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}