当前位置: 首页 > 知识库问答 >
问题:

Spring:全局路径变量或没有控制器的请求参数

强安和
2023-03-14
  1. http://localhost:8080/customer1(我更喜欢)或
  2. http://localhost:8080?_customer=customer1

只需使用@requestmapping(“”)调用@controller,值customer1应存储在该请求的某个位置。

我知道2.可能更简单,因为它已经击中了正确的@controller,但我更喜欢1.

我刚刚意识到,handlerinterceptor不能像预期的那样工作,因为Spring Security总是首先处理请求。不过我需要一个拦截器在Spring安全启动之前处理它。

共有1个答案

栾鸣
2023-03-14

您可以使用org.springframework.web.servlet.handlerinterceptor。通过preHandle方法实现在请求中存储值的逻辑。

在spring配置文件中配置它,如下所示

<mvc:interceptors>
  <bean class="com.blah.interceptor.SomeInterceptor"/>
</mvc:interceptors> 

如果要根据路径拦截请求,请使用下面的配置

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/customer1" />
        <bean class="com.blah.interceptor.SomeInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>
 类似资料:
  • 方法2:没有@PathVariable 方法3:只使用path和@PathVariable的RequestMapping 方法4:RequestMapping只使用path而不使用@PathVariable 路径变量支持 @PathVariable问题 问题是,我们可以将作为方法参数来访问,但是当我们试图在中指定它时,在上述情况下,执行并没有到达我们的控制器,我们得到了上述相同的异常。有人帮忙吗?

  • 问题内容: 这个问题非常简单和技术性: 我要实现的是: 有没有办法做到这一点?如果不是,可以返回一个值应用于? 问题答案: 您期望的是 同步 ( 阻塞 )类型的请求。 默认情况下 ,请求是 异步的 ( 非阻塞 ),这意味着浏览器不会等待它们完成才能继续工作。这就是为什么您的警报得到错误结果的原因。 现在,您可以选择将请求设置为 sync ,这意味着脚本将仅在请求完成 后 继续运行。 该 建议的 方

  • 我有一个有一些订单的客户列表,我把他们都显示在一个表中。我添加了一个按钮,以便删除每个订单,如果需要的话。 当我试图删除一个特定的订单时,我会得到以下错误 未能将类型“java.lang.String”的值转换为所需类型“java.lang.Long”;嵌套异常是java.lang.NumberFormatException:对于输入字符串:“{cid}(cid=${customer.id})”

  • 我有Spring acpect,它会在我的应用程序中的每个控制器方法周围触发。在方面的主体中,我想访问方法签名中声明的所有请求参数。有没有一种简单的方法可以避免反思?

  • 谁能建议我该怎么做才能绕过这个问题?我以为Spring会把第一个破折号之前的任何东西作为ID,把后面的任何东西作为名称,但事实并非如此。 如果我使用/product/1-name执行GET,它工作得很好。如果path变量包含破折号,这似乎是一种奇怪的行为。 谢谢

  • 问题内容: 我正在尝试通过常规函数访问全局变量,这可能吗? 我已经使用$ rootScope设置了一些变量,并且我试图通过回调函数来访问它。从控制器调用此回调。我不想传递该回调。 有什么办法可以访问吗? 我愿意使用服务。 请提出建议。 谢谢 我试图按以下方式访问rootScope: 我的服务是: 它在updateStatus fn下显示isFBLoggedin为true,但未反映在视图上 我正在打