快有两周没有在CSDN上正儿八经的写博客了,既然已经找到了工作,之后我会写一写关于工作时框架方面的学习知识。
SpringBoot整合Servlet
首先在Idea中通过Spring Initializr的方式快速创建一个关于SpringBoot的应用(这个方式默认是需要联网的)。
在学习JavaWeb中我们可以知道,Servlet其实就是一种服务器端开辟一个工作线程开处理客户端发过来的请求的过程,当我们使用SpringBoot来处理
方式一:通过继承HttpServlet重写doGet()的方式实现对请求的处理
步骤一:新建一个TestServlet的类,继承HttpServlet,重写doGet()方法。
步骤二:在类上添加@WebServlet注释,进行类的相关配置
@WebServlet(name = "testServlet", urlPatterns = "/first")
public class TestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
System.out.println("servlet");
}
}
步骤三:在启动类上添加@ServletComponenetScan,当程序启动的时候,程序会扫描添加该注解类所在包下所有的类以及其子类。
步骤四:启动程序,程序会以jar包的形式启动。输入localhost:8080/first的时候相应的Servlet代码会执行。
方式二:通过配置类的方式进行Servlet的相关配置
除了上一种方式,也可以使用配置加载类的方式进行Servlet的配置
步骤一:在servlet包下创建一个新的类Test02Servlet,继承自HttpServlet,重写doGet()方法。
步骤二:新建一个config包,在这个包中新建一个ServletConfiguration的类,并使用@Configuration注解类进行注解。
步骤三:新建一个方法,并且使用@Bean进行注解,表明将该方法的方法值添加到IOC容器中,并且在该方法中进行相关的配置。
@Configuration
public class ServletConfiguration {
@Bean
public ServletRegistrationBean getServletRegistrationBean(){
ServletRegistrationBean<Test2Servlet> bean = new ServletRegistrationBean<>(new Test2Servlet());
bean.addUrlMappings("/second");
bean.setName("test2Servlet");
return bean;
}
}
SpringBoot整合Filter
在Web中filter起到一个拦截器的作用,可以在请求来到的前后进行相应的处理
首先使用注解方式实现拦截器
新建一个filter包,在该包中创建FirstFilter.java文件如下:
@WebFilter(filterName = "FirstFilter" , urlPatterns = {"/first", "*.do"})
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("Coming");
filterChain.doFilter(servletRequest, servletResponse);
System.out.println("bye");
}
@Override
public void destroy() {
}
}
FirstFilter类实现了Filter(javax.servlet包下),重写了init()、doFilter()、destroy()这三个方法。其中@WebFilter这个注解进行过滤器名称和过滤url有关的拦截。
方式二:使用配置类的方式进行Filter的相关配置
步骤一:依然保留方式一编写的类,只是该类不再使用@Configuration注解。
步骤二:在config包下创建FilterConfig文件
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean getFilterRegistrationBean() {
FilterRegistrationBean<SecondFilter> bean = new FilterRegistrationBean<>(new SecondFilter());
bean.addServletNames("secondFilter");
bean.addUrlPatterns("*.do", "/secondServlet");
return bean;
}
}
SpringBoot整合Listener
这个也是有两种方式,第一种方式创建FirstListener实现ServletContextListener,然后重写其中的方法,注意该类需要使用WebListener注解。方式二也是和上面的方法一样,使用注解类对象:
@Configuration
public class ListenerConfig {
@Bean
public ServletListenerRegistrationBean getListener() {
ServletListenerRegistrationBean<SecondListener> bean = new ServletListenerRegistrationBean<>(new SecondListener());
return bean;
}
}