是否有一种Groovier方式来子串?

时间:2012-05-28 04:04:34

标签: java http groovy

这些天我使用的更加时髦,我遇到了一个问题,我想把子字符串带到一个已知字符。简而言之,我正在尝试从HTTP标头中获取会话cookie。我的代码是这样的:

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

其中connection是对URLConnection的引用。如果没有额外的操作,我会得到像"[JSESSIONID=72Q4TCEEDC21GX9152E7702A23DC3854E; Path=/; Secure]"这样的值。最终结果是预期的会话ID "JSESSIONID=72Q4TCEEDC21GX9152E7702A23DC3854E"。但我不禁想到必须有一个更加时髦的方式来解决这个问题。简而言之,我错过了一个substringToString(';'),我想我至少可以用另一种语言看到它。总的来说,我认为在没有其他路径和安全措辞的情况下抓取cookie可能有4-5种更好的方法。

1 个答案:

答案 0 :(得分:2)

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

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

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

以上方式适用于控制器。从服务层你需要先做这样的事情:

def request = RequestContextHolder.currentRequestAttributes().request

虽然我不建议这样做。