二 SpringBoot整合web开发

一 springBoot整合servlet

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>
	<!-- 必须继承 -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.3.RELEASE</version>
	</parent>
	<groupId>com.bjsxt</groupId>
	<artifactId>02-spring-boot-servlet</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<!-- 修改jdk版本 -->
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<!-- springBoot的启动器 -->
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	</dependencies>
</project>

1 整合方式一:通过注解扫描Servlet组件的注册

1.1 在eclipse中创建springBoot的maven项目

1.2 编写servlet

/**
 * SpringBoot整合Servlet方式一
 * 
 * <servlet>
 * 	<servlet-name>FirstServlet</servlet-name>
 * 	<servlet-class>com.bjsxt.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 {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

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

1.3 编写启动类

/**
 * SpringBoot整合servlet方式一
 * 
 */
@SpringBootApplication
@ServletComponentScan // 在springBoot启动时会扫描@WebServlet,并将该类实例化
public class App {
	public static void main(String[] args) {
		SpringApplication.run(App.class, args);
	}
}

1.4 启动测试

在浏览器中输入http://localhost:8080/first,会看见在后台控制台中打印信息

2 整合方式二:通过方法完成Servlet组件的注册

1.1 编写servlet

/**
 * SpringBoot整合Servlet方式二
 * 
 */
public class SecondServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

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

1.2 编写启动类

/**
 * SpringBoot整合servlet方式二
 */
@SpringBootApplication
public class App2 {
	public static void main(String[] args) {
		SpringApplication.run(App2.class, args);
	}
	
	@Bean
	public ServletRegistrationBean<SecondServlet> getServletRegistrationBean() {
		ServletRegistrationBean<SecondServlet> bean = new ServletRegistrationBean<>(new SecondServlet());
		bean.addUrlMappings("/second");
		return bean;
	}
}

1.3 启动测试

在浏览器中输入http://localhost:8080/second,会看见在后台控制台中打印信息

二 springBoot整合filter

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>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.3.RELEASE</version>
	</parent>
	<groupId>com.bjsxt</groupId>
	<artifactId>03-spring-boot-filter</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>

1 整合方式一:通过注解扫描完成Filter组件的注册

1.1 在eclipse中创建springBoot的maven项目:03-spring-boot-filter

1.2 编写Filter

/**
 * springBoot整合Filter方式一
 * <filter>
 * 	<filter-name>FirstFilter</filter-name>
 * 	<filter-class>com.bjsxt.filterFirstFilter</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");
	}
}

1.3 编写servlet

/**
 * SpringBoot整合Servlet方式一
 * 
 * <servlet>
 * 	<servlet-name>FirstServlet</servlet-name>
 * 	<servlet-class>com.bjsxt.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 {
	private static final long serialVersionUID = 1L;
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("First Servlet");
	}
}

1.4 编写启动类

/**
 * SpringBoot整合Filter方式一
 */
@SpringBootApplication
@ServletComponentScan
public class App {
	public static void main(String[] args) {
		SpringApplication.run(App.class, args);
	}
}

1.5 启动测试

启动并在浏览器中输入http://localhost:8080/first,在后台控制台中可以看到输出

2 整合方式二:通过方法完成Filter组件注册

1.1 编写Filter

/**
 * springBoot整合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");
	}
}

1.2 编写servlet

/**
 * SpringBoot整合Servlet方式二
 */
public class SecondServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("Second Servlet");
	}
}

1.3 编写启动类

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方式一
 */
@SpringBootApplication
public class App2 {

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

	/**
	 * 注册servlet
	 * 
	 * @return
	 */
	@Bean
	public ServletRegistrationBean<SecondServlet> getServletRegistrationBean() {
		ServletRegistrationBean<SecondServlet> bean = new ServletRegistrationBean<>(new SecondServlet());
		bean.addUrlMappings("/second");
		return bean;
	}

	/**
	 * 注册filter
	 * 
	 * @return
	 */
	@Bean
	public FilterRegistrationBean<SecondFilter> getFilterRegistrationBean() {
		FilterRegistrationBean<SecondFilter> bean = new FilterRegistrationBean<>(new SecondFilter());
		// bean.addUrlPatterns(new String[]{"*.do", "*.jsp"});
		bean.addUrlPatterns("/second");
		return bean;
	}
}

