Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring MVC 2.5-如何向不';不显示在url中?_Java_Spring_Jakarta Ee_Spring Mvc - Fatal编程技术网

Java Spring MVC 2.5-如何向不';不显示在url中?

Java Spring MVC 2.5-如何向不';不显示在url中?,java,spring,jakarta-ee,spring-mvc,Java,Spring,Jakarta Ee,Spring Mvc,为了简单起见,我的应用程序的基本功能是一个带有搜索结果表单的搜索界面。应用程序通过SOAP从另一个应用程序获取这些结果 在搜索控制器上,我需要能够在重定向中指定一些参数,这些参数不会显示在结果页面的url中,而其他参数会显示在结果页面的url中。下面是重定向的示例: return new ModelAndView(new RedirectView(/results?q=blah, true)); 如你所见,我需要包括q参数。但我还需要其他我不想显示在结果页面url上的参数 我的应用程序需要能够

为了简单起见,我的应用程序的基本功能是一个带有搜索结果表单的搜索界面。应用程序通过SOAP从另一个应用程序获取这些结果

在搜索控制器上,我需要能够在重定向中指定一些参数,这些参数不会显示在结果页面的url中,而其他参数会显示在结果页面的url中。下面是重定向的示例:

return new ModelAndView(new RedirectView(/results?q=blah, true));
如你所见,我需要包括q参数。但我还需要其他我不想显示在结果页面url上的参数

我的应用程序需要能够在一个浏览器会话中进行多个搜索。例如,多个选项卡同时搜索。因此,会话对象被抽象为包含会话状态对象的映射。它们保存每个搜索的状态数据。每次向搜索控制器发出请求时,都会创建一个新的会话状态。然后由结果控制器获取该会话状态

我们的书签过程需要完全无状态。因此,用户应该能够将结果页面url添加到书签中,或者将url复制并粘贴到新选项卡或其他浏览器中。执行结果url时,结果控制器将执行新的搜索

我的问题是: 我需要一种方法让结果控制器知道请求是来自搜索控制器中的重定向还是来自(书签/复制粘贴)。这样,它可以获取现有会话状态数据或执行新的搜索。如果我可以在重定向中从搜索控制器(如“requester”)传递一个隐藏参数,那么我可以使用结果控制器中的简单逻辑来查找现有会话状态或启动新的搜索

谢谢

编辑:将数据从一个控制器传递到另一个控制器,而不将其放入url。例如,在结果控制器而不是结果视图中访问从搜索控制器重定向传递的模型数据?这里有一个构造函数,可以选择隐藏模型属性

/**
 * Create a new RedirectView with the given URL.
 * @param url the URL to redirect to
 * @param contextRelative whether to interpret the given URL as
 * relative to the current ServletContext
 * @param http10Compatible whether to stay compatible with HTTP 1.0 clients
 * @param exposeModelAttributes whether or not model attributes should be
 * exposed as query parameters
 */
public RedirectView(String url, boolean contextRelative, boolean http10Compatible, boolean exposeModelAttributes)

是否有其他方法将数据从一个控制器传递到另一个控制器?

通常由指定的HTTP重定向响应在其位置标头中包含一个URI,客户端应请求该URI以查找指定的资源。没有办法告诉客户机关于要发出的请求的任何其他信息,只有它应该请求的URI。因此,只有URI中可以包含的内容才能在重定向中发回。您可以根据进行一些猜测,但这不能保证。

通常由指定的HTTP重定向响应在其位置标头中包含一个URI,客户端应请求该URI以查找指定的资源。没有办法告诉客户机关于要发出的请求的任何其他信息,只有它应该请求的URI。因此,只有URI中可以包含的内容才能在重定向中发回。您可以根据的进行一些猜测,但这不能保证。

您是否考虑过从当前处理程序调用第二个处理程序?大概是这样的:

public ModelAndView currentHandler(...) { ModelAndView returnValue; ... stuff here... if (make a decision) { returnValue = ... set the model and view as normal. } else { returnValue = ClassName.someOtherHandler( ... parameters ... ); } return returnValue; } 公共模型和视图currentHandler(…) { 模型和视图返回值; …这里的东西。。。 如果(做决定) { returnValue=…将模型和视图设置为正常。 } 其他的 { returnValue=ClassName.someOtherHandler(…参数…); } 返回值;
} 您是否考虑过从当前处理程序调用第二个处理程序?大概是这样的:

public ModelAndView currentHandler(...) { ModelAndView returnValue; ... stuff here... if (make a decision) { returnValue = ... set the model and view as normal. } else { returnValue = ClassName.someOtherHandler( ... parameters ... ); } return returnValue; } 公共模型和视图currentHandler(…) { 模型和视图返回值; …这里的东西。。。 如果(做决定) { returnValue=…将模型和视图设置为正常。 } 其他的 { returnValue=ClassName.someOtherHandler(…参数…); } 返回值;
}你能检查HTTP
Referer
标题吗?然后,您可以查看该页面是否是从您的站点的特定页面请求的。重定向意味着HTTP GET,因此任何参数都必须在URL中。如果有人从搜索页面提交表单帖子,则此操作有效。但是,如果有人从另一个位置提交表单帖子,即使它击中了搜索控制器,referer头也没有用。你能检查HTTP
referer
头吗?然后,您可以查看该页面是否是从您的站点的特定页面请求的。重定向意味着HTTP GET,因此任何参数都必须在URL中。如果有人从搜索页面提交表单帖子,则此操作有效。但是,如果有人从另一个位置提交表单帖子,即使它击中了搜索控制器,referer头也是无用的。