LinkedHashMap<>依赖
时间: 2023-10-28 15:04:44 浏览: 36
LinkedHashMap<>是Java中的一个类,用于实现Map接口并提供有序的键值对存储和访问。如果你想在你的项目中使用LinkedHashMap,你需要在你的项目中添加相应的依赖。
如果你使用的是Maven作为项目构建工具,在你的pom.xml文件中添加以下依赖项:
```xml
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
```
如果你使用的是Gradle作为项目构建工具,在你的build.gradle文件中添加以下依赖项:
```groovy
implementation 'org.apache.commons:commons-collections4:4.4'
```
这将添加Apache Commons Collections库到你的项目中,其中包含了LinkedHashMap类的实现。记得根据你的项目需求调整版本号。
请注意,LinkedHashMap也是Java标准库中的一部分,所以你无需添加额外的依赖项来使用它。上述所提到的依赖项是为了演示如何使用LinkedHashMap的特定版本或者在没有Java标准库的情况下使用LinkedHashMap。
相关问题
当前已知URL地址为“www.test.com”。 token生成方式为该代码段: private String buildToken( String currentTeamMemberName,String userId) { Map<String, String> kv = new LinkedHashMap<>(); kv.put("userId", userId); kv.put("currentTeamMemberName",currentTeamMemberName); kv.put("salt", "salt"); String signature = Sha1Crypto.encode(JsonHelper.getInstance().write(kv)); kv.remove("salt"); kv.put("signature", signature); kv.put("ts", System.currentTimeMillis()+""); String offset = Configuration.getInstance().getProperty("indicatorPlatformOffset"); if(offset == null || offset.trim().length() == 0){ offset = 1000 * 60 * 5 + ""; } kv.put("offset", offset); String token = JsonHelper.getInstance().write(kv);//Map转JSON String base64Token = Base64Codec.encode(token);//base64编码 return base64Token; } 需要编写一个接口,已知参数为userId(单点账户),currentTeamMemberName(账号所属团队的成员名称),offset(偏移量)值为300000; 接口将生成的token添加到cookie中,请求已知的URL地址,供其进行校验。 其地址的校验方法为: private boolean checkRefererTokenStr(String tokenStr) { try{ Map token = JsonHelper.getInstance().read(Base64Codec.decode(tokenStr), Map.class); String userId = (String) token.get("userId"); Map<String, String> signChecker = new LinkedHashMap<>(); signChecker.put("userId", userId); signChecker.put(CURRENT_TEAM_MEMBER_NAME, token.get(CURRENT_TEAM_MEMBER_NAME).toString()); signChecker.put("salt", "salt"); String sign = Sha1Crypto.encode(JsonHelper.getInstance().write(signChecker)); return sign.equals(token.get("signature")); }catch (Exception e){ log.error("验证单点集成页面请求referer失败!", e); } return false; } 请编写接口实现该需求
以下是一个简单的Java实现,可以作为一个Servlet或者Spring MVC Controller来使用:
```java
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TokenController {
private static final String CURRENT_TEAM_MEMBER_NAME = "currentTeamMemberName";
@RequestMapping("/generateToken")
public String generateToken(HttpServletRequest request, HttpServletResponse response,
@RequestParam("userId") String userId,
@RequestParam("currentTeamMemberName") String currentTeamMemberName,
@RequestParam(value = "offset", defaultValue = "300000") long offset) {
Map<String, String> kv = new LinkedHashMap<>();
kv.put("userId", userId);
kv.put(CURRENT_TEAM_MEMBER_NAME, currentTeamMemberName);
kv.put("salt", "salt");
String signature = Sha1Crypto.encode(JsonHelper.getInstance().write(kv));
kv.remove("salt");
kv.put("signature", signature);
kv.put("ts", System.currentTimeMillis() + "");
kv.put("offset", offset + "");
String token = JsonHelper.getInstance().write(kv);
String base64Token = Base64Codec.encode(token);
Cookie cookie = new Cookie("token", base64Token);
cookie.setPath("/");
response.addCookie(cookie);
return "Token generated successfully!";
}
@RequestMapping("/validateToken")
public String validateToken(HttpServletRequest request, HttpServletResponse response) {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if (cookie.getName().equals("token")) {
String base64Token = cookie.getValue();
String token = Base64Codec.decode(base64Token);
if (checkRefererTokenStr(token)) {
return "Token is valid!";
} else {
return "Token is invalid!";
}
}
}
}
return "Token not found!";
}
private boolean checkRefererTokenStr(String tokenStr) {
try {
Map<String, Object> token = JsonHelper.getInstance().read(Base64Codec.decode(tokenStr), Map.class);
String userId = (String) token.get("userId");
Map<String, String> signChecker = new LinkedHashMap<>();
signChecker.put("userId", userId);
signChecker.put(CURRENT_TEAM_MEMBER_NAME, token.get(CURRENT_TEAM_MEMBER_NAME).toString());
signChecker.put("salt", "salt");
String sign = Sha1Crypto.encode(JsonHelper.getInstance().write(signChecker));
return sign.equals(token.get("signature"));
} catch (Exception e) {
log.error("验证单点集成页面请求referer失败!", e);
}
return false;
}
}
```
这里使用了Spring MVC的注解来定义了两个接口:`/generateToken` 和 `/validateToken`,其中 `/generateToken` 接受三个参数:`userId`、`currentTeamMemberName` 和 `offset`,并生成一个token添加到Cookie中;`/validateToken` 从Cookie中读取token,并验证其有效性。
为了简化代码,这里使用了一些第三方库,你需要在项目中添加这些库的依赖:
- org.springframework:spring-web
- com.fasterxml.jackson.core:jackson-core
- com.fasterxml.jackson.core:jackson-databind
- org.apache.commons:commons-lang3
项目中有该段代码:private String buildToken( String currentTeamMemberName,String userId) { Map<String, String> kv = new LinkedHashMap<>(); kv.put("userId", userId); kv.put("currentTeamMemberName",currentTeamMemberName); kv.put("salt", "salt"); String signature = Sha1Crypto.encode(JsonHelper.getInstance().write(kv)); kv.remove("salt"); kv.put("signature", signature); kv.put("ts", System.currentTimeMillis()+""); String offset = Configuration.getInstance().getProperty("indicatorPlatformOffset"); if(offset == null || offset.trim().length() == 0){ offset = 1000 * 60 * 5 + ""; } kv.put("offset", offset); String token = JsonHelper.getInstance().write(kv);//Map转JSON String base64Token = Base64Codec.encode(token);//base64编码 return base64Token; } 我的pom中未引入依赖,导致Sha1Crypto、JsonHelper和Base64Codec报红,请分析该问题,并给出详细的解决方法,pom文件中该引入什么依赖来解决问题
该问题的原因是在项目中使用了Sha1Crypto、JsonHelper和Base64Codec这些类,但是在pom文件中没有引入相关的依赖,导致编译器无法找到这些类。要解决该问题,需要将相关依赖添加到pom文件中。
其中Sha1Crypto、JsonHelper和Base64Codec这三个类的依赖可能不是标准库中的,可能是自定义的依赖或者第三方依赖。可以根据类名查找相应的依赖。
一些常见的依赖如下:
- Sha1Crypto可能需要引入commons-codec或者Bouncy Castle的依赖。
- JsonHelper可能需要引入jackson或者gson的依赖。
- Base64Codec可能需要引入commons-codec或者java.util.Base64的依赖。
需要根据具体情况来确定依赖的名称和版本,可以在Maven中央仓库中搜索相应的依赖。
例如,如果需要引入commons-codec,则需要在pom文件的dependencies节点中添加以下内容:
```xml
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.15</version>
</dependency>
```
同样的,如果需要引入jackson,则需要在pom文件的dependencies节点中添加以下内容:
```xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
```
如果需要引入Bouncy Castle,则需要在pom文件的dependencies节点中添加以下内容:
```xml
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.68</version>
</dependency>
```
引入依赖后,重新编译项目即可解决该问题。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)