1.4 启动测试

启动并在浏览器中输入http://localhost:8080/second,会在后台控制台中看见输出信息

三 springBoot整合Listener

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>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.3.RELEASE</version>
	</parent>
	<groupId>com.bjsxt</groupId>
	<artifactId>04-spring-boot-listener</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>

1 整合方式一:通过注解扫描完成Listener组件的注册

1.1 在eclipse中创建springBoot的maven项目:04-spring-boot-listener

1.2 编写Listener

/**
 * Spring整合Listener
 * <listener>
 * 	<listener-class>com.bjsxt.listener.FirstListener<listener-class>
 * </listener>
 */
@WebListener
public class FirstListener implements ServletContextListener {

	@Override
	public void contextInitialized(ServletContextEvent sce) {
		System.out.println("first listener...init...");
	}
}

1.3 编写启动类

/**
 * springBoot整合Listener方式一
 *
 */
@SpringBootApplication
@ServletComponentScan
public class App {
	public static void main(String[] args) {
		SpringApplication.run(App.class, args);
	}
}

1.4 启动测试

2 整合方式二:通过方法完成Filter组件注册

1.1 编写Listener

/**
 * springBoot整合Listener方式二
 */
public class SecondListener implements ServletContextListener {
	@Override
	public void contextInitialized(ServletContextEvent sce) {
		System.out.println("second listener...init...");
	}
}

1.2 编写启动类

/**
 * springBoot整合Listener方式二
 */
@SpringBootApplication
public class App2 {
	public static void main(String[] args) {
		SpringApplication.run(App2.class, args);
	}
	@Bean
	public ServletListenerRegistrationBean<SecondListener> getServletListenerRegistrationBean() {
		ServletListenerRegistrationBean<SecondListener> bean = new ServletListenerRegistrationBean<>(new SecondListener());
		return bean;
	}
}

1.3 启动测试

四 springBoot访问静态资源

1  SpringBoot从classpath/static的目录

1.1 编写启动类

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

1.2 index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>静态资源访问一</title>
</head>
<body>
静态资源访问一<br/>
<img alt="" src="images/Tulips.jpg">
</body>
</html>

1.2 启动项目

2 ServletContext根目录下

名称必须要叫webapp,其他同上

五 springBoot文件上传

1 upload.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
	<form action="fileUploadController" method="post" enctype="multipart/form-data">
		上传文件:
		<input type="file" name="filename" /><br/>
		<input type="submit" />
	</form>
</body>
</html>

2 编写controller

/**
 * SpringBoot文件上传
 */
@RestController // 表示改对象的方法的返回值会自动的做json格式的转换
public class FileUploadController {

	/**
	 * 处理文件上传
	 * @throws IOException 
	 * @throws IllegalStateException 
	 */
	@RequestMapping("/fileUploadController")
	public Map<String, Object> fileUpload(MultipartFile filename) throws IllegalStateException, 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;
	}
}

3 编写启动类

@SpringBootApplication
public class App {

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

}

4 启动测试

5 注意事项

默认情况下文件上传大小为10485760,当上传文件大于10485760时,后台就会异常

org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (282533691) exceeds the configured maximum (10485760)
	at org.apache.tomcat.util.http.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:808) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
	at org.apache.tomcat.util.http.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:256) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
	at org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:280) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
	at org.apache.catalina.connector.Request.parseParts(Request.java:2846) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
	at org.apache.catalina.connector.Request.parseParameters(Request.java:3185) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
	at org.apache.catalina.connector.Request.getParameter(Request.java:1116) ~[tomcat-embed-core-9.0.16.jar:9.0.16]

此时,需要配置上传文件大小的默认值,添加application.properties文件,具体位置如上截图所示

spring.servlet.multipart.maxFileSize=400MB
spring.servlet.multipart.maxRequestSize=400MB

spring.servlet.multipart.maxFileSize:设置单个上传文件的大小;

spring.servlet.multipart.maxRequestSize=400MB:设置一次请求上传文件的总大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值