Java Spring MVC控制器已到达,但我仍获得404

Java Spring MVC控制器已到达,但我仍获得404,java,spring,spring-mvc,jsp,Java,Spring,Spring Mvc,Jsp,我已经设置了一个非常基本的SpringMVCWeb应用程序,这是我的controller类中讨论的开始/部分 @Controller public class MainController { @Autowired AssetDAO assetDAO; @RequestMapping("/") public String home() { System.out.println("HERE!"); return "index"; } 还有我的i

我已经设置了一个非常基本的SpringMVCWeb应用程序,这是我的controller类中讨论的开始/部分

@Controller
public class MainController {

    @Autowired
    AssetDAO assetDAO;

    @RequestMapping("/")
    public String home() {
    System.out.println("HERE!");
    return "index";
}
还有我的index.jsp文件

<%@page language="java" contentType="text/html; charset=UTF-8" paegeEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "~//W3C//DTD HTML 4.01 Transitional//EN"   "http://www.w3.org.TR.html4/loose.dtd">

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title> Welcome Page </title>
</head>

<body>
    <div>
        <h1> Asset Tracking Web App Test </h1>
        <a href="EmployeeList">Get Employee Records</a>
    </div>
</body>


</html>
为了简洁起见,省去了所有依赖目录。让耶茨推荐这些文件并不能解决问题。但是,将它们替换为application.properties会导致错误

application.properties
spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp

welcome.message: Hello Test

如果您的servlet上没有带有属性前缀和后缀的viewResolver bean,spring不知道“index”的后缀是什么,因此无法找到它。您可以使用viewResolver来创建所有jsp文件

以下是XML配置:

<bean id="jspViewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsps/"></property>
    <property name="suffix" value=".jsp"></property>
</bean>

希望能有帮助

编辑

要配置servlet,请将其添加到web.xml(在您的示例中可能是views.xml?):


服务器名
org.springframework.web.servlet.DispatcherServlet
1.
服务器名
/
不要忘记创建servlet“servletnameservlet.xml”,而不是servlet名称,您可以从应用程序的名称中找到它。然后将上面的bean添加到servlet中,它应该可以工作


检查一下,如果我忘了其他东西,它可能会帮助您。

如果您的servlet上没有带有属性前缀和后缀的viewResolver bean,spring不知道“index”的后缀是什么,所以它找不到它。您可以使用viewResolver来创建所有jsp文件

以下是XML配置:

<bean id="jspViewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsps/"></property>
    <property name="suffix" value=".jsp"></property>
</bean>

希望能有帮助

编辑

要配置servlet,请将其添加到web.xml(在您的示例中可能是views.xml?):


服务器名
org.springframework.web.servlet.DispatcherServlet
1.
服务器名
/
不要忘记创建servlet“servletnameservlet.xml”,而不是servlet名称,您可以从应用程序的名称中找到它。然后将上面的bean添加到servlet中,它应该可以工作


检查,如果我忘了其他任何东西,它可能会帮助您。

可能您还没有配置。如果是,则它将
index.jsp
定位在某个不正确的位置

以下是
InternalViewResolver

XML:

<bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">

    <property name="prefix" value="/WEB-INF/pages/"/>
    <property name="suffix" value=".jsp"/>
</bean>

Java

@EnableWebMvc
@Configuration
@ComponentScan("<package_fully_qualified_name>")
public class WebConfig implements WebMvcConfigurer {

    @Bean
    public ViewResolver internalResourceViewResolver() {
      InternalResourceViewResolver bean = new InternalResourceViewResolver();
      bean.setViewClass(JstlView.class);
      bean.setPrefix("/WEB-INF/view/");
      bean.setSuffix(".jsp");
      return bean;
  }
}
@EnableWebMvc
@配置
@组件扫描(“”)
公共类WebConfig实现WebMVCConfiguer{
@豆子
公共ViewResolver internalResourceViewResolver(){
InternalResourceViewResolver bean=新的InternalResourceViewResolver();
setViewClass(JstlView.class);
setPrefix(“/WEB-INF/view/”);
setSuffix(“.jsp”);
返回豆;
}
}

可能您还没有配置。如果是,则它将
index.jsp
定位在某个不正确的位置

以下是
InternalViewResolver

XML:

<bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">

    <property name="prefix" value="/WEB-INF/pages/"/>
    <property name="suffix" value=".jsp"/>
</bean>

Java

@EnableWebMvc
@Configuration
@ComponentScan("<package_fully_qualified_name>")
public class WebConfig implements WebMvcConfigurer {

    @Bean
    public ViewResolver internalResourceViewResolver() {
      InternalResourceViewResolver bean = new InternalResourceViewResolver();
      bean.setViewClass(JstlView.class);
      bean.setPrefix("/WEB-INF/view/");
      bean.setSuffix(".jsp");
      return bean;
  }
}
@EnableWebMvc
@配置
@组件扫描(“”)
公共类WebConfig实现WebMVCConfiguer{
@豆子
公共ViewResolver internalResourceViewResolver(){
InternalResourceViewResolver bean=新的InternalResourceViewResolver();
setViewClass(JstlView.class);
setPrefix(“/WEB-INF/view/”);
setSuffix(“.jsp”);
返回豆;
}
}

这是无法呈现的jsp页面

尝试在pom.xml中添加以下依赖项

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

org.apache.tomcat.embed
汤姆卡特·贾斯珀
假如
javax.servlet
jstl

如果使用Intellij IDE运行,可能需要将jasper作用域更改为“默认”

这是无法呈现的jsp页面

尝试在pom.xml中添加以下依赖项

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

org.apache.tomcat.embed
汤姆卡特·贾斯珀
假如
javax.servlet
jstl

如果使用Intellij IDE运行,可能需要将jasper作用域更改为“默认”

您能否将
@RequestMapping(“/”
修改为
@RequestMapping(“/home”)
,然后尝试使用url
localhost:8080/home
并粘贴结果。请修改以检查下面的答案!!您能否将
@RequestMapping(“/”
修改为
@RequestMapping(“/home”)
,然后尝试使用url
localhost:8080/home
并粘贴结果。请修改以检查下面的答案!!我试过了,但没有用,也许我还是配置错了?@justinbenge更新你已经拥有的+index.jsp的结构谢谢你,但我知道当有人回答我的问题时该怎么办。然而,我使用了一个不同的解决方案,因为它看起来更简单。在我的编辑中,我问了另一个问题,但这个问题还没有得到回答。物业文件解决了你的问题吗??想看看代码吗??问问题而不显示你在尝试什么不是一个好主意。我尝试了这个,但没有用,也许我仍然配置错了?@justinbenge更新你已经拥有的内容+index.jsp的结构谢谢你,但我知道当有人回答我的问题时该怎么办。然而,我使用了一个不同的解决方案,因为它看起来更简单。在我的编辑中,我问了另一个问题,但这个问题还没有得到回答。物业文件解决了你的问题吗??想看看代码吗??问问题而不展示你在尝试什么不是一个好主意。我不能对你的问题发表评论,所以我会在这里做。正如我上面所说的,ViewResolver必须在servlet上。在您的编辑中,我看不到servlet,它通常位于WEB-INF中,就像您的views.xml一样。您可以称之为“yourappnameservlet.xml”。试试看,我不能对你的问题发表评论,所以我会在这里做。正如我上面所说的,ViewResolver必须在servlet上。在您的编辑中,我看不到servlet,它通常位于WEB-INF中,就像您的views.xml一样。您可以称之为“yourappnameservlet.xml”。试试看