首页 > 软件开发 > 编程语言 >

Spring boot注解方式配置Servlet为何扫描不到

来源:互联网 2023-03-17 00:18:25 版权归原作者所有,如有侵权,请联系我们

我在进行基于Spring boot方式进行配置Servlet时,发现系统并不能扫描并识别出我所配置的Servlet类,后来经过分析,调整了注解的详细方式,最后解决了问题,这里就给出我是如何解决Spring boot框架上使用注解方式配置Servlet时导致系统无法扫描出我定义的Servlet的原因和解决方式hiD办公区 - 实用经验教程分享!

工具/原料

  • Spring boot

方法/步骤

  • 1

    创建一个Maven工程项目,并在该工程的Pom文件中增加如下的包依赖hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    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">hiD办公区 - 实用经验教程分享!

    modelVersion>4.0.0/modelVersion>hiD办公区 - 实用经验教程分享!

    groupId>fantasy/groupId>hiD办公区 - 实用经验教程分享!

    artifactId>balckbox/artifactId>hiD办公区 - 实用经验教程分享!

    version>0.0.1-SNAPSHOT/version>hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    parent>hiD办公区 - 实用经验教程分享!

    groupId>org.springframework.boot/groupId>hiD办公区 - 实用经验教程分享!

    artifactId>spring-boot-starter-parent/artifactId>hiD办公区 - 实用经验教程分享!

    version>1.5.9.RELEASE/version>hiD办公区 - 实用经验教程分享!

    /parent>hiD办公区 - 实用经验教程分享!

    dependencies>hiD办公区 - 实用经验教程分享!

    dependency>hiD办公区 - 实用经验教程分享!

    groupId>org.springframework.boot/groupId>hiD办公区 - 实用经验教程分享!

    artifactId>spring-boot-starter-thymeleaf/artifactId>hiD办公区 - 实用经验教程分享!

    /dependency>hiD办公区 - 实用经验教程分享!

    dependency>hiD办公区 - 实用经验教程分享!

    groupId>org.springframework.boot/groupId>hiD办公区 - 实用经验教程分享!

    artifactId>spring-boot-devtools/artifactId>hiD办公区 - 实用经验教程分享!

    optional>true/optional>hiD办公区 - 实用经验教程分享!

    /dependency>hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    /dependencies>hiD办公区 - 实用经验教程分享!

    properties>hiD办公区 - 实用经验教程分享!

    java.version>1.8/java.version>hiD办公区 - 实用经验教程分享!

    /properties>hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    build>hiD办公区 - 实用经验教程分享!

    plugins>hiD办公区 - 实用经验教程分享!

    plugin>hiD办公区 - 实用经验教程分享!

    groupId>org.springframework.boot/groupId>hiD办公区 - 实用经验教程分享!

    artifactId>spring-boot-maven-plugin/artifactId>hiD办公区 - 实用经验教程分享!

    /plugin>hiD办公区 - 实用经验教程分享!

    /plugins>hiD办公区 - 实用经验教程分享!

    /build>hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    /project>hiD办公区 - 实用经验教程分享!

    Spring boot注解方式配置Servlet为何扫描不到hiD办公区 - 实用经验教程分享!

  • 2

    创建一个Servlet服务类(FantasyServlet.java),对外提供WEB Servlet服务,需要使用到注解WebServlethiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    package fantasy.servlet;hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    import java.io.IOException;hiD办公区 - 实用经验教程分享!

    import java.io.PrintWriter;hiD办公区 - 实用经验教程分享!

    import java.util.Date;hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    import javax.servlet.ServletException;hiD办公区 - 实用经验教程分享!

    import javax.servlet.annotation.WebServlet;hiD办公区 - 实用经验教程分享!

    import javax.servlet.http.HttpServlet;hiD办公区 - 实用经验教程分享!

    import javax.servlet.http.HttpServletRequest;hiD办公区 - 实用经验教程分享!

    import javax.servlet.http.HttpServletResponse;hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    @WebServlet(urlPatterns="/fantasy/hello")hiD办公区 - 实用经验教程分享!

    public class FantasyServlet extends HttpServlet {hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    private static final long serialVersionUID = 1457739152440306935L;hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    @OverridehiD办公区 - 实用经验教程分享!

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {hiD办公区 - 实用经验教程分享!

    System.out.println(">>>>Fantasy Servlet do get request.....");hiD办公区 - 实用经验教程分享!

    doPost(req,resp);hiD办公区 - 实用经验教程分享!

    }hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    @OverridehiD办公区 - 实用经验教程分享!

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {hiD办公区 - 实用经验教程分享!

    System.out.println(">>>>Fantasy Servlet do post request.....");hiD办公区 - 实用经验教程分享!

    resp.setContentType("text/html");hiD办公区 - 实用经验教程分享!

    resp.setCharacterEncoding("utf-8");hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    PrintWriter out = resp.getWriter();hiD办公区 - 实用经验教程分享!

    out.print("html>body>");hiD办公区 - 实用经验教程分享!

    out.print("h1>I am Fantasy from FantasyServlet @" new Date() "/h1>");hiD办公区 - 实用经验教程分享!

    out.print("/body>/html>");hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    out.flush();hiD办公区 - 实用经验教程分享!

    out.close();hiD办公区 - 实用经验教程分享!

    }hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    }hiD办公区 - 实用经验教程分享!

    Spring boot注解方式配置Servlet为何扫描不到hiD办公区 - 实用经验教程分享!

  • 3

    创建一个Spring boot应用运行的主类(Application.java)hiD办公区 - 实用经验教程分享!

    在主类我们需要使用ServletComponentScan注解和SpringBootApplication注解hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    package fantasy.main;hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    import org.springframework.boot.SpringApplication;hiD办公区 - 实用经验教程分享!

    import org.springframework.boot.autoconfigure.SpringBootApplication;hiD办公区 - 实用经验教程分享!

    import org.springframework.boot.web.servlet.ServletComponentScan;hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    @SpringBootApplicationhiD办公区 - 实用经验教程分享!

    @ServletComponentScanhiD办公区 - 实用经验教程分享!

    public class Application {hiD办公区 - 实用经验教程分享!

    public static void main(String[] args) {hiD办公区 - 实用经验教程分享!

    SpringApplication.run(Application.class, args);hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    }hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    }hiD办公区 - 实用经验教程分享!

    Spring boot注解方式配置Servlet为何扫描不到hiD办公区 - 实用经验教程分享!

  • 4

    运行Application类,启动Spring boot应用hiD办公区 - 实用经验教程分享!

    这时候可以我们观察日志,发现系统并没有扫描到我们配置的servlet:/fantasy/hellohiD办公区 - 实用经验教程分享!

    -----------------------------------hiD办公区 - 实用经验教程分享!

    2018-01-15 17:07:54.653 INFO 4100 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContexthiD办公区 - 实用经验教程分享!

    2018-01-15 17:07:54.653 INFO 4100 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1423 mshiD办公区 - 实用经验教程分享!

    2018-01-15 17:07:54.811 INFO 4100 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]hiD办公区 - 实用经验教程分享!

    2018-01-15 17:07:54.814 INFO 4100 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]hiD办公区 - 实用经验教程分享!

    2018-01-15 17:07:54.815 INFO 4100 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]hiD办公区 - 实用经验教程分享!

    2018-01-15 17:07:54.815 INFO 4100 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]hiD办公区 - 实用经验教程分享!

    2018-01-15 17:07:54.815 INFO 4100 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]hiD办公区 - 实用经验教程分享!

    2018-01-15 17:07:55.081 INFO 4100 --- [ restartedMain] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@12d912f: startup date [Mon Jan 15 17:07:53 CST 2018]; root of context hierarchyhiD办公区 - 实用经验教程分享!

    2018-01-15 17:07:55.140 INFO 4100 --- [ restartedMaihiD办公区 - 实用经验教程分享!

    Spring boot注解方式配置Servlet为何扫描不到hiD办公区 - 实用经验教程分享!

  • 5

    我们通过浏览器访问Servlet服务也是失败的,提示找不到网页hiD办公区 - 实用经验教程分享!

    Spring boot注解方式配置Servlet为何扫描不到hiD办公区 - 实用经验教程分享!

  • 6

    系统扫描不到Servlet的问题分析和解决办法hiD办公区 - 实用经验教程分享!

    1)问题分析hiD办公区 - 实用经验教程分享!

    考虑到@ServletComponentScan注解是可以设置扫描的包路径的,而我们的主应用类Application和Servlet并不是在同一个包路径下,所以我增加了扫描路径的参数进行测试hiD办公区 - 实用经验教程分享!

    package fantasy.main;hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    import org.springframework.boot.SpringApplication;hiD办公区 - 实用经验教程分享!

    import org.springframework.boot.autoconfigure.SpringBootApplication;hiD办公区 - 实用经验教程分享!

    import org.springframework.boot.web.servlet.ServletComponentScan;hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    @SpringBootApplicationhiD办公区 - 实用经验教程分享!

    @ServletComponentScan("fantasy.servlet")hiD办公区 - 实用经验教程分享!

    public class Application {hiD办公区 - 实用经验教程分享!

    public static void main(String[] args) {hiD办公区 - 实用经验教程分享!

    SpringApplication.run(Application.class, args);hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    }hiD办公区 - 实用经验教程分享!

    hiD办公区 - 实用经验教程分享!

    }hiD办公区 - 实用经验教程分享!

    2)测试结果:日志显示了扫描到了我们的Servlet:/fantasy/hellohiD办公区 - 实用经验教程分享!

    同时浏览器的页面也可以正常访问hiD办公区 - 实用经验教程分享!

    Spring boot注解方式配置Servlet为何扫描不到hiD办公区 - 实用经验教程分享!

    Spring boot注解方式配置Servlet为何扫描不到hiD办公区 - 实用经验教程分享!

    Spring boot注解方式配置Servlet为何扫描不到hiD办公区 - 实用经验教程分享!

  • 6该信息未经授权抓取自百度经验
  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!hiD办公区 - 实用经验教程分享!


    标签: 编程语言

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号