spring-mvc - 在名称为“SpringDisptacher”的 DispatcherServlet 中找不到具有 URI [/WorkforceManagement/] 的 HTTP 请求的映射
问题描述
我是 Spring MVC 的新手,我正在尝试构建一个应用程序。但是,在运行应用程序时,我收到一个错误消息“没有找到带有 URI 的 HTTP 请求的映射”。我也包括我的代码和控制台日志。请帮我解决这个问题
这是我的 Web App Initializer 类
public class SpringWebAppInitializer implements WebApplicationInitializer {
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext appContext = new AnnotationConfigWebApplicationContext();
appContext.register(ApplicationContextConfig.class);
ServletRegistration.Dynamic dispatcher = servletContext.addServlet("SpringDisptacher", new DispatcherServlet(appContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
// UtF8 Charactor Filter.
FilterRegistration.Dynamic fr = servletContext.addFilter("encodingFilter", CharacterEncodingFilter.class);
fr.setInitParameter("encoding", "UTF-8");
fr.setInitParameter("forceEncoding", "true");
fr.addMappingForUrlPatterns(null, true, "/");
}
}
这是我的 ApplicationContextConfig 类
@Configuration
@ComponentScan("com.wfm.account.*")
@EnableTransactionManagement
public class ApplicationContextConfig {
@Autowired
private static Environment env;
private static final String JDBC_DRIVER_CLASS = "oracle.jdbc.driver.OracleDriver";
private static final String JDBC_URL = "URL";
private static final String DB_USERNAME = "cisadm";
private static final String DB_PASSWORD = "PASSWORD";
@Bean(name = "viewResolver")
public InternalResourceViewResolver getViewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/views");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Bean(name = "dataSource")
public DataSource getDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
//Set Driver properties
dataSource.setDriverClassName(JDBC_DRIVER_CLASS);
dataSource.setUrl(JDBC_URL);
dataSource.setUsername(DB_USERNAME);
dataSource.setPassword(DB_PASSWORD);
System.out.println("Data Source is : " + dataSource);
return (DataSource) dataSource;
}
@Bean(name = "transactionManager")
public DataSourceTransactionManager getTransactionmanagerDataSource() {
DataSourceTransactionManager txManager = new DataSourceTransactionManager();
DataSource dataSource = this.getDataSource();
txManager.setDataSource(dataSource);
return txManager;
}
}
这是我的控制器
public class UserController {
@Autowired
private UserDao userDao;
@RequestMapping(value = {"/"}, method = RequestMethod.GET)
public String welcome(Model model) {
userDao.insertUser("SYSUSER", "sysuer15", "abc@com.au", "0893266188");
User userDetails = userDao.findUser("N018003");
model.addAttribute("user", userDetails);
return "welcome";
}
}
此控制台日志
16:36:06.795 [main] DEBUG o.s.web.servlet.DispatcherServlet - Published WebApplicationContext of servlet 'SpringDisptacher' as ServletContext attribute with name [org.springframework.web.servlet.FrameworkServlet.CONTEXT.SpringDisptacher]
16:36:06.797 [main] INFO o.s.web.servlet.DispatcherServlet - FrameworkServlet 'SpringDisptacher': initialization completed in 2828 ms
16:36:06.798 [main] DEBUG o.s.web.servlet.DispatcherServlet - Servlet 'SpringDisptacher' configured successfully
Dec 20, 2018 4:36:06 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-nio-8080"]
Dec 20, 2018 4:36:06 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-nio-8009"]
Dec 20, 2018 4:36:06 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in [11,285] milliseconds
16:36:08.335 [http-nio-8080-exec-2] DEBUG o.s.web.servlet.DispatcherServlet - DispatcherServlet with name 'SpringDisptacher' processing GET request for [/WorkforceManagement/]
16:36:08.355 [http-nio-8080-exec-2] WARN o.s.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/WorkforceManagement/] in DispatcherServlet with name 'SpringDisptacher'
16:36:08.356 [http-nio-8080-exec-2] DEBUG o.s.web.servlet.DispatcherServlet - Successfully completed request
解决方案
当我浏览了您的代码时,一切似乎都很完美,除了:-
- @EnableWebMvc 用于 ApplicationContextConfig 文件。
- @Controller 用于 UserController 文件。
我使用您的代码开发了我的简单解决方案,您可以在下面找到它:-
配置类:-
@EnableWebMvc
@Configuration
@ComponentScan("com.sof.controller")
public class ApplicationContextConfig {
@Bean(name = "viewResolver")
public InternalResourceViewResolver getViewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
SpringWebAppInitializer 类:-
public class SpringWebAppInitializer implements WebApplicationInitializer {
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext appContext = new AnnotationConfigWebApplicationContext();
appContext.register(ApplicationContextConfig.class);
ServletRegistration.Dynamic dispatcher = servletContext.addServlet("SpringDisptacher", new DispatcherServlet(appContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
}
}
用户控制器类
@Controller
public class UserController {
@RequestMapping(value = {"/"}, method = RequestMethod.GET)
public String welcome(Model model) {
// userDao.insertUser("SYSUSER", "sysuer15", "abc@com.au", "0893266188");
// User userDetails = userDao.findUser("N018003");
model.addAttribute("user", "Hi Roumil");
return "welcome";
}
}
如果您还有任何疑问,我很乐意为您提供帮助...
推荐阅读
- javascript - nodejs中两个数组之间的项目搜索
- c# - 如何按时间间隔有选择地接收 Azure 服务总线消息?
- java - NetBeans 中与 Maven 的跨项目依赖关系
- c++ - 有关矩阵的代码错误导致分段错误(核心转储)
- ng-bootstrap - 当使用 enter 键打开新的 NgbDropdowns 时,如何关闭先前打开的 NgbDropdowns?
- haskell - 如何在 Haskell 中定义一系列类型相关的函数
- intellij-idea - IntelliJ 使用 $MODULE_WORKING_DIR$ 运行 Scalatest?
- regex - .htaccess:尝试将许多子页面重定向到最新的子页面
- google-analytics - Google Analytics(分析)目标低估了转化次数
- javascript - Pentaho/Kettle - 获取早于指定日期的文件名的 Javascript 或 java