Java Spring MVC控制器已到达,但我仍获得404
我已经设置了一个非常基本的SpringMVCWeb应用程序,这是我的controller类中讨论的开始/部分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
@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”)
,然后尝试使用urllocalhost:8080/home
并粘贴结果。请修改以检查下面的答案!!您能否将@RequestMapping(“/”
修改为@RequestMapping(“/home”)
,然后尝试使用urllocalhost: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”。试试看