我对spring MVC的URL模式映射是如何工作的感到困惑。
当“get servletmappings”返回“/”时,我可以用“http://localhost:8080/hello”获得正确的响应。
但如果我将其更改为“/app”并将url更改为“http://localhost:8080/app/hello”,它将返回404错误。
我是不是误会了什么,我也发现“/app/*”可以工作(这个我可以理解),但是为什么“/app”就不行呢?
请检查我的代码:
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected String[] getServletMappings() {
// works with http://localhost:8080/hello
return new String[] {
"/"
};
// NOT working with http://localhost:8080/app/hello
// return new String[] {
// "/app"
//};
}
}
@RestController
public class HTTPMethodsController {
@RequestMapping("/hello")
public String hello() {
return "Hello SpringMVC.";
}
}
根据Servlet规范第12.2章,Servlet的映射必须使用以下语法:
因此,将DispatcherServlet
与URL“/app”
进行映射,会使servlet容器仅在完全匹配时才将请求路由到它,这意味着仅当您将URL更改为“http://localhost:8080/app”时。这就没有为目标特定的spring控制器添加额外路径的余地(更准确地说:如果您用@requestmapping(“/app”)
映射hello()
控制器方法,那么您实际上可以点击它,因为DispatcherServlet
会返回到使用整个url进行搜索,但实际上这不是您想要的)。
所以映射“/app/*”是正确的,或者您也可以像您注意到的那样,用“/”将其映射为默认servlet。
问题内容: 我很惊讶地发现 和 对全球成员产生了不同的影响。我想确认我的实验是正确的行为。 在第一个示例中,更改foo模块中的成员将反映在所有导入foo的代码中。但是,在以后的情况下更改该成员似乎仅影响导入该成员的文件。换句话说,使用后一种方法将为每个导入文件提供其自己的foo成员副本。 我想要的行为是可以从所有文件访问foo.x,可以从所有文件更改它,并在所有文件中反映该更改(如果愿意,则为真正
问题内容: 很快就有两个相等运算符:double equals( )和Triple equals( ),两者之间有什么区别? 问题答案: 简而言之: 操作员检查其实例值是否相等, 操作员检查引用是否指向同一实例, 长答案: 类是引用类型,可能有多个常量和变量在幕后引用类的同一单个实例。类引用保留在运行时堆栈(RTS)中,其实例保留在内存的堆区域中。当您控制平等时, 这意味着它们的实例是否彼此相等。
问题内容: 关于这个问题已经有其他问题了,但是没有一个是真正有用的。我是Symfony的新手,因此很难直面它。 我在文件Client \ IntranetBundle \ LDAP \ LDAPAuthenticationProvider.php中,此代码导致错误: 我确实添加了它的命名空间: LDAPUser实现UserInterface 我得到的错误是 那应该是什么意思?根据我的阅读,它与映射
我在Spring Boot JPA应用程序中有以下设置: 可嵌入 原因:org.hibernate.AnnotationException:mappedBy引用了未知的目标实体属性:com.foobar.entity.logSearchHistoryAttr.logSearchHistoryAttrs中的com.foobar.entity.logSearchHistoryAttr.logSearc
问题内容: 我知道这是递归问题,但找不到解决方案。 在构建之后,我在 JENKINS中 运行 SONAR 分析。当Soanar到达它时显示:。 扫描是一个 Maven的 项目,声纳保持displayin此消息引发许多其他类使用 Maven的 依赖关系 。 该 声纳 的分析是使用 SONAR亚军 。 我在许多帖子中看到,可以通过添加来解决此问题,但是使用 Maven ,依赖关系不会归类到一个文件夹中
它一直在跟我说这个网络是没有定义的。错误:Service使用了未定义的网络但是,我看到docker network ls存在这样的网络。我错过了什么:(我需要你的帮助。我在谷歌上读了很多关于它的文章,但是找不到正确的解决方法。