【问题标题】:No mapping found for HTTP request with URI in DispatcherServlet after adding a crudrepositority添加 crudrepositority 后,在 DispatcherServlet 中找不到带有 URI 的 HTTP 请求的映射
【发布时间】:2023-03-29 00:15:01
【问题描述】:

我的 Spring 服务器工作正常(显示 googlemap 的简单站点)。但是当我想添加一个 crudrepository(当然还有一个 @Entity)时,应用程序找不到与之前工作相同的 URI。我该如何解决这个问题?

一段系统输出:

16:32:29.737 [690530332@qtp-1564826387-0] 调试 o.s.b.f.s.DefaultListableBeanFactory - 完成创建 bean 'org.springframework.web.servlet.support.SessionFlashMapManager' 的实例 16:32:29.737 [690530332@qtp-1564826387-0] 调试 os.web.servlet.DispatcherServlet - 无法找到名为“flashMapManager”的 FlashMapManager:使用默认值 [org.springframework.web.servlet.support.SessionFlashMapManager@186fc102] 16:32:29.738 [690530332@qtp-1564826387-0] 调试 o.s.b.f.s.DefaultListableBeanFactory - 返回单例 bean 'serverProperties' 的缓存实例 16:32:29.739 [690530332@qtp-1564826387-0] 调试 o.s.b.f.s.DefaultListableBeanFactory - 返回单例 bean 'managementServerProperties' 的缓存实例 16:32:29.739 [690530332@qtp-1564826387-0] 调试 o.s.c.e.PropertySourcesPropertyResolver - 在 [servletConfigInitParams] 中搜索键“spring.liveBeansView.mbeanDomain” 16:32:29.739 [690530332@qtp-1564826387-0] 调试 o.s.c.e.PropertySourcesPropertyResolver - 在 [servletContextInitParams] 中搜索键“spring.liveBeansView.mbeanDomain” 16:32:29.739 [690530332@qtp-1564826387-0] 调试 o.s.c.e.PropertySourcesPropertyResolver - 在 [servletContextInitParams] 中找到键“spring.liveBeansView.mbeanDomain”,类型为 [String],值为“dev” 16:32:29.751 [690530332@qtp-1564826387-0] 调试 os.web.servlet.DispatcherServlet - 将 servlet 'sample' 的 WebApplicationContext 发布为名称为 [org.springframework.web.servlet.FrameworkServlet.CONTEXT.sample] 的 ServletContext 属性 16:32:29.751 [690530332@qtp-1564826387-0] 信息 os.web.servlet.DispatcherServlet - FrameworkServlet“样本”:初始化在 7745 毫秒内完成 16:32:29.751 [690530332@qtp-1564826387-0] 调试 os.web.servlet.DispatcherServlet - Servlet 'sample' 配置成功 16:32:29.757 [690530332@qtp-1564826387-0] 调试 os.web.servlet.DispatcherServlet - 名为“sample”的 DispatcherServlet 处理 [/mapa/hello] 的 GET 请求 16:32:29.759 [690530332@qtp-1564826387-0] 调试 o.s.w.s.m.m.a.RequestMappingHandlerMapping - 查找路径 /hello 的处理程序方法 16:32:29.761 [690530332@qtp-1564826387-0] 调试 o.s.w.s.m.m.a.RequestMappingHandlerMapping - 没有找到 [/hello] 的处理程序方法 16:32:29.761 [690530332@qtp-1564826387-0] 调试 o.s.b.a.e.mvc.EndpointHandlerMapping - 查找路径 /hello 的处理程序方法 16:32:29.762 [690530332@qtp-1564826387-0] 调试 o.s.b.a.e.mvc.EndpointHandlerMapping - 没有找到 [/hello] 的处理程序方法 16:32:29.762 [690530332@qtp-1564826387-0] 警告 o.s.web.servlet.PageNotFound - 在 DispatcherServlet 中找不到带有 URI [/mapa/hello] 的 HTTP 请求的映射,名称为“sample” 16:32:29.772 [690530332@qtp-1564826387-0] 调试 os.web.servlet.DispatcherServlet - 成功完成请求

Application.java

@EnableAutoConfiguration
@EntityScan(basePackageClasses=palmaslab.mapas.repository.PostoSaude.class)
@EnableJpaRepositories(basePackageClasses       =palmaslab.mapas.repository.PostoSaudeRepository.class/*.PostoSaudeRepository.class*/)
@EnableWebMvc
@Configuration
@ComponentScan(basePackages="palmaslab.mapas.controller")
public class Application {

@Bean
public InternalResourceViewResolver viewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/view/");
    resolver.setSuffix(".jsp");
    return resolver;
}
@Bean
public MultipartConfigElement multipartConfigElement() {
    MultiPartConfigFactory factory = new MultiPartConfigFactory();
    factory.setMaxFileSize("256KB");
    factory.setMaxRequestSize("256KB");
    return factory.createMultipartConfig();
}
public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
}
}

