get/web-inf/pages/patients.jsp没有Map

qv7cva1a  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(148)

我目前正在用spingboot和hibernate开发crudweb应用程序,在浏览器中显示页面时遇到困难(返回“page not found”404错误,spring日志中没有Map警告)。由于某些原因,我也无法预览jsp页面,因为idea声明“找不到已配置/正在运行的web服务器!”即使是艰难的springweb也嵌入了tomcat服务器。
网络配置:

package testgroup.private_clinic.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages ="testgroup.private_clinic")
public class Webconfig implements WebMvcConfigurer {

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

    @Bean
    ViewResolver viewResolver(){
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setSuffix(".jsp");
        viewResolver.setPrefix("/WEB-INF/pages/");
        return viewResolver;
    }

}

应用程序初始值设定项:

package testgroup.private_clinic.config;

import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import javax.servlet.Filter;

public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{HibernateConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{Webconfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setEncoding("UTF-8");
        characterEncodingFilter.setForceEncoding(true);
        return new Filter[] {characterEncodingFilter};
    }
}

控制器:

package testgroup.private_clinic.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import testgroup.private_clinic.model.Patient;
import testgroup.private_clinic.service.PatientService;

import java.util.List;

@Controller
public class PatientController {

    PatientService patientService;

    @Autowired
    public void setPatienceService(PatientService patientService){
        this.patientService = patientService;
    }

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public ModelAndView allPatients(){
        List<Patient> patients = patientService.allPatients();
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("patients");
        modelAndView.addObject("patientList", patients);
        return modelAndView;
    }

    @RequestMapping(value= "/edit{id}", method = RequestMethod.GET)
    public ModelAndView editPage(@PathVariable("id") int id){
        Patient patient = patientService.getByID(id);
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("editPage");
        modelAndView.addObject("patient", patient);
        return modelAndView;
    }

    @RequestMapping(value="/edit", method = RequestMethod.POST)
    public ModelAndView editPatient(@ModelAttribute("patient") Patient patient){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("redirect:/");
        patientService.edit(patient);
        return modelAndView;
    }
}

pom文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>testorg</groupId>
    <artifactId>private_clinic</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <dependencies>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>

        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.12.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.4.28.Final</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-orm -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>5.2.12.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot</artifactId>
            <version>2.3.9.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-autoconfigure -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
            <version>2.3.9.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.19</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.3.9.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

    </dependencies>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
</project>

Spring日志:

2021-03-06 02:46:33.941  INFO 13956 --- [           main] t.private_clinic.SpringBootClass         : Starting SpringBootClass on DESKTOP-96Q7T8E with PID 13956 (C:\Users\Anton\IdeaProjects\Private_clinic_temp\target\classes started by Anton in C:\Users\Anton\IdeaProjects\Private_clinic_temp)
2021-03-06 02:46:33.943  INFO 13956 --- [           main] t.private_clinic.SpringBootClass         : No active profile set, falling back to default profiles: default
2021-03-06 02:46:34.712  INFO 13956 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2021-03-06 02:46:34.719  INFO 13956 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-03-06 02:46:34.719  INFO 13956 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.43]
2021-03-06 02:46:34.793  INFO 13956 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-03-06 02:46:34.793  INFO 13956 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 820 ms
2021-03-06 02:46:34.900  INFO 13956 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 5.4.28.Final
2021-03-06 02:46:34.995  INFO 13956 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
2021-03-06 02:46:35.107  INFO 13956 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.PostgreSQL9Dialect
2021-03-06 02:46:35.506  INFO 13956 --- [           main] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2021-03-06 02:46:35.748  INFO 13956 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2021-03-06 02:46:35.756  INFO 13956 --- [           main] t.private_clinic.SpringBootClass         : Started SpringBootClass in 2.044 seconds (JVM running for 2.527)
2021-03-06 02:46:48.864  INFO 13956 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2021-03-06 02:46:48.864  INFO 13956 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2021-03-06 02:46:48.868  INFO 13956 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 4 ms
Hibernate: select patient0_.id as id1_0_0_, patient0_.adress as adress2_0_0_, patient0_.diagnosis as diagnosi3_0_0_, patient0_.patient_name as patient_4_0_0_, patient0_.patient_patronimic as patient_5_0_0_, patient0_.status as status6_0_0_, patient0_.patient_surname as patient_7_0_0_ from patients patient0_ where patient0_.id=?
2021-03-06 02:46:48.991  WARN 13956 --- [nio-8080-exec-1] o.s.web.servlet.PageNotFound             : No mapping for GET /WEB-INF/pages/editPage.jsp

主要类别:

package testgroup.private_clinic;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication(exclude = HibernateJpaAutoConfiguration.class)
public class SpringBootClass extends SpringBootServletInitializer {
    public static  void main(String[] args){
        SpringApplication.run(SpringBootClass.class, args);
    }
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题