springmvc整合redis_111 SpringBoot整合Servlet JSP Filter Listener

1. SpringBoot介绍

(1) 什么是Spring Boot?

b2b4869ffb1b2d2a40d1cd6a07689a88.png

(2) Spring Boot有哪些特点?

Spring Boot 设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。

嵌入的 Tomcat,无需部署 WAR 文件

Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式。

072b8c3230aff0b223559d6908dd8c86.png

2. 构建SpringBoot项目以及启动器讲解

(1) Spring Boot常见的启动器有哪些?

所谓的SpringBoot启动器其实就是一些jar包的集合。SpringBoot一共提供44启动器。

spring-boot-starter-web 支持全栈式的web开发,包括了tomcat和springMVC等jar

Spring-boot-starter-jdbc 支持spring以jdbc方式操作数据的jar包的集合。

Spring-boot-starter-redis 支持redis键值存储的数据库操作。

(2) Spring Boot的Web启动器的坐标是什么?

   <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

3. 编写HelloWorld

(1) 如何编写Spring Boot启动类?

package com.bjsxt;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
 * SpringBoot 启动类
 * @author MSI-PC
 *
 */
@SpringBootApplication
public class App {

	public static void main(String[] args) {
		SpringApplication.run(App.class, args);
	}
}

(2) 编写Spring Boot启动类时需要注意什么?

启动器存放的位置,启动器可以和controller位于同一个包下,或者位于controller的上一级包中,但是不能放到controller平行的包及子包下。即启动器只能位于Controller所在包及其上级包中。

4. Spring Boot整合Servlet

(1) Spring Boot整合Servlet有几种方式?

通过注解扫描完成Servlet组件的注册

通过方法完成Servlet组件的注册

(2) 各种方式有什么特点?

通过注解扫描完成Servlet组件的注册

Servlet

package com.bjsxt.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * SpringBoot整合Servlet方式一
 * @author MSI-PC
 *
 */
@WebServlet(name="FirstServlet",urlPatterns="/first")
public class FirstServlet extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("FirstServlet.........................");
	}
}

App启动类

package com.bjsxt;

import javax.servlet.annotation.WebServlet;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

/**
 * SpringBoot启动类
 * 整合Servlet方式一:通过注解
 * @author MSI-PC
 *
 */
@SpringBootApplication
@ServletComponentScan	//在SpringBoot启动时,会扫描@WebServlet注解,并将该类实例化
public class App {

	public static void main(String[] args) {
		SpringApplication.run(App.class, args);
	}
}

通过方法完成Servlet组件的注册

Servlet

package com.bjsxt.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * SpringBoot整合Servlet方式二:通过方法
 * @author MSI-PC
 *
 */
public class SecondServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("SecondServlet......................");
	}
}

App启动类

package com.bjsxt;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;

import com.bjsxt.servlet.SecondServlet;

/**
 * SpringBoot整合Servlet方式二:通过方法
 * @author MSI-PC
 *
 */
@SpringBootApplication
public class App2 {

	public static void main(String[] args) {
		SpringApplication.run(App2.class, args);
	}
	
	@Bean
	public ServletRegistrationBean getServletRegistrationBean(){
		ServletRegistrationBean bean = new ServletRegistrationBean<>(new SecondServlet());
		return bean;
	}
}

5. Spring Boot整合Filter

(1) Spring Boot整合Filter有几种方式?

通过注解扫描完成Filter组件的注册

通过方法完成Filter组件的注册

(2) 各种方式有什么特点?

通过注解扫描完成Filter组件的注册

Servlet类

package com.bjsxt.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(name="FirstServlet",urlPatterns="/first")
public class FirstServlet extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("FirstServlet................");
	}
}

Filter类

package com.bjsxt.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
/**
 * SpringBoot整合Filter方式一:注解方式
 * @author MSI-PC
 *
 */
@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..............");
	}

}

App启动类

package com.bjsxt;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

@SpringBootApplication
@ServletComponentScan
public class App {

	public static void main(String[] args) {
		SpringApplication.run(App.class, args);
	}
}

通过方法完成Filter组件的注册

Servlet

package com.bjsxt.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SecondServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("SecondServlet...................");
	}
}

Filter

package com.bjsxt.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class SecondFilter implements Filter {

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
			throws IOException, ServletException {
		System.out.println("进入SecondFilter............");
		arg2.doFilter(arg0, arg1);
		System.out.println("离开SecondFilter................");

	}

}

SpringBoot启动类

package com.bjsxt;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;

import com.bjsxt.filter.SecondFilter;
import com.bjsxt.servlet.SecondServlet;

/**
 * SpringBoot整合Filter方式二:通过方法
 * @author MSI-PC
 *
 */
@SpringBootApplication
public class App2 {

	public static void main(String[] args) {
		SpringApplication.run(App2.class, args);
	}
	
