五、 Spring Boot 整合 Web 层技术
1 整合 Servlet 方式一
1.1通过注解扫描完成 Servlet 组件的注册
1.1.1创建 Servlet
/*** 整合 Servlet 方式一 */
@WebServlet(name = "FirstServlet", urlPatterns = "/first")
public class FirstServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) {
System.out.println("First Servlet........");
}
}
1.1.2修改启动类
@SpringBootApplication
@ServletComponentScan
//在 spring Boot 启动时会扫描@WebServlet 注解,并将该类实例化
public class SpringbootwebApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootwebApplication.class, args);
}
}
2 整合 Servlet 方式二
2.1通过方法完成 Servlet 组件的注册
2.1.1创建 Servlet
/*** 整合 Servlet 方式二 */
public class SecondServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) {
System.out.println("Second Servlet........");
}
}
2.1.2创建 Servlet 配置类
/*** Servlet 配置类
*/
@Configuration
public class ServletConfig {
/*** 完成 Servlet 组件的注册 */
@Bean
public ServletRegistrationBean getServletRegistrationBean() {
ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
bean.addUrlMappings("/second");
return bean;
}
}
3 整合 Filter 方式一
3.1通过注解扫描完成 Filter 组件注册
3.1.1创建 Filter
/*** 整合 Filter 方式一 */
//@WebFilter(filterName = "FirstFilter",urlPatterns = {"*.do","*.jsp"}) @WebFilter(filterName = "FirstFilter",urlPatterns = "/first") public class FirstFilter implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { }@Override public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain
filterChain)throws IOException,ServletException
{
System.out.println("进入 First Filter");
filterChain.doFilter(servletRequest, servletResponse);
System.out.println("离开 First Filter");
}
@Override
public void destroy() {
}
}
3.1.2修改启动类
@SpringBootApplication
@ServletComponentScan
//在 spring Boot 启动时会扫描 @WebServlet,@WebFilter 注解,并将该类实例化
public class SpringbootwebApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootwebApplication.class, args);
}
}
4 整合 Filter 方式二
4.1通过方法完成 Filter 组件注册
4.1.1创建 Filter
/**
* 整合 Filter 方式二
*/
public class SecondFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("进入 Second Filter");
filterChain.doFilter(servletRequest, servletResponse);
System.out.println("离开 Second Filter");
}
@Override
public void destroy() {
}
}
4.1.2创建 Filter 配置类
/*** Filter 配置类 */
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean getFilterRegistrationBean() {
FilterRegistrationBean bean = new FilterRegistrationBean(new SecondFilter());
// bean.addUrlPatterns(new String[]{"*.do","*.jsp"});
bean.addUrlPatterns("/second");
return bean;
}
}
5 整合 Listener 方式一
5.1通过注解扫描完成 Listener 组件注册
5.1.1编写 Listener
/*** 整合 Listener */
@WebListener
public class FirstListener implements ServletContextListener {
public void contextDestroyed(ServletContextEvent event) {
}
public void contextInitialized(ServletContextEvent event) {
System.out.println("Listener ...Init......");
}
}
5.1.2修改启动类
@SpringBootApplication @ServletComponentScan/*在 spring Boot 启动时会扫描
@WebServlet,@WebFilter,@WebListener 注解,并将该类实例化*/
public class SpringbootwebApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootwebApplication.class, args);
}
}
6 整合 Listener 方式二
6.1通过方法完成 Listener 组件注册
6.1.1编写 Listener
/*** 整合 Listener 方式二 */
public class SecondListener implements ServletContextListener {
public void contextDestroyed(ServletContextEvent event) {
}
public void contextInitialized(ServletContextEvent event) {
System.out.println("Second....Listener ...Init......");
}
}
6.1.2创建 Listener 配置类
/**
* Listener 配置类
*/
@Configuration
public class ListenerConfig {
@Bean
public ServletListenerRegistrationBean getServletListenerRegistrationBean() {
ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean(new SecondListener());
return bean;
}
}
六、 Spring Boot 访问静态资源
在 SpringBoot 项目中没有我们之前常规 web 开发的 WebContent(WebApp),它只有 src 目录。在 src/main/resources 下面有两个文件夹,static 和 templates。SpringBoot 默认在 static 目录中存放静态页面,而 templates 中放动态页面。
1 static 目录
Spring Boot 通过 classpath/static 目录访问静态资源。注意存放静态资源的目录名称必须 是 static。
2 templates 目录
在 Spring Boot 中不推荐使用 jsp 作为视图层技术,而是默认使用 Thymeleaf 来做动态页 面。Templates 目录这是存放 Thymeleaf 的页面。
3 静态资源存放其他位置
3.1Spring Boot 访问静态资源的位置
classpath:/META‐INF/resources/
classpath:/resources/
classpath:/static/
classpath:/public/
3.2自定义静态资源位置
#配置静态资源访问路径
spring.resources.static-locations=classpath:/suibian/,cla sspath:/static/