java - 有没有更 Groovier 的子串方式?

标签 java http groovy

这些天我使用了更多groovy,并且遇到了一个问题,我想将子字符串提升到已知字符。简而言之,我试图从 HTTP header 中获取 session cookie。我的代码像这样丑陋:

def cookie = connection.headerFields.find{ it.key =='Set-Cookie'}.value[0]
cookie = cookie[0..cookie.indexOf(';')-1]

其中连接是对 URLConnection 的引用。如果没有额外的操作,我会得到一个类似 "[JSESSIONID=72Q4TCEEDC21GX9152E7702A23DC3854E; Path=/; Secure]" 的值。最终结果是预期的 session ID "JSESSIONID=72Q4TCEEDC21GX9152E7702A23DC3854E"。但我忍不住想一定有一种更绝妙的方法来解决这个问题。简而言之,我缺少一个 substringToString(';') 我认为我可能在至少一种其他语言中见过它。总的来说,我认为可能有 4-5 种更好的方法来获取 cookie,而无需其他路径和安全废话。

最佳答案

看来你让事情变得复杂了。为什么你不能这样做:

//  if you want all cookies
def cookies = request.cookies  

// if you need a particular cookie
def cookie = request.cookies.find { it == 'cookie-name' } 

上述方法适用于 Controller 。从服务层,您需要首先执行以下操作:

def request = RequestContextHolder.currentRequestAttributes().request

尽管我不建议这样做。

关于java - 有没有更 Groovier 的子串方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10779218/

相关文章:

http - OAuth 2.0 授权 header

java - Grails 将排序列表提供给 findAllByIdInList

node.js - Node.js 可以强制更大的 POST 请求 block 大小吗?

java - Groovy - 不明确的处理程序方法

grails - 如何让 Spock 重试失败的 Geb 测试?

java - Spring REST/Swagger/Postman - 正在下载损坏/空白文件

java - Spring安全失败JdbcClientDetailsS​​ervice错误

java - 分页控件和表格之间的填充

java - 缺少在 Java 中创建结构 vector 的帮助程序

http - 当用户在浏览器中返回时,是否有一种跨浏览器的方法可以使上一页实际从服务器加载内容?