java - Spring MVC - 浏览器中的 URL 显示和编码支持

标签 java spring spring-mvc

这可能是一个显而易见的问题。但到目前为止我无法弄清楚。

在我的 Spring 应用程序中,我向以下 url 发出 GET 请求

http://www.example.com/firstpage

这个请求转到前端 Controller ,我有一个请求映射如下:

@RequestMapping(value = "/firstpage")
public String handlerMethod(HttpServletRequest request, HttpSession session)
        throws CustomException {
        ...
        return "secondpage";
}

这个“secondpage”对应于secondpage.jsp,其内容正确显示。 但问题是浏览器 URL 仍然显示

http://www.example.com/firstpage

为什么会这样?关于如何更改浏览器 URL 的任何建议? Spring 是否对编码 URL 有任何默认支持?

最佳答案

Spring MVC 的优点之一是 View 与 Controller 完全分离。因此,您的 Controller 映射到 URL 路径“/firstpage”,作为响应可以呈现任何 View 。它可以是 JSP、JSON、PDF,任何类型的 View 。您的 View 解析器配置决定了使用哪个 View 。

在你的例子中,你返回的是“secondpage”,它只是告诉 spring 寻找名为 secondpage 的 View ,根据你的 View 解析器配置,它可能在 WEB-INF 中查找 secondpage.jsp 或类似的东西。它仍然只是一个 View 。

如果你想让它做别的事情,你可以返回“redirect:secondpage”,它会告诉浏览器实际重定向到“/secondpage”,我相信这会改变地址栏中的 url,但它也会想要转到映射到“/secondpage”的 Controller ,或者需要一个没有 Controller 映射的 View 。

关于java - Spring MVC - 浏览器中的 URL 显示和编码支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9809347/

相关文章:

java - 使用spring mvc将post请求中的json内容解析为多参数

java - spring 拦截器不向@RestController 服务添加 header

java - 命名空间 [...schema/context] 的类 [ContextNamespaceHandler] 未实现 [....xml.NamespaceHandler] 接口(interface)

java - Java 包的 Maven 依赖关系

java - 跨多线程的 Spring bean 引用

Java 枚举混淆

java - 使用 Java native 代码或 C++(QT、WxWidgets 等)进行独立于平台的编程

spring - 在 Spring Security 中的 DaoAuthenticationProvider 身份验证期间访问 HttpServletRequest

java - Spring Boot Actuate 实例化错误

java - Spring HandlerInterceptorAdapter postHandle 有保证吗?