我的控制器

@Controller
    public class myController {
    @Autowired
private PostoSaudeRepository PostosSaude;

//get postos!!
@RequestMapping("hello")
public ModelAndView showMessage(
        @RequestParam(value = "name", required = false, defaultValue = "World") String name) {
    ModelAndView mv = new ModelAndView("mapa");
//  mv.addObject("postossaude", PostosSaude.findAll());
    return mv;
}}

PostoSaudeRepository

public interface PostoSaudeRepository extends CrudRepository<PostoSaude,Long> {
    public PostoSaude findById(long id);
}

PostoSaude(实体)

@Entity
public class PostoSaude {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;

private String nome_posto_saude;
private double latitude;
private double longitude;
private String endereco;
private String barrio_ou_nome_municipio; //aqui se coloca o nome do municipio, por exemplo Caucaia, o String cidade nesse caso ficará vazio ""
private String cidade;
private String estado;
private String pais;

public PostoSaude()
{}

public PostoSaude(String nome_posto_saude, String endereco,String barrio_ou_nome_municipio,String cidade, String estado, String pais)
{
    this.nome_posto_saude = nome_posto_saude;
    this.endereco = endereco;
    this.barrio_ou_nome_municipio = barrio_ou_nome_municipio;
    this.cidade = cidade;
    this.estado = estado;
    this.pais = pais;

}

public String getBarrio_ou_nome_municipio() {
    return barrio_ou_nome_municipio;
}

public void setBarrio_ou_nome_municipio(String barrio_ou_nome_municipio) {
    this.barrio_ou_nome_municipio = barrio_ou_nome_municipio;
}

public String getCidade() {
    return cidade;
}

public void setCidade(String cidade) {
    this.cidade = cidade;
}

public String getEstado() {
    return estado;
}

public void setEstado(String estado) {
    this.estado = estado;
}

public String getPais() {
    return pais;
}

public void setPais(String pais) {
    this.pais = pais;
}

public String getNome_posto_saude() {
    return nome_posto_saude;
}

public void setNome_posto_saude(String nome_posto_saude) {
    this.nome_posto_saude = nome_posto_saude;
}

public double getLatitude() {
    return latitude;
}

public void setLatitude(double d) {
    this.latitude = d;
}

public double getLongitude() {
    return longitude;
}

public void setLongitude(double d) {
    this.longitude = d;
}

public String getEndereco() {
    return endereco;
}

public void setEndereco(String endereco) {
    this.endereco = endereco;
}

public long getId() {
    return id;
}
@Override
public int hashCode() {
    // Google Guava provides great utilities for hashing
    return Objects.hashCode(nome_posto_saude, endereco, cidade);
}

@Override
public boolean equals(Object obj) {
    if (obj instanceof PostoSaude) {
        PostoSaude other = (PostoSaude) obj;
        // Google Guava provides great utilities for equals too!
        return Objects.equal(nome_posto_saude, other.nome_posto_saude)
                && Objects.equal(endereco, other.endereco)
                && cidade == other.cidade;
    } else {
        return false;
    }
}
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-        app_2_5.xsd">
<servlet>
<servlet-name>sample</servlet-name>
<servlet-class>
    org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
  <param-name>contextClass</param-name>
  <param-value> org.springframework.web.context.support.AnnotationConfigWebApplicationContext         </param-value>
 </init-param>
 <init-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>palmaslab.mapas.config</param-value>
 </init-param>
 </servlet>

<servlet-mapping>
<servlet-name>sample</servlet-name>
<url-pattern>/</url-pattern>

 </servlet-mapping>
<context-param>  
<param-name>spring.profiles.active</param-name>  
<param-value>dev</param-value>  
</context-param>  
<context-param>  
<param-name>spring.profiles.default</param-name>  
<param-value>dev</param-value>  
</context-param>
<context-param>  
<param-name>spring.liveBeansView.mbeanDomain</param-name>  
<param-value>dev</param-value>  
</context-param>  
</web-app>

【问题讨论】:

  • 请阅读this 并编辑您的问题。
  • 好的,抱歉。任何人都可以帮助我吗?谢谢大家

标签: java spring jsp spring-mvc jpa


【解决方案1】:

经过几天的谷歌搜索后,我找到了解决方案。当我在 application.java 中执行 @EnableAutoConfiguration 时,似乎 DispatcherServlet 中的映射 URI 被删除或取消配置。因此,here 解释了如何在主 DispatcherServlet 上添加新的 URI。在第一种方法中,它采用 DispatchServlet,在第二种方法中,它添加一个新的 URI。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-17
    • 2016-06-11
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 2015-06-03
    相关资源
    最近更新 更多