Spring Boot入门(二)Servlet、Filter、Listener、访问静态资源、文件上传

Spring Boot入门(二)

一.整合 Servlet

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

/**
*SpringBoot 整合 Servlet 
* 也可以通过xml配置,如下
*<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 {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	// TODO Auto-generated method stub
		super.doGet(req, resp); 
	}
} 

1.2 编写启动类

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

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

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

2.2 编写启动类

/**
* SpringBoot 整合 Servlet 方式二 *
*
*/
@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());
		bean.addUrlMappings("/second");
		return bean;
	}

} 

二,整合 Filter

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

1.1 编写 Filter

/**
*SpringBoot 整合 Filter 方式一
*<filter>
* <filter-name>FirstFilter</filter-name>
* <filter-class>com.bjsxt.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 destroy() {
        // TODO Auto-generated method stub
    }

    @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");
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub
    }
}

1.2 编写启动类

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

2,通过方法完成 Filter 组件的注册
2.1 编写 Filter

/** *
*SpringBoot 整合 Filter 方式二 *
*/
public class SecondFilter implements Filter {
    @Override
    public void destroy() {
        // TODO Auto-generated method stub
    }

    @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");
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub
    }
}

2.2 编写启动类

/**
* SpringBoot 整合 Filter 方式二 *
*
*/
@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 */
    @Bean
    public FilterRegistrationBean getFilterRegistrationBean() {
        FilterRegistrationBean bean = new FilterRegistrationBean(new SecondFilter());
        //bean.addUrlPatterns(new String[]{"*.do","*.jsp"});
        bean.addUrlPatterns("/second");

        return bean;
    }
}

三,整合 Listener

1,通过注解扫描完成 Listener 组件的注册
1.1 编写 Listener

/**
* springBoot 整合 Listener
*
*<listener>
* <listener-class>com.bjsxt.listener.FirstListener</listener-class> *</listener>
*/
@WebListener
public class FirstListener implements ServletContextListener {
    @Override
    public void contextDestroyed(ServletContextEvent arg0) { // TODO Auto-generated method stub
    }

    @Override
    public void contextInitialized(ServletContextEvent arg0) {
        System.out.println("Listener...init......");
    }
}

1.2 编写启动类

/**
* springBoot 整合 Listener 方式一 *

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

2 通过方法完成 Listener 组件注册
2.1 编写 Listener

/**
* springBoot 整合 Listener 方式二。 *
*
*/
public class SecondListener implements ServletContextListener {
    @Override
    public void contextDestroyed(ServletContextEvent arg0) { // TODO Auto-generated method stub
    }

    @Override
    public void contextInitialized(ServletContextEvent arg0) {
        System.out.println("SecondListener..init.....");
    }
}

2.2 编写启动类

/**
* SpringBoot 整合 Listener 方式二
*
*/
@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;
    }
}

四,访问静态资源

  1. SpringBoot 从 classpath/static 的目录
    注意目录名称必须是 static
  2. ServletContext 根目录下
    在 src/main/webapp 目录名称必须要 webapp

五,文件上传

/**
* SpringBoot 文件上传 *
*
*/

//@Controller
@RestController //表示该类下的方法的返回值会自动做 json 格式的转换

public class FileUploadController {
/**
* 处理文件上传 
*/
	@RequestMapping("/fileUploadController")
	public Map<String, Object> fileUpload(MultipartFile filename)throws Exception{
		System.out.println(filename.getOriginalFilename());
		filename.transferTo(new File("e:/"+filename.getOriginalFilename()));
		Map<String, Object> map = new HashMap<>(); map.put("msg", "ok");
		return map;
	}
}
  1. 编写启动类
/**
* SpringBoot 文件上传 *
*
*/
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

设置单个上传文件的大小
spring.http.multipart.maxFileSize=200MB
设置一次请求上传文件的总容量 spring.http.multipart.maxRequestSize=200MB
上一篇 Spring Boot入门(一)从HelloWorld开始
下一篇 Spring Boot入门(三)视图层技术

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老徐··

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值