Discuss / Java / ServletContext 报错

ServletContext 报错

Topic source

我直接把廖老师的整个工程目录当作一个intellij的项目打开可以正常运行,我自己一个一个拷贝到自己的目录就有错,所以肯定是我哪个地方的配置有问题,可是我没有找出来

报错的是AppConfig里面这个:

@BeanViewResolver createViewResolver(@Autowired ServletContext servletContext) {

错误是说Could not autowire. No beans of 'ServletContext' type found. 

我在廖老师的工程目录里面搜索ServletContext也只看到AppConfig里面,一个import,一个@Autowired一个.loader(new ServletLoader(servletContext)) 的确是没有bean

我的工程目录现在结构这样子:

│  MyDemo.iml

│  pom.xml

├─.idea

│      .gitignore

│      compiler.xml

│      encodings.xml

│      jarRepositories.xml

│      misc.xml

│      uiDesigner.xml

│      workspace.xml

└─src

    ├─main

    │  ├─java

    │  │  └─org

    │  │      └─example

    │  │          │  AppConfig.java

    │  │          │  DatabaseInitializer.java

    │  │          │

    │  │          ├─entity

    │  │          │      User.java

    │  │          │

    │  │          ├─service

    │  │          │      UserService.java

    │  │          │

    │  │          └─web

    │  │                  UserController.java

    │  │

    │  ├─resources

    │  │      jdbc.properties

    │  │      logback.xml

    │  │

    │  └─webapp

    │      ├─static

    │      │  ├─css

    │      │  │      bootstrap.css

    │      │  │

    │      │  └─js

    │      │          jquery.js

    │      │

    │      └─WEB-INF

    │          │  web.xml

    │          │

    │          └─templates

    │                  index.html

    │                  profile.html

    │                  register.html

    │                  signin.html

    │                  _base.html

    │

    └─test

        └─java

            └─org

                └─example

                        AppTest.java

不明白啊不明白

而且这样我打开会报404错误:

2020-10-08 19:20:50 WARN  o.s.web.servlet.PageNotFound - No mapping for GET /

感觉还是那个编译没有过去的问题

这个Could not autowire. No beans of 'ServletContext' type found. 的错和404的错应该是不相关的。

我再重新一顿操作猛如虎地把廖老师的工程目录底下的东西拷了一遍,就让intellij给refactor那些package之外啥也没有改然后现在可以打开页面了,但是那个Could not autowire的错误还是有

hmm 404那个No mapping for GET / 不知道怎么出来的,有点不知道怎么调试的感觉

我对整个流程的理解是:

Tomcat->读webxml->启动里面指定的DispatcherServlet->DispatcherServlet的参数里面把contextClass指向了AnnotationConfigWebApplicationContext同时configuration指向了AppConfig->跟前面章节一样AppConfig开始挂一堆的bean包括UserController这个Controller->一堆的URL 包括/ /register在此时映射好

看来应该还是挂UserController这个Controller这个没有成功才会报错

我开始应该打一下挂成功的bean的列表就好了, 这会也不知道改了哪里了,扼腕

lm0077

#5 Created at ... [Delete] [Delete and Lock User]

开头的一句话,此外,Servlet容器为每个Web应用程序自动创建一个唯一的ServletContext实例,这个实例就代表了Web应用程序本身。

有可能你的tomcat没有配置好?

强颜欢笑

#6 Created at ... [Delete] [Delete and Lock User]

tomcat10迁移到了jakartaEE上,你的ServletContext和Pebble中需要的不是一个,建议降到tomcat9,注意把Maven中的version也改了。

星星

#7 Created at ... [Delete] [Delete and Lock User]

我这个错误没有处理直接运行了也是完全可以的。

Idea版本是2022.3.2


  • 1

Reply