春季启动资源找不到404错误html



我构建了一个称为雇主的CRUD应用程序。操作正常运行,但是在HTML控制台中显示它们时,显示错误

: Resource not found
2019-07-29 05:04:25.834 DEBUG 18656 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed 404 NOT_FOUND
2019-07-29 05:04:25.834 DEBUG 18656 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : "ERROR" dispatch for GET "/error", parameters={}
2019-07-29 05:04:25.834 DEBUG 18656 --- [nio-8080-exec-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2019-07-29 05:04:25.834 DEBUG 18656 --- [nio-8080-exec-1] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json, application/*+json, application/json, application/*+json]
2019-07-29 05:04:25.834 DEBUG 18656 --- [nio-8080-exec-1] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{timestamp=Mon Jul 29 05:04:25 PDT 2019, status=404, error=Not Found, message=No message available,  (truncated)...]
2019-07-29 05:04:25.835 DEBUG 18656 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Exiting from "ERROR" dispatch, status 404
2019-07-29 05:04:37.741 DEBUG 18656 --- [nio-8080-exec-3] o.s.web.servlet.DispatcherServlet        : GET "/favicon.ico", parameters={}
2019-07-29 05:04:37.742 DEBUG 18656 --- [nio-8080-exec-3] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped to ResourceHttpRequestHandler [class path resource [META-INF/resources/], class path resource [resources/], class path resource [static/], class path resource [public/], ServletContext resource [/], class path resource []]
2019-07-29 05:04:37.754 DEBUG 18656 --- [nio-8080-exec-3] o.s.web.servlet.DispatcherServlet        : Completed 200 OK

我试图重新启动应用程序并更改实体的名称,但它不起作用。

losperercontroller.java

package io.javabrains;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.hibernate.mapping.Index;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import io.javabrains.Entity.Employer;
@Controller
public class EmployerController {

    @Autowired
    private EmployerService service;


    @RequestMapping("/")
    public String newForm() {
        return "form1";
    }



     public List<Employer>getAllEmployers()
     {

        return  service.getAllEmployers();

     }
        @RequestMapping(value="/tables",method=RequestMethod.GET)
    public String getAllEmployers(Model model)
    {
         List<Employer>employers = service.getAllEmployers(); 
        model.addAttribute("Employer",employers);
        return "tables";
    }


      @RequestMapping("/employer/{id}") 
      public Employer getEmployer(@PathVariable Integer id) { 
          return service.getEmployers(id);
      }

    @RequestMapping(method=RequestMethod.POST,value="/employer")
    public void addEmployer(@RequestBody Employer employer) {
        service.addEmployer(employer);
    }

    @RequestMapping(method=RequestMethod.PUT,value="/employer/{id}")
    public void updateEmployer(@RequestBody Employer employer,@PathVariable int id) {
        service.updateEmployer(id,employer);
    }


      @RequestMapping(method=RequestMethod.DELETE,value="/create/{id}") 
     public void deleteEmployer(@PathVariable int id)
     {
          service.deleteEmployer(id);
     }


}

hirsererService.java

package io.javabrains;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import io.javabrains.Entity.Employer;
@Service
public class EmployerService {
    @Autowired
    private Repository repository;
    public List<Employer>getAllEmployers(){
        List<Employer>employers = new ArrayList<>();
        repository.findAll()
        .forEach(employers::add);
        return employers;
    }
    public void addEmployer(Employer employer) {
        repository.save(employer);
    }

    public void updateEmployer(int id, Employer employer) {
        repository.save(employer);
    }

    public void deleteEmployer(int id) {
        repository.deleteById(id);
        ;
    }

      public Employer getEmployers(int id) 
      { 
          return repository.getOne(id);
      }


}

雇主.java

package io.javabrains;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import io.javabrains.Entity.Employer;
@Service
public class EmployerService {
    @Autowired
    private Repository repository;
    public List<Employer>getAllEmployers(){
        List<Employer>employers = new ArrayList<>();
        repository.findAll()
        .forEach(employers::add);
        return employers;
    }
    public void addEmployer(Employer employer) {
        repository.save(employer);
    }

    public void updateEmployer(int id, Employer employer) {
        repository.save(employer);
    }

    public void deleteEmployer(int id) {
        repository.deleteById(id);
        ;
    }

      public Employer getEmployers(int id) 
      { 
          return repository.getOne(id);
      }


}

table.html

 <tbody>
                    <tr th:each="$(employers)">
                      <td th:text="${employers.name}"></td>
                      <td th:text="${employer.position}"></td>
                      <td th:text="${employer.office}"></td>
                      <td th:text="${employer.age}"></td>
                     <td th:text="${employer.salary}"></td>
                    </tr>

....

如果您在控制器类中使用@Controller(org.springframework.stereotype.Controller(,则还必须为每个@RequestMapping或类级别添加@ResponseBody

另外,Spring引入了包括@Controller@ResponseBody@RestController(org.springframework.stereotype.Controller.RestController(。

另外,在API中,您可以尝试以下操作,我现在已经测试并起作用。

@RequestMapping(path="/template")
public ModelAndView getHelloTemplate(){
    ModelAndView model = new ModelAndView();
    model.setViewName("hello");
    model.addObject("message", "Hello World");
    return model;
}

我已经使用了spring-boot-starter-freemarker模板引擎,并且HTML文件放置在`src/main/resource/resources/templates/hello.ftl'。

下。

现在,我已经用百里叶测试了相同的代码,并且有效。

pom.xml:

<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-freemarker</artifactId>-->
<!--<version>2.1.2.RELEASE</version>-->
<!--</dependency>-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    <version>2.1.2.RELEASE</version>
</dependency>

控制器:

@Controller(value = "tvGuideController")
public class TvGuideController {
    @RequestMapping(path="/template")
    public ModelAndView getHelloTemplate(){
        ModelAndView model = new ModelAndView();
        model.setViewName("hello");
        model.addObject("message", "Hello World");
        return model;
    }
    @RequestMapping(path="/template1")
    public String getHelloTemplate(Model model){
        model.addAttribute("message", "Hello World 1");
        return "hello";
    }
    @RequestMapping(path="/template2")
    public String getHelloTemplate(ModelMap model){
        model.addAttribute("message", "Hello World 2");
        return "hello2";
    }
}

github可在GitHub上获得带有百里叶和自由标记模板引擎的运行应用程序克隆存储库并运行应用程序:

git clone https://github.com/fiveobjects/reference.git
cd java/springboot
mvn spring-boot:run

url(端口可能对您有所不同(:

http://localhost:8080/template
http://localhost:8080/template1
http://localhost:8080/template2

如果您想在pom.xml中运行自由标记,而不是胸腺,则评论胸腺依赖性和不符号释放依赖性。

如果这对您有用,那么您的pom.xml依赖项,应用程序,主应用程序类和控制器需要检查。

最新更新