在本文中,我们将给您介绍关于org.springframework.test.web.servlet.result.MockMvcResultMatchers的实例源码的详细内容,并且为您解答看透sp
在本文中,我们将给您介绍关于org.springframework.test.web.servlet.result.MockMvcResultMatchers的实例源码的详细内容,并且为您解答看透springmvc源代码分析与实践的相关问题,此外,我们还将为您提供关于java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet、javax.servlet.ServletException:类 [org.glassfish.jersey.servlet.ServletContainer] 不是 Servlet、maven org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter、org.springframework.boot.test.autoconfigure.web.servlet.MockMvcBuilderCustomizer的实例源码的知识。
本文目录一览:- org.springframework.test.web.servlet.result.MockMvcResultMatchers的实例源码(看透springmvc源代码分析与实践)
- java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
- javax.servlet.ServletException:类 [org.glassfish.jersey.servlet.ServletContainer] 不是 Servlet
- maven org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter
- org.springframework.boot.test.autoconfigure.web.servlet.MockMvcBuilderCustomizer的实例源码
org.springframework.test.web.servlet.result.MockMvcResultMatchers的实例源码(看透springmvc源代码分析与实践)
@Test public void findAllvendorstest(){ List<String> vendorNames = new ArrayList<String>(); for(vendorEntity vendorEntity : vendorEntityTestRig.getvendorEntitiesMap().values()){ vendorNames.add(vendorEntity.getvendorName()); } try { //http://localhost:8080/vendors/search/getvendorByvendorNameContainsIgnoreCase?vendorName=red%20hat mockmvc.perform(get("/vendors")) .andExpect(mockmvcResultMatchers.status().isOk()) .andExpect(mockmvcResultMatchers.jsonPath("_embedded.vendors",hasSize(vendorEntityTestRig.getvendorEntitiesMap().size()))) .andExpect(mockmvcResultMatchers.jsonPath("_embedded.vendors[*].vendorName",containsInAnyOrder(vendorNames.toArray()))) .andDo(print()); } catch (Exception e) { e.printstacktrace(); } }
@Test @WithAdminUser public void siteSettingsUpdated_UpdatesSiteOptions() throws Exception { RequestBuilder request = post("/admin/site/settings") .param(ISiteOption.SITE_NAME,siteOptionMapDTO.getSiteName()) .param(ISiteOption.SITE_DESCRIPTION,siteOptionMapDTO.getSiteDescription()) .param(ISiteOption.ADD_GOOGLE_ANALYTICS,String.valueOf(siteOptionMapDTO.getAddGoogleAnalytics())) .param(ISiteOption.GOOGLE_ANALYTICS_TRACKING_ID,siteOptionMapDTO.getGoogleAnalyticsTrackingId()) .param(ISiteOption.USER_REGISTRATION,String.valueOf(siteOptionMapDTO.getUserRegistration())) .with(csrf()); mvc.perform(request) .andExpect(model().attributeHasNoErrors()) .andExpect(mockmvcResultMatchers.flash().attributeExists("FeedbackMessage")) .andExpect(redirectedUrl("/admin/site/settings")); }
@Test public void updatePostWithValidData_RedirectsToPermalinkPage() throws Exception { String newTitle = "New Title for updatePostWithValidData_RedirectsToPermalinkPage Test"; Post post = postService.getPostById(1L); RequestBuilder request = post("/admin/posts/update") .param("postId","1") .param("displayType",String.valueOf(post.getdisplayType())) .param("postContent",post.getPostContent()) .param("twitterCardType",post.getPostMeta().getTwitterCardType().name()) .param("postTitle",newTitle) .param("tags","updatePostWithValidData1,updatePostWithValidData2") .with(csrf()); mvc.perform(request) .andExpect(model().hasNoErrors()) .andExpect(mockmvcResultMatchers.flash().attributeExists("FeedbackMessage")) .andExpect(redirectedUrl("/admin/posts")); Post updatedPost = postService.getPostById(1L); assert (updatedPost.getPostTitle().equals(newTitle)); }
@Test public void testGetUser() throws Exception { final MockHttpServletRequestBuilder getRequest = get(UserController.REQUEST_PATH_API_USERS + "/590f86d92449343841cc2c3f") .accept(MediaType.APPLICATION_JSON); final MvcResult mvcResult = mockmvc .perform(getRequest) .andExpect(mockmvcResultMatchers.request().asyncStarted()) .andReturn(); mockmvc .perform(asyncdispatch(mvcResult)) .andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)) .andExpect(jsonPath("$.lastName").value("One")); }
@Test public void testHttpGet() throws Exception { mockSdk.requestContextExecutor().execute(new Executable() { @Override public void execute() throws Exception { ResultActions action = mockmvc.perform(mockmvcRequestBuilders .put("/callback/tenant/" + TENANT_ID_1)); action.andExpect(mockmvcResultMatchers.status().is2xxSuccessful()); action = mockmvc.perform(mockmvcRequestBuilders .get("/cost-center")); action.andExpect(mockmvcResultMatchers.status().isOk()); action = mockmvc.perform(mockmvcRequestBuilders .delete("/callback/tenant/" + TENANT_ID_1)); action.andExpect(mockmvcResultMatchers.status().is2xxSuccessful()); } }); }
@Test public void testHttpPost() throws Exception { final String newCostCenterjson = buildcostCenterjson(COSTCENTER_ID_1); mockSdk.requestContextExecutor().execute(new Executable() { @Override public void execute() throws Exception { ResultActions action = mockmvc.perform(mockmvcRequestBuilders .put("/callback/tenant/" + TENANT_ID_1)); action.andExpect(mockmvcResultMatchers.status().is2xxSuccessful()); action = mockmvc .perform(mockmvcRequestBuilders .request(HttpMethod.POST,"/cost-center") .contentType(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON) .content(newCostCenterjson)); action.andExpect(mockmvcResultMatchers.status().isOk()); action = mockmvc.perform(mockmvcRequestBuilders .delete("/callback/tenant/" + TENANT_ID_1)); action.andExpect(mockmvcResultMatchers.status().is2xxSuccessful()); } }); }
@Test public void testHttpAddFailure() throws Exception { final SapClient sapClient = mockSdk.getErpSystem().getSapClient(); final String newCostCenterjson = getNewCostCenterasJson(EXISTING_COSTCENTER_ID); // {"costcenter":"012346578","description":"demo","validFrom":...} // cost center already exists in database mockSdk.requestContextExecutor().execute(new Executable() { @Override public void execute() throws Exception { mockmvc .perform(mockmvcRequestBuilders .request(HttpMethod.POST,"/api/v1/rest/client/"+sapClient+"/controllingarea/"+DEMO_CONTROLLING_AREA+"/costcenters") .contentType(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON) .content(newCostCenterjson)) .andExpect(mockmvcResultMatchers .status() .is5xxServerError()); } }); }
@Test public void testHttpAddSuccess() throws Exception { final SapClient sapClient = mockSdk.getErpSystem().getSapClient(); final String newCostCenterjson = getNewCostCenterasJson(DEMO_COSTCENTER_ID); final RequestBuilder newCostCenterRequest = mockmvcRequestBuilders .request(HttpMethod.POST,"/api/v1/rest/client/"+sapClient+"/controllingarea/"+DEMO_CONTROLLING_AREA+"/costcenters") .param("testRun","true") .contentType(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON) .content(newCostCenterjson); mockSdk.requestContextExecutor().execute(new Executable() { @Override public void execute() throws Exception { mockmvc.perform(newCostCenterRequest).andExpect(mockmvcResultMatchers.status().isOk()); } }); }
@Test public void getItemAtALocationShouldReturnAllItemsAtThisLocation() throws Exception { String expectedItemDescription = "Teller"; given(this.itemService.getItemsByLocation("Regal A")) .willReturn(Arrays.asList(new Item(1l,"Teller","Regal A",LocalDate.Now()))); // Testen von JsonPath // http://jsonpath.com this.mvc.perform(get("/item/Regal A") .accept(MediaType.APPLICATION_JSON_VALUE)) .andExpect(status().isOk()) .andExpect(mockmvcResultMatchers.jsonPath("$.[0].description").value(expectedItemDescription)); }
@Test public void getItemsAtALocationShouldReturnAllItemsAtThisLocation() throws Exception { String expectedItemDescription1 = "Teller"; String expectedItemDescription2 = "Untertasse"; given(this.itemService.getItemsByLocation("Regal A")) .willReturn(Arrays.asList(new Item(1l,LocalDate.Now()),new Item(1l,"Untertasse",LocalDate.Now()))); // Testen von JsonPath // http://jsonpath.com this.mvc.perform(get("/item/Regal A").accept(MediaType.APPLICATION_JSON_VALUE)) .andExpect(status().isOk()) .andExpect(mockmvcResultMatchers.jsonPath("$.[0].description").value(expectedItemDescription1)) .andExpect(mockmvcResultMatchers.jsonPath("$.[1].description").value(expectedItemDescription2)); }
@Test public void updateShouldReturnTheUpdatedItemAnd200() throws Exception { Item item = new Item(1l,null); given(this.itemService.update(any(Item.class))).willReturn(item); ObjectMapper mapper = new ObjectMapper(); String req = mapper.writeValueAsstring(item); this.mvc.perform(put("/item",item) .contentType(MediaType.APPLICATION_JSON_VALUE) .accept(MediaType.APPLICATION_JSON) .content(req)) .andExpect(status().isOk()) .andExpect(mockmvcResultMatchers.jsonPath("$.location").value(item.getLocation())); }
@Test public void createItem() throws Exception { Item item = new Item(1l,null); ObjectMapper mapper = new ObjectMapper(); String req = mapper.writeValueAsstring(item); String expectedItemDescription = "Teller"; when(itemService.create(any(Item.class))).thenReturn(item); this.mvc.perform(post("/item",item) .contentType(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON) .content(req)) .andExpect(status().isCreated()) .andExpect(mockmvcResultMatchers.jsonPath("$.description").value(expectedItemDescription)); }
@Test public void testAddBook() { try { mockmvc.perform(mockmvcRequestBuilders.post("/addBook.htm") .contentType(MediaType.APPLICATION_FORM_URLENCODED) .param("bookName","Book_test") .param("author","author_test") .param("description","adding book for test") .param("ISBN","1234") .param("price","9191") .param("publication","This is the test publication") .requestAttr("book",new Book())) .andExpect(mockmvcResultMatchers.view().name("display")) .andExpect(mockmvcResultMatchers.model().attribute("auth_name","author_test")) .andDo(mockmvcResultHandlers.print()); ; } catch (Exception e) { // Todo: handle exception fail(e.getMessage()); } }
@Test public void testAddBook() { try { mockmvc.perform(mockmvcRequestBuilders.post("/addBook.htm") .contentType(MediaType.APPLICATION_FORM_URLENCODED) .param("bookName","author_test")) .andDo(mockmvcResultHandlers.print()); ; } catch (Exception e) { // Todo: handle exception fail(e.getMessage()); } }
@Test public void testAddBook_Form_validation() { try { mockmvc.perform(mockmvcRequestBuilders.post("/addBook.htm") .contentType(MediaType.APPLICATION_FORM_URLENCODED) .param("bookName","Book_test") .param("author","author_test") .param("description","adding book for test") .param("ISBN","1234") .param("price","9191") .param("publication","This is the test publication") .requestAttr("book",new Book())) .andExpect(mockmvcResultMatchers.view().name("bookForm")) .andExpect( mockmvcResultMatchers .model() .attributeHasErrors("book")) .andDo(mockmvcResultHandlers.print()); } catch (Exception e) { // Todo: handle exception fail(e.getMessage()); e.printstacktrace(); } }
private List<ProjectVO> loadMy() throws Exception { ResultActions actions = mvc() .perform(get(URL_LOAD_MY_PROJECTS) .contentType(EXPECTED_CONTENT_TYPE)) .andExpect(mockmvcResultMatchers.status().isOk()) .andExpect(mockmvcResultMatchers.content().contentType(EXPECTED_CONTENT_TYPE)) .andExpect(mockmvcResultMatchers.jsonPath(JPATH_PAYLOAD).exists()) .andExpect(mockmvcResultMatchers.jsonPath(JPATH_STATUS).value(ResultStatus.OK.name())); actions.andDo(mockmvcResultHandlers.print()); ResponseResult<List<ProjectVO>> myProjects = getobjectMapper() .readValue(actions.andReturn().getResponse().getContentAsByteArray(),getTypeFactory().constructParametrizedType(ResponseResult.class,ResponseResult.class,getTypeFactory().constructParametrizedType(List.class,List.class,ProjectVO.class))); Assert.assertNotNull(myProjects.getPayload()); Assert.assertFalse(myProjects.getPayload().isEmpty()); return myProjects.getPayload(); }
private ProjectVO loadProject(long projcetId) throws Exception { ResultActions actions = mvc() .perform(get(String.format(URL_LOAD_PROJECT,projcetId)).contentType(EXPECTED_CONTENT_TYPE)) .andExpect(mockmvcResultMatchers.status().isOk()) .andExpect(mockmvcResultMatchers.content().contentType(EXPECTED_CONTENT_TYPE)) .andExpect(mockmvcResultMatchers.jsonPath(JPATH_PAYLOAD).exists()) .andExpect(mockmvcResultMatchers.jsonPath(JPATH_STATUS).value(ResultStatus.OK.name())); actions.andDo(mockmvcResultHandlers.print()); ResponseResult<ProjectVO> res = getobjectMapper() .readValue(actions.andReturn().getResponse().getContentAsByteArray(),ProjectVO.class)); ProjectVO loadedProject = res.getPayload(); Assert.assertNotNull(loadedProject); return loadedProject; }
@Test @Transactional(propagation = Propagation.required,rollbackFor = Throwable.class) public void testSearchGenesInProject() throws Exception { GenesearchQuery genesearchQuery = new GenesearchQuery(); genesearchQuery.setSearch("ENS"); genesearchQuery.setVcfIds(Collections.singletonList(vcfFile.getId())); ResultActions actions = mvc() .perform(post(URL_FILTER_SEARCH_GEnes).content( getobjectMapper().writeValueAsstring(genesearchQuery)).contentType(EXPECTED_CONTENT_TYPE)) .andExpect(mockmvcResultMatchers.status().isOk()) .andExpect(mockmvcResultMatchers.content().contentType(EXPECTED_CONTENT_TYPE)) .andExpect(mockmvcResultMatchers.jsonPath(JPATH_PAYLOAD).exists()) .andExpect(mockmvcResultMatchers.jsonPath(JPATH_STATUS).value(ResultStatus.OK.name())) .andDo(mockmvcResultHandlers.print()); ResponseResult<Set<String>> geneNamesAvailable = getobjectMapper() .readValue(actions.andReturn().getResponse().getContentAsByteArray(),getTypeFactory().constructParametrizedType(Set.class,Set.class,String.class))); Assert.assertFalse(geneNamesAvailable.getPayload().isEmpty()); }
@Test @Transactional(propagation = Propagation.required,rollbackFor = Throwable.class) public void testGetFieldInfo() throws Exception { ResultActions actions = mvc() .perform(post(URL_FILTER_INFO).content(getobjectMapper().writeValueAsBytes( Collections.singletonList(vcfFile.getId()))).contentType(EXPECTED_CONTENT_TYPE)) .andExpect(mockmvcResultMatchers.status().isOk()) .andExpect(mockmvcResultMatchers.content().contentType(EXPECTED_CONTENT_TYPE)) .andExpect(mockmvcResultMatchers.jsonPath(JPATH_PAYLOAD).exists()) .andExpect(mockmvcResultMatchers.jsonPath(JPATH_STATUS).value(ResultStatus.OK.name())); actions.andDo(mockmvcResultHandlers.print()); ResponseResult<VcfFilterInfo> infoRes = getobjectMapper().readValue( actions.andReturn().getResponse().getContentAsByteArray(),VcfFilterInfo.class)); Assert.assertNotNull(infoRes.getPayload()); Assert.assertFalse(infoRes.getPayload().getAvailableFilters().isEmpty()); Assert.assertNull(infoRes.getPayload().getInfoItemmap()); Assert.assertFalse(infoRes.getPayload().getInfoItems().isEmpty()); }
@Test @Transactional(propagation = Propagation.required,rollbackFor = Throwable.class) public void testGroupVariations() throws Exception { VcfFilterForm vcfFilterForm = new VcfFilterForm(); vcfFilterForm.setVcfFileIds(Collections.singletonList(vcfFile.getId())); ResultActions actions = mvc() .perform(post(URL_FILTER_GROUP).content(getobjectMapper().writeValueAsstring(vcfFilterForm)) .param("groupBy","VARIATION_TYPE") .contentType(EXPECTED_CONTENT_TYPE)) .andExpect(mockmvcResultMatchers.status().isOk()) .andExpect(mockmvcResultMatchers.content().contentType(EXPECTED_CONTENT_TYPE)) .andExpect(mockmvcResultMatchers.jsonPath(JPATH_PAYLOAD).exists()) .andExpect(mockmvcResultMatchers.jsonPath(JPATH_STATUS).value(ResultStatus.OK.name())); actions.andDo(mockmvcResultHandlers.print()); ResponseResult<List<Group>> groupRes = getobjectMapper() .readValue(actions.andReturn().getResponse().getContentAsByteArray(),Group.class))); Assert.assertFalse(groupRes.getPayload().isEmpty()); }
@Ignore @Test @Transactional(propagation = Propagation.REQUIRES_NEW,rollbackFor = Exception.class) public void testSaveAndGetTrackDataGA4GH() throws Exception { FileRegistrationRequest request; ResultActions actions; // 1. tries to save a genome with all parameters request = new FileRegistrationRequest(); request.setPath(REFERENCE_SET_ID); request.setType(BiologicalDataItemResourceType.GA4GH); request.setName(PLAIN_GENOME_NAME); actions = mvc() .perform(post(REGISTER_GENOME_IN_FASTA_FORMAT).content(getobjectMapper().writeValueAsstring(request)) .contentType(EXPECTED_CONTENT_TYPE)) .andExpect(mockmvcResultMatchers.status().isOk()) .andExpect(mockmvcResultMatchers.content().contentType(EXPECTED_CONTENT_TYPE)) .andExpect(mockmvcResultMatchers.jsonPath(JPATH_PAYLOAD).exists()) .andExpect(mockmvcResultMatchers.jsonPath(JPATH_STATUS).value(ResultStatus.OK.name())); final Reference ref2 = parseReference(actions.andReturn().getResponse().getContentAsByteArray()).getPayload(); Assert.assertNotNull("Genome ID shouldn't be null.",ref2.getId()); Assert.assertEquals("Unexpected auto-generated name for a genome.",PLAIN_GENOME_NAME,ref2.getName()); actions.andDo(print()); }
@Test public void testDeleteMockResponse() throws Exception { final RestProjectDto restProjectDto = RestProjectDtoGenerator.generateRestProjectDto(); final RestApplicationDto restApplicationDto = RestApplicationDtoGenerator.generateRestApplicationDto(); final RestResourceDto restResourceDto = RestResourceDtoGenerator.generateRestResourceDto(); final RestMethodDto restMethodDto = RestMethodDtoGenerator.generateRestMethodDto(); final RestMockResponseDto restMockResponseDto = RestMockResponseDtoGenerator.generateRestMockResponseDto(); when(serviceProcessor.process(any(ReadRestMockResponseInput.class))).thenReturn(new ReadRestMockResponSEOutput(restMockResponseDto)); final MockHttpServletRequestBuilder message = mockmvcRequestBuilders.get(SERVICE_URL + PROJECT + SLASH + restProjectDto.getId() + SLASH + APPLICATION + SLASH + restApplicationDto.getId() + SLASH + RESOURCE + SLASH + restResourceDto.getId() + SLASH + METHOD + SLASH + restMethodDto.getId() + SLASH + RESPONSE + SLASH + restMockResponseDto.getId() + SLASH + DELETE); mockmvc.perform(message) .andExpect(mockmvcResultMatchers.status().isOk()) .andExpect(mockmvcResultMatchers.model().size(5 + GLOBAL_VIEW_MODEL_COUNT)) .andExpect(mockmvcResultMatchers.forwardedUrl(INDEX)) .andExpect(mockmvcResultMatchers.model().attribute(PARTIAL,PAGE)) .andExpect(mockmvcResultMatchers.model().attribute(REST_PROJECT_ID,restProjectDto.getId())) .andExpect(mockmvcResultMatchers.model().attribute(REST_APPLICATION_ID,restApplicationDto.getId())) .andExpect(mockmvcResultMatchers.model().attribute(REST_RESOURCE_ID,restResourceDto.getId())) .andExpect(mockmvcResultMatchers.model().attribute(REST_METHOD_ID,restMethodDto.getId())) .andExpect(mockmvcResultMatchers.model().attribute(REST_MOCK_RESPONSE,restMockResponseDto)); }
@Test public void testcreateuser() throws Exception { final List<SearchResult> searchResults = new ArrayList<SearchResult>(); final SearchResult searchResult = new SearchResult(); searchResult.setDescription("Description"); searchResult.setLink("Link"); searchResult.setTitle("Title"); final SearchCommand searchCommand = new SearchCommand(); searchCommand.setQuery("Query"); when(projectServiceFacade.search(any(SearchQuery.class))).thenReturn(searchResults); final MockHttpServletRequestBuilder message = mockmvcRequestBuilders.post(SERVICE_URL,searchCommand); mockmvc.perform(message) .andExpect(mockmvcResultMatchers.status().isOk()) .andExpect(mockmvcResultMatchers.model().size(1 + GLOBAL_VIEW_MODEL_COUNT)) .andExpect(mockmvcResultMatchers.forwardedUrl(INDEX)) .andExpect(mockmvcResultMatchers.model().attribute(PARTIAL,PAGE)) .andExpect(mockmvcResultMatchers.model().attribute(SEARCH_RESULTS,searchResults)); }
@Test public void testGetServiceValid() throws Exception { final RestProjectDto restProjectDto = RestProjectDtoGenerator.generateRestProjectDto(); final RestApplicationDto restApplicationDto = RestApplicationDtoGenerator.generateRestApplicationDto(); final RestResourceDto restResourceDto = RestResourceDtoGenerator.generateRestResourceDto(); when(serviceProcessor.process(isA(ReadRestResourceInput.class))).thenReturn(new ReadRestResourceOutput(restResourceDto)); final MockHttpServletRequestBuilder message = mockmvcRequestBuilders.get(SERVICE_URL + PROJECT + SLASH + restProjectDto.getId() + SLASH + APPLICATION + SLASH + restApplicationDto.getId() + SLASH + RESOURCE + SLASH + restResourceDto.getId()); ResultActions result = mockmvc.perform(message) .andExpect(mockmvcResultMatchers.status().isOk()) .andExpect(mockmvcResultMatchers.model().size(5 + GLOBAL_VIEW_MODEL_COUNT)) .andExpect(mockmvcResultMatchers.forwardedUrl(INDEX)) .andExpect(mockmvcResultMatchers.model().attribute(PARTIAL,restApplicationDto.getId())) .andExpect(mockmvcResultMatchers.model().attribute(REST_RESOURCE,restResourceDto)); RestResourceDto restResourceDtoResponse = (RestResourceDto) result.andReturn().getModelAndView().getModel().get(REST_RESOURCE); String hostAddress = restResourceController.getHostAddress(); }
@Test public void testUpdate() throws Exception { final UserDto userDto = UserDtoGenerator.generateUserDto(); final UpdateCurrentUserOutput updateCurrentUserOutput = new UpdateCurrentUserOutput(userDto); when(serviceProcessor.process(any(UpdateCurrentUserInput.class))).thenReturn(updateCurrentUserOutput); final UpdateCurrentUserCommand updateCurrentUserCommand = new UpdateCurrentUserCommand(); updateCurrentUserCommand.setUser(userDto); final MockHttpServletRequestBuilder message = mockmvcRequestBuilders.post(SERVICE_URL,updateCurrentUserCommand); mockmvc.perform(message) .andExpect(mockmvcResultMatchers.status().isFound()) .andExpect(mockmvcResultMatchers.model().size(1)); }
private ProjectVO loadProject(long projcetId) throws Exception { ResultActions actions = mvc() .perform(get(String.format(URL_LOAD_PROJECT,ProjectVO.class)); ProjectVO loadedProject = res.getPayload(); Assert.assertNotNull(loadedProject); return loadedProject; }
@Test public void testAddWSDLPostLink() throws Exception { final SoapProjectDto soapProjectDto = SoapProjectDtoGenerator.generateSoapProjectDto(); final List<File> files = new ArrayList<>(); final WSDLFileUploadForm uploadForm = new WSDLFileUploadForm(); final List<multipartfile> uploadedFiles = new ArrayList<>(); uploadForm.setFiles(uploadedFiles); when(serviceProcessor.process(any(ReadSoapProjectInput.class))).thenReturn(new ReadSoapProjectOutput(soapProjectDto)); when(fileManager.uploadFiles(anyString())).thenReturn(files); final MockHttpServletRequestBuilder message = mockmvcRequestBuilders.post(SERVICE_URL + SLASH + PROJECT + SLASH + soapProjectDto.getId() + SLASH + ADD + SLASH + WSDL).param("type","link").requestAttr("uploadForm",uploadForm); mockmvc.perform(message) .andExpect(mockmvcResultMatchers.status().isFound()) .andExpect(mockmvcResultMatchers.model().size(1)); Mockito.verify(fileManager,times(1)).uploadFiles(anyString()); }
@Test public void testGetMockResponse() throws Exception { final RestProjectDto restProjectDto = RestProjectDtoGenerator.generateRestProjectDto(); final RestApplicationDto restApplicationDto = RestApplicationDtoGenerator.generateRestApplicationDto(); final RestResourceDto restResourceDto = RestResourceDtoGenerator.generateRestResourceDto(); final RestMethodDto restMethodDto = RestMethodDtoGenerator.generateRestMethodDto(); final RestMockResponseDto restMockResponseDto = RestMockResponseDtoGenerator.generateRestMockResponseDto(); when(serviceProcessor.process(any(ReadRestMockResponseInput.class))).thenReturn(new ReadRestMockResponSEOutput(restMockResponseDto)); final MockHttpServletRequestBuilder message = mockmvcRequestBuilders.get(SERVICE_URL + PROJECT + SLASH + restProjectDto.getId() + SLASH + APPLICATION + SLASH + restApplicationDto.getId() + SLASH + RESOURCE + SLASH + restResourceDto.getId() + SLASH + METHOD + SLASH + restMethodDto.getId() + SLASH + RESPONSE + SLASH + restMockResponseDto.getId()); mockmvc.perform(message) .andExpect(mockmvcResultMatchers.status().isOk()) .andExpect(mockmvcResultMatchers.model().size(6 + GLOBAL_VIEW_MODEL_COUNT)) .andExpect(mockmvcResultMatchers.forwardedUrl(INDEX)) .andExpect(mockmvcResultMatchers.model().attribute(PARTIAL,restMethodDto.getId())) .andExpect(mockmvcResultMatchers.model().attribute(DEMO_MODE,false)) .andExpect(mockmvcResultMatchers.model().attribute(REST_MOCK_RESPONSE,restMockResponseDto)); }
@Test public void getAllUsers_Success() throws Exception { mvc.perform(mockmvcRequestBuilders.request(HttpMethod.GET,"/api/v1/user") .accept(contentType) .contentType(contentType) .header(authHeaderName,token)) .andExpect(mockmvcResultMatchers.status().isOk()) .andExpect(mockmvcResultMatchers.jsonPath("$[0].id",is(user.getId()))) .andExpect(mockmvcResultMatchers.jsonPath("$[0].username",is(user.getUsername()))) .andExpect(mockmvcResultMatchers.jsonPath("$[0].password",is(user.getpassword()))) .andExpect(mockmvcResultMatchers.jsonPath("$[0].createdAt",is(user.getCreatedAt().getTime()))) .andExpect(mockmvcResultMatchers.jsonPath("$[0].updatedAt",is(user.getUpdatedAt().getTime()))) .andExpect(mockmvcResultMatchers.jsonPath("$[0].authorities",is(user.getAuthorities() .stream() .map(Authority::getAuthority) .collect(Collectors.toList())))); }
@Test public void testConfirmDeletationOfMultipleMockResponses() throws Exception { final SoapProjectDto projectDto = SoapProjectDtoGenerator.generateSoapProjectDto(); final SoapPortDto applicationDto = SoapPortDtoGenerator.generateSoapPortDto(); final SoapOperationDto soapOperationDto = SoapOperationDtoGenerator.generateSoapOperationDto(); final SoapMockResponseDto soapMockResponseDto = SoapMockResponseDtoGenerator.generateSoapMockResponseDto(); final DeleteSoapMockResponsesCommand deleteSoapMockResponsesCommand = new DeleteSoapMockResponsesCommand(); deleteSoapMockResponsesCommand.setSoapMockResponses(new ArrayList<SoapMockResponseDto>()); deleteSoapMockResponsesCommand.getSoapMockResponses().add(soapMockResponseDto); when(serviceProcessor.process(any(DeleteSoapMockResponseInput.class))).thenReturn(new DeleteSoapMockResponSEOutput()); final MockHttpServletRequestBuilder message = mockmvcRequestBuilders.post(SERVICE_URL + PROJECT + SLASH + projectDto.getId() + SLASH + PORT + SLASH + applicationDto.getId() + SLASH + OPERATION + SLASH + soapOperationDto.getId() + SLASH + RESPONSE + SLASH + DELETE + SLASH + CONFIRM); mockmvc.perform(message) .andExpect(mockmvcResultMatchers.status().isFound()) .andExpect(mockmvcResultMatchers.model().size(1)); }
@Test public void testUpdateMethod() throws Exception { final RestProjectDto restProjectDto = RestProjectDtoGenerator.generateRestProjectDto(); final RestApplicationDto restApplicationDto = RestApplicationDtoGenerator.generateRestApplicationDto(); final RestResourceDto restResourceDto = RestResourceDtoGenerator.generateRestResourceDto(); final RestMethodDto restMethodDto = RestMethodDtoGenerator.generateRestMethodDto(); when(serviceProcessor.process(any(ReadRestMethodInput.class))).thenReturn(new ReadRestMethodoutput(restMethodDto)); final MockHttpServletRequestBuilder message = mockmvcRequestBuilders.get(SERVICE_URL + PROJECT + SLASH + restProjectDto.getId() + SLASH + APPLICATION + SLASH + restApplicationDto.getId() + SLASH + RESOURCE + SLASH + restResourceDto.getId() + SLASH + METHOD + SLASH + restMethodDto.getId() + SLASH + UPDATE); mockmvc.perform(message) .andExpect(mockmvcResultMatchers.status().isOk()) .andExpect(mockmvcResultMatchers.model().size(8 + GLOBAL_VIEW_MODEL_COUNT)) .andExpect(mockmvcResultMatchers.forwardedUrl(INDEX)) .andExpect(mockmvcResultMatchers.model().attribute(PARTIAL,restResourceDto.getId())) .andExpect(mockmvcResultMatchers.model().attribute(REST_METHOD,restMethodDto)); }
@Test public void testUpdatePortEndpoint() throws Exception { final UpdateSoapPortsEndpointCommand command = new UpdateSoapPortsEndpointCommand(); final SoapProjectDto soapProjectDto = SoapProjectDtoGenerator.generateSoapProjectDto(); final SoapPortDto soapPortDto = SoapPortDtoGenerator.generateSoapPortDto(); final List<SoapPortDto> soapPorts = new ArrayList<SoapPortDto>(); soapPorts.add(soapPortDto); command.setSoapPorts(soapPorts); command.setForwardedEndpoint("/new/endpoint"); when(serviceProcessor.process(any(Input.class))).thenReturn(new UpdateSoapPortOutput(soapPortDto)); final MockHttpServletRequestBuilder message = mockmvcRequestBuilders.post(SERVICE_URL + PROJECT + SLASH + soapProjectDto.getId() + SLASH + PORT + SLASH + UPDATE + SLASH + CONFIRM,command); mockmvc.perform(message) .andExpect(mockmvcResultMatchers.status().isFound()) .andExpect(mockmvcResultMatchers.model().size(1)); }
@Test public void getAnalyticsByUserId_Success_IfAnalyticsAndUserPresent() throws Exception { mvc.perform(mockmvcRequestBuilders.request(HttpMethod.GET,"/api/v1/user/" + user.getId() + "/analytics") .accept(contentType) .contentType(contentType) .header(authHeaderName,token)) .andExpect(mockmvcResultMatchers.status().isOk()) .andExpect(mockmvcResultMatchers.jsonPath("$.id",is(analytics.getId()))) .andExpect(mockmvcResultMatchers.jsonPath("$.userId",is(analytics.getUserId()))) .andExpect(mockmvcResultMatchers.jsonPath("$.createdAt",is(analytics.getCreatedAt().getTime()))) .andExpect(mockmvcResultMatchers.jsonPath("$.updatedAt",is(analytics.getUpdatedAt().getTime()))) .andExpect(mockmvcResultMatchers.jsonPath("$.reports[0].result",is(analytics.getReports().get(0).getResult()))) .andExpect(mockmvcResultMatchers.jsonPath("$.reports[0].id",is(analytics.getReports().get(0).getId()))) .andExpect(mockmvcResultMatchers.jsonPath("$.reports[0].resource",is(analytics.getReports().get(0).getResource().toString()))) .andExpect(mockmvcResultMatchers.jsonPath("$.reports[0].analyzedAt",is(analytics.getReports().get(0).getAnalyzedAt().getTime()))) .andExpect(mockmvcResultMatchers.jsonPath("$.reports[0].analysisTime",is(analytics.getReports().get(0).getAnalysisTime().intValue()))); }
@Test public void testGetServiceValid() throws Exception { final List<ProjectDto> projectDtos = new ArrayList<ProjectDto>(); for(int index = 0; index < MAX_PROJECT_COUNT; index++){ final ProjectDto projectDto = ProjectDtoGenerator.generateProjectDto(); projectDtos.add(projectDto); } when(projectServiceComponent.findAll()).thenReturn(projectDtos); final MockHttpServletRequestBuilder message = mockmvcRequestBuilders.get(SERVICE_URL); mockmvc.perform(message) .andExpect(mockmvcResultMatchers.status().isOk()) .andExpect(mockmvcResultMatchers.model().size(2 + GLOBAL_VIEW_MODEL_COUNT)) .andExpect(mockmvcResultMatchers.forwardedUrl(INDEX)) .andExpect(mockmvcResultMatchers.model().attribute(PARTIAL,PAGE)) .andExpect(mockmvcResultMatchers.model().attribute(PROJECTS,projectDtos)); }
@Test public void testImportPostFile() throws Exception { final RestProjectDto restProjectDto = RestProjectDtoGenerator.generateRestProjectDto(); final List<File> files = new ArrayList<File>(); final RestDeFinitionFileUploadForm uploadForm = new RestDeFinitionFileUploadForm(); final List<multipartfile> uploadedFiles = new ArrayList<>(); uploadForm.setFiles(uploadedFiles); when(serviceProcessor.process(any(ReadRestProjectInput.class))).thenReturn(new ReadRestProjectOutput(restProjectDto)); when(fileManager.uploadFiles(anylistof(multipartfile.class))).thenReturn(files); final MockHttpServletRequestBuilder message = mockmvcRequestBuilders.post(SERVICE_URL + SLASH + PROJECT + SLASH + restProjectDto.getId() + SLASH + IMPORT).param(TYPE_ParaMETER,FILE).requestAttr("uploadForm",times(1)).uploadFiles(anylistof(multipartfile.class)); }
@Test public void getSoapPort() throws Exception { final SoapProjectDto soapProjectDto = SoapProjectDtoGenerator.generateSoapProjectDto(); final SoapPortDto soapPortDto = SoapPortDtoGenerator.generateSoapPortDto(); final SoapOperationDto soapOperationDto = SoapOperationDtoGenerator.generateSoapOperationDto(); final List<SoapOperationDto> operationDtos = new ArrayList<SoapOperationDto>(); operationDtos.add(soapOperationDto); soapPortDto.setoperations(operationDtos); when(serviceProcessor.process(any(ReadSoapPortInput.class))).thenReturn(new ReadSoapPortOutput(soapPortDto)); final MockHttpServletRequestBuilder message = mockmvcRequestBuilders.get(SERVICE_URL + PROJECT + SLASH + soapProjectDto.getId() + SLASH + PORT + SLASH + soapPortDto.getId() + SLASH); ResultActions result = mockmvc.perform(message) .andExpect(mockmvcResultMatchers.status().isOk()) .andExpect(mockmvcResultMatchers.model().size(4 + GLOBAL_VIEW_MODEL_COUNT)) .andExpect(mockmvcResultMatchers.forwardedUrl(INDEX)) .andExpect(mockmvcResultMatchers.model().attribute(PARTIAL,PAGE)) .andExpect(mockmvcResultMatchers.model().attribute(SOAP_PORT,soapPortDto)); SoapPortDto soapPortDtoResponse = (SoapPortDto) result.andReturn().getModelAndView().getModel().get(SOAP_PORT); }
@Test public void getCustomerByIdShouldReturnCustomer() throws Exception { Mockito .when(this.customerRepository.findOne(1L)) .thenReturn(c1); mockmvc.perform(mockmvcRequestBuilders.get("/customers/1")) .andExpect(mockmvcResultMatchers.status().is2xxSuccessful()) .andExpect(mockmvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)) .andExpect(mockmvcResultMatchers.jsonPath("@.id").value(1L)) .andDo(mockmvcRestDocumentation.document("customerById")); }
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
今天朋友发了个maven项目给我看,问我为什么启动不了。说实话,一直用Jfinal都快不会用spring了… 还是决定看看。
接收了文件,是maven构建的,打开eclipse,导入maven项目,然后部署到tomcat,启动tomcat,就报错了:“java.lang.ClassNotFoundException: org.springframework.web. servlet.DispatcherServlet”,错误信息如下图:
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
很明显的第一反应就是没有SpringMVC的包,于是检查pom.xml,发现没有问题,spring web mvc包是正确引入了的,查看Maven Dependencies,发现也是正常的,打开jar包,也没有问题,web.xml配置也没有问题…
我去,难道jar包版本问题,于是部署了更高版本的jar包,并且还试过配置更高的JDK版本,依然报错,不能启动…
于是google,发现大部分人都是说没有导入jar包,没有部署成功,可是jar包我导入了,也配置正确了。
就在这时,突然看到有个人说tomcat是否部署成功,于是立刻查看网站部署的文件夹,发现WEB-INF下根本没有lib文件夹…
原因找到了,但是为什么没有正确的部署呢,突然想到有个叫“Deployment Assembly”的配置,马上打开项目属性,找到该栏配置,果不其然,Maven Dependencies果然没有配置到WEB-INF/lib下,于是立刻配置,如下步骤:
在项目上右键properties(应该是最后一项),打开如下界面
Add -> Java Build Path Entries -> Next -> Maven Dependencies -> Finish -> Ok,配置完后如下图:

完成后再次启动tomcat,Perfect,就搞定了!
本文转载自: Maven构建SpringMVC环境报错“java.lang.ClassNotFoundException: org.springframework.web.servlet. DispatcherSe
PS:的确是这样的,因为对比正常项目之后就会发现,的确是少了那一项
javax.servlet.ServletException:类 [org.glassfish.jersey.servlet.ServletContainer] 不是 Servlet
如何解决javax.servlet.ServletException:类 [org.glassfish.jersey.servlet.ServletContainer] 不是 Servlet
您可能会觉得这是一个重复的问题,但没有一个具有相同标题的问题能解决我的问题。我正在使用 Jersey 3.0 在 Eclipse 中创建一个 RESTful Web 服务,我使用 Tomcat 9.0 作为我的服务器。
解决方法
Jersey 3.x 使用 Servlet 5.0,现在使用 Jakarta 命名。所有 javax.servlet
包装现在都已更改为 jakarta.servlet
。泽西岛 ServletContainer
现在扩展 jakarta.servlet.http.HttpServlet
;它不再是 javax
。第一个使用 Jakarta 的 Tomcat 是 Tomcat 10.x; Tomcat 9.x 仍然使用 javax.servlet
包装。所以如果你想使用 Jersey 3.x,那么你应该将你的 Tomcat 升级到 10.x。
maven org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter
使用 maven 将项目部署到 tomcat 容器,启动的时候报如下错误:
解决 Setting property''source'' to ''org.eclipse.jst.jee.server 的问题
http://blog.csdn.net/z69183787/article/details/19911935
[java] view plain copy
- 严重: Exception starting filter charsetFilter
- java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter
- at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
- at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
- at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
- at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001)
- at org.apache.catalina.core.StandardContext.start(StandardContext.java:4651)
- at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
- at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
- at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
- at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
- at org.apache.catalina.startup.Embedded.start(Embedded.java:825)
- at org.codehaus.mojo.tomcat.AbstractRunMojo.startContainer(AbstractRunMojo.java:558)
- at org.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java:255)
- at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
- at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
- at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
- at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
- at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
- at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
- at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
- at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
- at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
- at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
- at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
- at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
- at org.apache.maven.cli.MavenCli.main(MavenCli.java:160)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:483)
- at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
- at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
- at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
- at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
- 五月 29, 2015 11:01:46 上午 org.apache.catalina.core.StandardContext filterStart
- 严重: Exception starting filter springSecurityFilterChain
- java.lang.ClassCastException: org.springframework.web.filter.DelegatingFilterProxy cannot be cast to javax.servlet.Filter
- at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
- at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
- at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
- at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001)
- at org.apache.catalina.core.StandardContext.start(StandardContext.java:4651)
- at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
- at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
- at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
- at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
- at org.apache.catalina.startup.Embedded.start(Embedded.java:825)
- at org.codehaus.mojo.tomcat.AbstractRunMojo.startContainer(AbstractRunMojo.java:558)
- at org.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java:255)
- at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
- at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
- at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
- at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
- at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
- at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
- at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
- at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
- at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
- at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
- at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
- at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
- at org.apache.maven.cli.MavenCli.main(MavenCli.java:160)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:483)
- at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
- at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
- at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
- at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
pom.xml 文件部分配置如下:
[java] view plain copy
- <pre name="code"><dependencies>
- <dependency>
- <groupId>jstl</groupId>
- <artifactId>jstl</artifactId>
- <version>1.2</version>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.5</version>
- <strong><scope>provided</scope><!-- 此处已经改过,试过还是不行 --></strong>
- </dependency>
- <!-- aspectj dependency -->
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjrt</artifactId>
- <version>1.6.11</version>
- </dependency>
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjweaver</artifactId>
- <version>1.6.11</version>
- </dependency>
- <!-- Data Source -->
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-dbcp2</artifactId>
- <version>2.0</version>
- </dependency>
- <dependency>
- <groupId>commons-pool</groupId>
- <artifactId>commons-pool</artifactId>
- <version>1.5.7</version>
- <scope>runtime</scope>
- </dependency>
- <!-- javax -->
- <dependency>
- <groupId>javax</groupId>
- <artifactId>javaee-api</artifactId>
- <version>7.0</version>
- <scope>provided</scope> <!-- 问题出在这里 -->
- </dependency>
- </dependencies>
web.xml 文件部分配置如下:
[html] view plain copy
- <servlet>
- <servlet-name>springMVC</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <load-on-startup>2</load-on-startup>
- </servlet>
[html] view plain copy
- <!-- Configure Charset -->
- <filter>
- <filter-name>charsetFilter</filter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>UTF-8</param-value>
- </init-param>
- <init-param>
- <param-name>forceEncoding</param-name>
- <param-value>true</param-value>
- </init-param>
- </filter>
纠结了一天,网上说是 jar 包冲突:
“tomcat 启动后先将 tomcat/lib 目录下的 jar 包全部读入内存,如果 webapps 目录里的应用程序中 WEB-INF/lib 目录下有相同的包,将无法加载,
不同版本的包之间也会造成类似问题。
解决这个问题的方法就是对于 servlet-ap.jar 使用 <scope> 标签,编译的时候用到 servlet-api 和 jsp-api,但在打包的时候不用这两个依赖
如下”
[html] view plain copy
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.4</version>
- <scope>provided</scope>
- </dependency>
后来在网上看到一篇文章(http://stackoverflow.com/questions/15715864/opensessioninviewfilter-cannot-be-cast-to-javax-servlet-filter),终于找到问题。
如下测试代码,能告诉你 class 文件是从哪个 jar 包中加载的
[java] view plain copy
- @Test
- public void get(){
- URL url = Filter.class.getProtectionDomain().getCodeSource().getLocation();
- System.out.println("path:"+url.getPath()+" name:"+url.getFile());
import java.net.URL;
import javax.servlet.Filter;
import org.junit.Test;
public class d {
@Test
public void testget(){
URL url = Filter.class.getProtectionDomain().getCodeSource().getLocation();
System.out.println("path:"+url.getPath()+" name:"+url.getFile());
}
}
- // 输出结果:path:/C:/Users/User/.m2/repository/javax/javaee-api/7.0/javaee-api-7.0.jar name:/C:/Users/User/.m2/repository/javax/javaee-api/7.0/javaee-api-7.0.jar
我们实际项目中用到了 javaee 的 api,javaee-api-7.0.jar 文件中也有 Filter,所以 在引用 javaee-api 依赖的时候,pom.xml 文件中对应的加上 “<scope>provided</scope>” 就可以了
(说明:
测试的时候,需要将 pom.xml 文件中
[html] view plain copy
- <!--
[html] view plain copy
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.5</version>
- <scope>provided</scope>
- </dependency>
[html] view plain copy
- -->
org.springframework.boot.test.autoconfigure.web.servlet.MockMvcBuilderCustomizer的实例源码
@Bean public mockmvcBuilderCustomizer mockmvcBuilderCustomizer(Listablebeanfactory beanfactory) { Filter springSecurityFilterChain = beanfactory.getBean("springSecurityFilterChain",Filter.class); return builder -> builder.addFilters(springSecurityFilterChain) .defaultRequest(get("/").with(csrf()).with(user(123L).roles("ADMIN"))) .build(); }
关于org.springframework.test.web.servlet.result.MockMvcResultMatchers的实例源码和看透springmvc源代码分析与实践的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet、javax.servlet.ServletException:类 [org.glassfish.jersey.servlet.ServletContainer] 不是 Servlet、maven org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter、org.springframework.boot.test.autoconfigure.web.servlet.MockMvcBuilderCustomizer的实例源码等相关内容,可以在本站寻找。
本文标签: