Spring MVC 和 Maven 集成
Posted
技术标签:
【中文标题】Spring MVC 和 Maven 集成【英文标题】:Spring MVC & Maven Integration 【发布时间】:2013-12-26 08:30:33 【问题描述】:我正在尝试构建一个 Spring MVC 项目,但在尝试解决以下错误时遇到了一些麻烦。
HTTP 状态 500 - 循环视图路径 [登录]:将调度回 再次访问当前处理程序 URL [/login]。检查您的 ViewResolver 设置! (提示:这可能是未指定视图的结果,由于默认 查看名称生成。)
我通过终端输入了以下命令:
mvn 清洁包 java -jar 目标/sprint2-0.1.0.jar
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.teamvirus.src</groupId>
<artifactId>sprint2</artifactId>
<version>0.1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>0.5.0.M6</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--><dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring3</artifactId>
</dependency>-->
</dependencies>
<properties>
<start-class>com.teamvirus.src.Application</start-class>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-milestone</id>
<url>http://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-milestone</id>
<url>http://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>
LoginController.java
package com.teamvirus.src;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class LoginController
@RequestMapping("/login")
public String login()
return "login";
@RequestMapping("/authenticate")
public String authenticate(
@RequestParam(value = "username", required = true) String username,
@RequestParam(value = "password", required = true) String password)
if ((username.equals("admin") && password.equals("admin")))
return "redirect:dashboard?username=" + username;
else if ((username.equals("student1") && password.equals("student1")))
return "redirect:dashboard?username=" + username;
return "wrongpassword";
感谢您提供的任何帮助。
编辑:
Application.java
package com.teamvirus.src;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan;
@ComponentScan
@EnableAutoConfiguration
public class Application
public static void main(String[] args)
SpringApplication.run(Application.class, args);
【问题讨论】:
发布一些配置。 您好 M. Deinum,我不确定您所说的配置是什么意思。如果您能澄清一下,不胜感激。 我假设你有一个@Configuration
class/classes somewhre。发布它们。
我在项目中看到的唯一配置是Application.java。我已经编辑了上面的帖子以包含它。
【参考方案1】:
您完全依赖 Spring Boot 来配置所有内容,尽管这对于您当前的视图来说应该不是问题。
默认情况下,Spring boot 注册一个InternalResourceViewResolver
,但是没有任何前缀/后缀。 (见source)。假设您在 /WEB-INF/views
中有您的意见并且它们是 jsp
文件,请执行以下操作
-
在
src\main\resources
添加application.properties
文件
添加属性spring.view.prefix
,其值为/WEB-INF/views/
添加属性spring.view.suffix
,其值为“.jsp”
重新打包并启动您的应用程序。
如果您没有此附加配置,/login
将返回到 /login
,这将返回到 /login
,这将返回到 /login
,这将......好吧,我猜你明白了. (login
是您在 @Controller
中引用的视图的名称。
【讨论】:
谢谢。我已按照您的建议和application.properties
文件使用以下内容:@Value("$spring.view.prefix:") private String prefix = "/WEB-INF/views/"; @Value("$spring.view.suffix:") private String prefix = ".jsp";
重新打包,并重新启动了我的应用程序,但仍然出现与之前相同的错误。我这样做对吗?
为什么将它添加到属性文件中?那是java不是普通的属性。你应该有类似spring.view.prefix=/WEB-INF/views/
的东西,而不是你添加的东西。
抱歉,我还在学习中。这似乎解决了圆形视图路径错误消息。但是,即使在清理、打包和运行之后,我的 JSP 文件也没有显示。
见***.com/questions/20199609/…。您可能还想查看示例应用程序。要更深入地了解正在发生的事情,请启用调试/跟踪日志记录并查看当您的页面被解析时会发生什么。
感谢您的帮助。我很感激。我会阅读并调查此事。我已将您的帖子标记为已接受的答案。【参考方案2】:
你有视图解析器吗? 尝试添加
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/pages/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
因此,当您返回 "login"
时,它将搜索并加载 /WEB-INF/pages/
内名称为 login.jsp
的 jsp。如果没有视图解析器,它将再次调用您的控制器方法。
【讨论】:
我在 servlet-context.xml 中有以下内容。我的页面在“视图”中。servlet-context.xml
不会被读取,所以基本上所有的配置都会被忽略。将其移至 java 配置或查看 Spring Boot 已为您提供的内容并进行相应配置。以上是关于Spring MVC 和 Maven 集成的主要内容,如果未能解决你的问题,请参考以下文章