我试图POST在spring框架中测试方法,但我一直都在犯错误.
我第一次尝试这个测试:
this.mockMvc.perform(post("/rest/tests").
param("id", "10").
param("width","25")
)
.andDo(MockMvcResultHandlers.print())
.andExpect(status().isOk());
Run Code Online (Sandbox Code Playgroud)
并得到以下错误:
org.springframework.http.converter.HttpMessageNotReadableException
然后我尝试修改测试如下:
this.mockMvc.perform(post("/rest/tests/").
content("{\"id\":10,\"width\":1000}"))
.andDo(MockMvcResultHandlers.print())
.andExpect(status().isOk());
Run Code Online (Sandbox Code Playgroud)
但得到以下错误:
org.springframework.web.HttpMediaTypeNotSupportedException
我的控制器是:
@Controller
@RequestMapping("/rest/tests")
public class TestController {
@Autowired
private ITestService testService;
@RequestMapping(value="", method=RequestMethod.POST)
@ResponseStatus(value = HttpStatus.OK)
public void add(@RequestBody Test test)
{
testService.save(test);
}
}
Run Code Online (Sandbox Code Playgroud)
当Test类有两个字段成员:id和width.简而言之,我无法为控制器设置参数.
设置参数的正确方法是什么?
以下是我的方案,虽然我已经实现了所需的输出,但我希望它是一个体面和优化的代码.
String arr[]={"we","er","rtt","yu","uu","ii"};
StringBuilder strcat = new StringBuilder();
for(int i1=0;i1<arr.length;i1++)
{
// Some processing
strcat.append(arr[i1]);
if(arr.length-1!=i1)
{
strcat.append(",");
}
}
System.out.println("Value:"+strcat);
Run Code Online (Sandbox Code Playgroud)
我有String[]数组和一些处理,处理后我想用逗号(,)追加值.问题是逗号,它也附加到最后的值,我不想要,我已经应用了一个逻辑.我不知道它是否正确.但输出是正确的.如果我错了,请纠正我,并建议是否有任何其他方法可以实现.
如果我尝试减去1到29天,则返回日期是正确的,但如果我尝试减去超过30天,则返回日期是错误的.谁能解释我哪里出错?
public class MapTesting {
public static void main(String[] args) {
Date dNow = new Date( );
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-dd-MM");
try {
Date date = ft.parse("2011-01-10");
Date su=new Date(date.getTime()-30*24*3600*1000);
System.out.println(su);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud) 我理解的部分,${user.configuredName}但我无法理解或在谷歌上找到之后的部分,:ABC谁能解释一下它的作用?我的理解是这${user.configuredName}将使用messageSource.
<constructor-arg value="${user.configuredName:ABC}"/>
Run Code Online (Sandbox Code Playgroud) 因为我的知识集基本上有两个方法equals()和hashcode(),基于它确定值包含的是相等的并避免重复输入,但在程序之下我感到困惑,甚至包装类也有两个方法被覆盖然后为什么它接受重复的价值?
码:
Collection col=new LinkedHashSet();
col.add(new Long(65));
col.add(new Byte((byte) 65));
col.add(new Integer(65));
col.add("A");
System.out.println(col);
Run Code Online (Sandbox Code Playgroud)
答案:[65,65,65,A]但我预计[65,A]
我有一个名为UrlControllerThe class的类,如:
public class UrlController {
private static final String BASE_URL = "http://api.site.mil/";
private static Retrofit retrofit;
private UrlController() {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
public static Retrofit getRetrofit() {
return retrofit;
}
}
Run Code Online (Sandbox Code Playgroud)
我应该检查if(retrofit==null)的getRetrofit()方法,或者它始终没有空?
如果您想要加载一个类的多个版本,如果它们实现了共享接口并且位于单独的 JAR 中,则可以为每个版本使用单独的类加载器来执行此操作。
如果您有一个调用本机代码的 JAR,则可以将本机代码的共享库 (DLL) 存储在其 JAR 中,方法是将共享库提取到临时文件,然后使用System.load从临时文件加载该库。
但如果两者都做,会有效吗?如果两个版本的 JAR 都调用本机代码,并且都包含不同版本的共享库,会发生什么情况?
让我们假设两个 JAR 使用不同的临时文件来存储共享库的副本。但是共享库的两个版本都具有调用具有相同声明的本机 (C) 函数的本机代码(但这些函数的实现不同)。JVM/类加载器/会将System.load Java 代码委托给正确的本机代码吗?或者 JVM 会抱怨名称冲突吗?
如果该方案确实失败,我如何使用使用本机代码的类的多个版本?
我正在阅读Java中的Hash Map,我发现Hash Maps是无序的和未排序的.因此,在打印使用时,我们应该以键的任意顺序获取映射System.out.println(HM).例如,以下代码
HashMap<Integer,String> HM = new HashMap<>();
HM.put(16,"hello16");
HM.put(6, "hello6");
HM.put(1, "hello1");
Run Code Online (Sandbox Code Playgroud)
打印{16=hello16, 1=hello1, 6=hello6}这是一个明显随机的键序.但是当我替换HM.put(16,"hello16");with时HM.put(15,"hello15");,它会按键的自然顺序打印映射,这是令人惊讶的,似乎不太可能:
{1=hello1, 6=hello6, 15=hello15}
Run Code Online (Sandbox Code Playgroud)
我问了一位朋友,他说这与HashMap的初始容量(= 16)有关,但他无法清楚地解释.任何人都可以用这个特定的例子解释输出中的这种差异.
我在单元测试中遇到了这个问题。
执行后:
List<Card> cleanCards = cards.subList(0, cards.size() - difference);
Run Code Online (Sandbox Code Playgroud)
以下断言给了我一个 ConcurrentModificationException:
assertEquals(limit, cleanCards.size());
Run Code Online (Sandbox Code Playgroud)
错误描述
java.util.ConcurrentModificationException
at java.util.ArrayList$SubList.size(ArrayList.java:1057)
Run Code Online (Sandbox Code Playgroud)
据我所知,'size()' 方法不会对列表进行结构性更改。我在这里错过了什么吗?
使用以下命令以守护程序模式启动时,如何从 ZAP 代理扫描中排除某些 URL:
zap.sh -daemon -host 0.0.0.0 -port 8090 -config api.addrs.addr.name=.* -config api.addrs.addr.regex=true -config api.disablekey=true
Run Code Online (Sandbox Code Playgroud)
我可以设置任何参数或配置参数来排除某些 URL 吗?
我正在使用官方 docker image owasp/zap2docker-stable:latest。
java ×7
spring ×2
unit-testing ×2
classloader ×1
datetime ×1
hashmap ×1
http ×1
owasp ×1
set ×1
spring-el ×1
spring-mvc ×1
static ×1
zap ×1