gpt4 book ai didi

java - Spring MVC 后端返回 404 (Rest)

转载 作者:行者123 更新时间:2023-11-28 22:47:44 31 4
gpt4 key购买 nike

我希望有人能帮助我解决我的问题。我现在写了一个 Spring MVC 服务器和一个客户端。不幸的是,我的 Rest Controller 只返回 404。我使用的是 Tomcat 8。我所知道的是 Spring 应用程序已正确部署,因为我可以访问我的 index.jsp 页面。部署它的上下文是/backend。所以我的基本 url 是 localhost:8080/backend。现在我有一个看起来像这样的 restcontroller。

@Controller
@RequestMapping("/api/developer")
public class DeveloperController {

@Autowired
private DeveloperOutboundDipatcher service;

@RequestMapping(method = RequestMethod.GET, value = "/getAll")
public List<DeveloperDTO> findAll() {
return service.findAllDeveloper();
}

@RequestMapping(method = RequestMethod.GET, value = "/get/{name}")
public DeveloperDTO findByName(@PathVariable String name) {
return service.findOneByName(name);
}

@RequestMapping(method = RequestMethod.DELETE, value = "/delete/{name}")
public void deleteDeveloper(@PathVariable String name) {
service.deleteDeveloper(name);
}

@RequestMapping(method = RequestMethod.POST, value = "/save/")
public void saveDeveloper(@RequestBody DeveloperDTO developer) {
service.save(developer);
}

@RequestMapping(method = RequestMethod.PUT, value = "/edit/")
public void editDeveloper(@RequestBody DeveloperDTO developer) {
service.edit(developer);
}
}

我的配置类如下所示:

package gamescreation;
@Configuration
@ComponentScan(basePackages= "gamescreation")
@EnableJpaRepositories("gamescreation")
@EnableTransactionManagement
@EnableWebMvc
public class MvcConfiguration extends WebMvcConfigurerAdapter{
private final String PROPERTY_DRIVER = "driver";
private final String PROPERTY_URL = "url";
private final String PROPERTY_USERNAME = "user";
private final String PROPERTY_PASSWORD = "password";
private final String PROPERTY_SHOW_SQL = "hibernate.show_sql";
private final String PROPERTY_DIALECT = "hibernate.dialect";

@Autowired
Environment environment;

@Bean
public ViewResolver getViewResolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}

@Bean
public ModelMapper modelMapper() {
return new ModelMapper();
}



@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean em
= new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
em.setPackagesToScan("gamescreation.entity" );

JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
em.setJpaProperties(hibernateProperties());

return em;
}

@Bean
public DataSource dataSource() {
BasicDataSource dataSource = new BasicDataSource ();
dataSource.setDriverClassName("org.postgresql.Driver");
return dataSource;
}

@Bean
public PlatformTransactionManager transactionManager(
EntityManagerFactory emf){
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(emf);

return transactionManager;
}


Properties hibernateProperties() {
return new Properties() {
{
setProperty("hibernate.hbm2ddl.auto",
"false");
setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQL82Dialect");
setProperty("hibernate.globally_quoted_identifiers",
"true");
}
};
}

Properties additionalProperties() {
Properties properties = new Properties();
properties.setProperty("hibernate.hbm2ddl.auto", "create-drop");
properties.setProperty(
"hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");

return properties;
}
@Bean
public SpringLiquibase liquibase() {
SpringLiquibase liquibase = new SpringLiquibase();
liquibase.setChangeLog("classpath:/db-changelog-master.xml");
liquibase.setDataSource(dataSource());
return liquibase;
}





@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
return new PersistenceExceptionTranslationPostProcessor();
}
}

我希望有人能告诉我缺少什么。

我的客户类如下所示:

@Service
public class DeveloperService {

private static final String DEVELOPER_BASEURL = "http://localhost:8080/backend/api/developer";

public List<DeveloperDTO> getDeveloperList() {
RestTemplate restTemplate = new RestTemplate();
DeveloperList response = restTemplate.getForObject(DEVELOPER_BASEURL + "/getAll", DeveloperList.class);
return response.getDevelopers();
}

public DeveloperDTO getSelectedDeveloper(String name) {
String url = DEVELOPER_BASEURL + "/get/{name}";
UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(url).queryParam("name", name);
RestTemplate restTemplate = new RestTemplate();
DeveloperDTO response = restTemplate.getForObject(builder.toUriString(), DeveloperDTO.class);
return response;
}

public void delete(String name) {
String url = DEVELOPER_BASEURL + "/delete/{name}";
UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(url).queryParam("name", name);
RestTemplate restTemplate = new RestTemplate();
restTemplate.delete(builder.toUriString());
}

public DeveloperDTO save(DeveloperDTO dto) {
String url = DEVELOPER_BASEURL + "/save";

HttpEntity<DeveloperDTO> request = new HttpEntity<>(dto);
RestTemplate restTemplate = new RestTemplate();
DeveloperDTO response = restTemplate.postForObject(url, request, DeveloperDTO.class);
return response;

}
}

预先感谢您的帮助。如果您需要我的项目的任何其他信息,请随时询问。

最佳答案

单独使用@Controller 将无法工作,请使用@Responsebody 在 REST 中获取响应或使用@RestController。

关于java - Spring MVC 后端返回 404 (Rest),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52652165/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com