加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – SpringBoot:控制器和过滤器已初始化但未被调用

发布时间:2020-12-15 02:15:42 所属栏目:Java 来源:网络整理
导读:我正在运行非常简单的 spring-boot应用程序: @SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class,args); }} 我有一个简单的过滤器: @Componentpublic class MyFilter i
我正在运行非常简单的 spring-boot应用程序:

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

我有一个简单的过滤器:

@Component
public class MyFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException     {
       // This is getting called ! 
    }

    @Override
    public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException,ServletException {
        // some logic
        filterChain.doFilter(request,response);
    }

    @Override
    public void destroy() {
    }
}

我有一个返回索引页面的控制器:

@Controller
public class HomeController {

    @RequestMapping("/")
    public String index() {
        return "index";
    }

}

在请求索引页面时,我的过滤器没有被调用,尽管我认为它应该被调用.

在我的日志中,我看到:

2016-07-18 11:59:51.840  INFO 15623 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'MyFilter' to: [/*]

我错过了什么?

编辑:
在这里发表评论之后,我看到我的控制器也没有被调用.所以这不是过滤器的问题,但这是一个更大问题的症状.

这是我的项目结构:

.
├── Dockerfile
├── build.gradle
├── gradlew
├── settings.gradle
├── src
│?? ├── main
│?? │?? ├── java
│?? │?? │?? └── com
│?? │?? │??     └── mypackage
│?? │?? │??         ├── Application.java
│?? │?? │??         ├── GreetingController.java
│?? │?? │??         ├── HomeController.java
│?? │?? │??         └── MyFilter.java
│?? │?? └── resources
│?? │??     ├── application.yml
│?? │??     └── templates
│?? │??         ├── greeting.html
│?? │??         └── index.html

我正在用gradle构建一个jar文件:

./gradlew清洁构建

运行它:

java -jar build / libs / sample-webapp-1.0.0.jar

我正在调用http:// localhost:8080并获取index.html文件(可能不通过控制器).

Spring版本是1.3.6-RELEASE.

我的build.gradle的一部分:

buildscript {
    repositories {
        maven {
            url "http://jcenter.bintray.com"
        }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.6.RELEASE")
    }
}

dependencies {
        compile("org.springframework.boot:spring-boot-starter-thymeleaf")
        compile("org.springframework.boot:spring-boot-devtools")
        compile group: 'org.apache.logging.log4j',name: 'log4j-core',version: '2.6.2'
        compile group: 'org.apache.logging.log4j',name: 'log4j-api',version: '2.6.2'
        compile group: 'org.bouncycastle',name: 'bcprov-jdk16',version: '1.46'
        testCompile("junit:junit")
}

解决方法

你的过滤地图/ *所以你对索引的调用应该是 http://localhost:8080/index. 你怎么称索引?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读