SpringBoot项目整合的Web技术:
Servlet
Linstener
Filter
忘了里面的使用过程和重难点。javaee项目实战遇见的问题,用了这三个技术解决。是根源!整个过完一遍项目后回顾。
一个简单的springboot项目
package com.bjsxt.springbootweb2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan
public class Springbootweb2Application {
public static void main(String[] args) {
SpringApplication.run(Springbootweb2Application.class, args);
//System.exit(0);
}
}
application.properties
server.port=8089
整合Servlet
package com.bjsxt.springbootweb2.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* /firstServlet
* firstServlet
* firstServlet
* FirstServlet.class
* service
*/
@WebServlet(name = "firstServlet",urlPatterns = "/firstServlet")
public class FirstServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
writer.write("firstServlet\n");
writer.write("firstServlet\n");
writer.write("firstServlet");
writer.flush();
}
}
运行结果:
整合Filter
代码:
package com.bjsxt.springbootweb2.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
import java.io.PrintWriter;
@WebFilter(urlPatterns = "/firstServlet")
public class FirstFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("filter init");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
filterChain.doFilter(servletRequest,servletResponse);
PrintWriter writer = servletResponse.getWriter();
writer.write("\nfirstFilter");
writer.flush();
}
@Override
public void destroy() {
System.out.println("filter destroy");
}
}
运行结果:
在一个service方法后面增加了数据
整合Listener
代码:
package com.bjsxt.springbootweb2.listener;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class FirstListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContext already init");
ServletContext servletContext = sce.getServletContext();
System.out.println(servletContext);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContext already destroyed");
ServletContext servletContext = sce.getServletContext();
System.out.println(servletContext);
}
}
运行结果:
启动类中的启动方法增加一句
System.exit(0);
运行结果:
总结:
web技术使用,需要在springboot的启动类上面增加一个@ServletComponentScan,扫描有@WebFilter,@WebServlet,@WebListener注解的类并且初始化!过滤器和Servlet类前面的注解里需要增加浏览器输入的uri参数,指明处理的是哪一个请求!