gpt4 book ai didi

java - Controller 和过滤器已初始化但未被调用

转载 作者:搜寻专家 更新时间:2023-11-01 03:47:59 24 4
gpt4 key购买 nike

我正在运行非常简单的 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 :

@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: [/*]

我错过了什么?

在这里发表评论后,我发现我的 Controller 也没有被调用。所以这不是过滤器的问题,而是更大问题的征兆。

这是我的项目结构:

.
├── 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 clean build

并运行它:

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

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

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")
}

最佳答案

你的过滤器映射 /* 所以你调用 index 应该是 http://localhost:8080/index .
怎么调用索引?

关于java - Controller 和过滤器已初始化但未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38432663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com