	/**
	 * 注册Servlet
	 * @return
	 */
	@Bean
	public ServletRegistrationBean getServletRegistrationBean() {
		ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
		bean.addUrlMappings("/second");
		return bean;
	}
	/**
	 * 注册Filter
	 * @return
	 */
	@Bean
	public FilterRegistrationBean getFilterRegistrationBean() {
		FilterRegistrationBean bean = new FilterRegistrationBean(new SecondFilter());
		bean.addUrlPatterns("/second");
		return bean;
	}
}

6. springBoot整合Listener

(1) Spring Boot整合Listener有几种方式?

通过注解扫描方式

通过方法的方式

(2) 各种方式有什么特点?

通过注解扫描方式

Listener类

package com.bjsxt.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
/**
 * SpringBoot整合Listener方式一:注解扫描方式
 * @author MSI-PC
 *
 */
@WebListener
public class FirstListener implements ServletContextListener {

	@Override
	public void contextInitialized(ServletContextEvent sce) {
		// TODO Auto-generated method stub
		ServletContextListener.super.contextInitialized(sce);
		System.out.println("Listener..........init..........");
	}
}

SpringBoot启动类

package com.bjsxt;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

@SpringBootApplication
@ServletComponentScan
public class App {

	public static void main(String[] args) {
		SpringApplication.run(App.class, args);
	}
}

通过方法的方式

Listener类

package com.bjsxt.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class SecondListener implements ServletContextListener{

	@Override
	public void contextInitialized(ServletContextEvent sce) {
		// TODO Auto-generated method stub
		ServletContextListener.super.contextInitialized(sce);
		System.out.println("SecondListener............init..........");
	}
}

SpringBoot启动类

package com.bjsxt;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
 * SpringBoot整合Listener方式二:通过方法
 * @author MSI-PC
 *
 */
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;

import com.bjsxt.listener.SecondListener;
@SpringBootApplication
public class App2 {

	public static void main(String[] args) {
		SpringApplication.run(App2.class, args);
	}
	
	@Bean
	public ServletListenerRegistrationBean<SecondListener> getServletListenerRegistrationBean(){
		ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean(new SecondListener());
		return bean;
	}
}

7. Spring Boot访问静态资源

(1) 在Spring Boot中访问静态资源有几种方式?

两种:

SpringBoot从classpath/static的目录

fc2bd4be29e7e613a3ec96796bd613fb.png

ServletContext根目录 src/main/webapp

fd4affe0e8a343815bfa2d9ebc48be2a.png

8. Spring Boot文件上传

(1) 在Spring Boot中如何设置单个上传文件大小?

在resources文件夹下添加application.properties配置文件,并添加

spring.http.multipart.maxFileSize=200MB

1408e4a655fa68132906ccef7dd42d51.png

(2) 在Spring Boot中如何设置一次请求上传文件大小?

在application.properties文件中添加如下配置:

spring.http.multipart.maxRequestSize=200MB

9. Spring Boot整合jsp

(1) 在Spring Boot中整合jsp需要添加哪些坐标?

<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
			<scope>provided</scope>
		</dependency>

10. Spring Boot整合Freemarker

(1) 在Spring Boot中整合Freemarker需要添加哪些坐标?

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-freemarker</artifactId>
		</dependency>

(2) Freemarker视图的扩建名是什么?

.ftl

11. Thymeleaf入门-创建项目

在Spring Boot中整合Thymeleaf需要添加哪些坐标?

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

(2) Thymeleaf视图的扩建名是什么?

.html

(3) Thymeleaf视图要求放到项目的哪个目录下?

Src/main/resources/templates

该目录是安全的。意味着该目录下的内容是不允许外界直接访问的。

12. Thymeleaf入门-Thymeleaf基本使用

(1) Thymeleaf的特点是什么?

Thymeleaf是通过它特定的语法对html的标记做渲染。

(2) 在使用Thymeleaf时页面会出现什么异常?

ea7ca9156d28a52353a96e850b8738ed.png

(2) 解决Thymeleaf中标签匹配的异常有几种方式?

两种

解决异常方式 1

让 html 的标记按照严禁的语法去编写。

d920a26e7dc2a19c593c43f3121dc9de.png

解决异常方式 2

Thymeleaf.jar:更新为 3.0 以上的版本

thymeleaf-layout-dialect.jar:更新为 2.0 以上的版本

更换 thymeleaf 的 jar 包的版本

<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>1.5.10.RELEASE</version>
</parent>
<groupId>com.bjsxt</groupId>
<artifactId>10-spring-boot-view-thymeleaf</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>1.7</java.version>
<thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>2.0.4</thymeleaf-layout-dialect.versi
on>
</properties>
<dependencies>
<!-- springBoot 的启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- springBoot 的启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
</project>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值