使用 Spring MVC 和 jsp 作为前端的 Web 应用程序。 Index.jsp 作为我在 WEB-INF/jsp/index.jsp 中的登陆页面。我的控制器没有被调用

问题描述 投票:0回答:1

好的,我正在使用 spring MVC,jsp,基于 Java 的配置。其中index.jsp是我的登陆页面,位于WEB-INF/jsp/index.jsp内。我知道 WEB-INF 内的 jsp 文件无法直接通过 URL 访问。因此,我使用 @GetMapping("/") 设置控制器,返回字符串“index”,然后由 InternalResourceViewResolver 处理,前缀为“/WEB” -INF/jsp/”,后缀为“.jsp”。 当我运行我的应用程序时,“http://localhost:14639/project/”这是我的 URL,我得到 404 not found, “请求的资源[/project/]不可用”。我在控制器内有带有 @GetMapping("/") 映射的“Sysout”语句,它没有被调用,并且控制台上没有任何日志而不是 tomcat 启动。 上下文路径是“项目”。

package Configurations;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
@Configuration
@ComponentScan(basePackages="controller")
public class MainConfig extends AbstractAnnotationConfigDispatcherServletInitializer{
    

    @Override
    protected Class<?>[] getRootConfigClasses() {
        // TODO Auto-generated method stub
        return new Class<?>[] {javaBasedConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        // TODO Auto-generated method stub
        return new Class<?>[] {WebConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        // TODO Auto-generated method stub
        return new String[]{"/"};
    }

}

这是我的 DispatcherServlet

package Configurations;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "controller.viewsController")
public class WebConfig implements WebMvcConfigurer {
    
     @Bean
        public InternalResourceViewResolver viewResolver() {
            InternalResourceViewResolver resolver = new InternalResourceViewResolver();
            resolver.setPrefix("/WEB-INF/jsp/");
            resolver.setSuffix(".jsp");
            return resolver;
        }

     @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/static/**")
                    .addResourceLocations("/static/");
        }

}

这是我的 WebConfigurations

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Hello world..</h1>
</body>
</html>

这是我的index.jsp

package controller;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class viewsController {
    
        @GetMapping("/")
         public String home() {
             System.out.println("i am working..");
                return "index"; // This maps to /WEB-INF/jsp/index.jsp
            }
       
    

    

}

这是我的viewsController。

并且, 这是我的结构

spring spring-mvc http-status-code-404
1个回答
0
投票

好的,解决了。 我不知道如何,但在 tomcat 模块中自动创建了新的 Web 模块,可能是因为我使用“/project/signin”作为操作。 我从eclipse中删除了tomcat,重新读取,解决了

© www.soinside.com 2019 - 2024. All rights reserved.