2017-05-05 230 views
0

我正在尋找如何使用spring引導來運行jsp。我嘗試了幾次,但仍未找到。Spring Boot - JSP Views Not Found

我再製成這種配置:pom.xml中的

-My依賴性:

<dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-security</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 

    <dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-undertow</artifactId> 
    </dependency> 

     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-server</artifactId> 
      <version>1.8</version> 
     </dependency> 
     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-servlet</artifactId> 
      <version>1.17.1</version> 
     </dependency> 
     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-json</artifactId> 
      <version>1.8</version> 
     </dependency> 
     <dependency> 
      <groupId>com.sun.jersey.contribs</groupId> 
      <artifactId>jersey-multipart</artifactId> 
      <version>1.8</version> 
     </dependency> 

     <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-actuator</artifactId> 
    </dependency> 

    <dependency> 
    <groupId>javax.ws.rs</groupId> 
    <artifactId>javax.ws.rs-api</artifactId> 
    <version>2.0</version> 
    </dependency> 

    <!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox --> 
    <dependency> 
      <groupId>org.apache.pdfbox</groupId> 
      <artifactId>pdfbox</artifactId> 
      <version>2.0.1</version> 
     </dependency> 

    <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --> 
     <dependency> 
      <groupId>com.itextpdf</groupId> 
      <artifactId>itextpdf</artifactId> 
      <version>5.0.6</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-server --> 
     <dependency> 
     <groupId>org.glassfish.jersey.core</groupId> 
     <artifactId>jersey-server</artifactId> 
     <version>2.17</version> 
     </dependency> 

     <!--the SL4J dependencies. --> 
     <dependency> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-api</artifactId> 
       <version>1.7.19</version> 
     </dependency> 
     <dependency> 
       <groupId>org.apache.logging.log4j</groupId> 
       <artifactId>log4j-slf4j-impl</artifactId> 
       <version>2.5</version> 
     </dependency> 

     <!-- the Log4J 2 dependencies. --> 
     <dependency> 
      <groupId>org.apache.logging.log4j</groupId> 
      <artifactId>log4j-api</artifactId> 
      <version>2.5</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.logging.log4j</groupId> 
      <artifactId>log4j-core</artifactId> 
      <version>2.5</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.logging.log4j</groupId> 
      <artifactId>log4j-jcl</artifactId> 
      <version>2.5</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web-services</artifactId> 
     </dependency> 

     <!-- Spring security --> 
      <dependency> 
       <groupId>org.springframework.security</groupId> 
       <artifactId>spring-security-web</artifactId> 
       <version>4.0.3.RELEASE</version> 
      </dependency> 

      <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-config</artifactId> 
      <version>4.0.3.RELEASE</version> 
     </dependency> 

      <!-- Spring Security JSP Taglib --> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-taglibs</artifactId> 
      <version>4.1.4.RELEASE</version> 
     </dependency> 

     <!-- To compile JSP --> 
     <dependency> 
     <groupId>org.apache.tomcat.embed</groupId> 
     <artifactId>tomcat-embed-jasper</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <!-- jstl for jsp page --> 
     <dependency> 
      <groupId>jstl</groupId> 
      <artifactId>jstl</artifactId> 
      <version>${jstl.version}</version> 
     </dependency> 

    </dependencies> 

-class MvcConfig:

@Configuration 
    @EnableWebMvc 
    @ComponentScan 
    public class MvcConfig extends WebMvcConfigurerAdapter{ 
     @Override 
     public void configureViewResolvers(ViewResolverRegistry registry) { 
      InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
      resolver.setPrefix("/WEB-INF/Views/"); 
      resolver.setSuffix(".jsp"); 
      resolver.setViewClass(JstlView.class); 
      registry.viewResolver(resolver); 
     } 
    @Override 
     public void addViewControllers(ViewControllerRegistry registry) { 
      registry.addViewController("/login").setViewName("login"); 
    } 

-class WebSecurityConfig : 

@Configuration 
@EnableWebSecurity 
@EnableGlobalMethodSecurity(securedEnabled=true) 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter{ 
protected void configure(HttpSecurity http) throws Exception { 
    http.authorizeRequests() 
     .antMatchers("/Users/**").access("hasRole('ADMIN')") 
      .anyRequest().authenticated() 
      .and() 
      .formLogin().loginPage("/login").permitAll() 
      .defaultSuccessUrl("/Acceuil") 
      .and() 
      .logout().logoutSuccessUrl("/login?logout") 
      .and() 
      .exceptionHandling().accessDeniedPage("/403") 
      .and() 
      .csrf(); 
} 
} 

-class AppsApplication:

@SpringBootApplication 
@ComponentScan 
@EnableAutoConfiguration 
public class AppsApplication extends SpringBootServletInitializer{ 

protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
      return application.sources(AuditConfigurationApplication.class); 
     } 

    public static void main(String[] args) { 
     SpringApplication.run(AuditConfigurationApplication.class, args); 



    } 
} 

-application的.properties:

spring.mvc.view.prefix= /WEB-INF/Views/ 
spring.mvc.view.suffix= .jsp 

當我訪問URL: 「http://localhost:8099/App/login

我有這樣的信息:

osweb.servlet.PageNotFound:未找到HTTP請求與 URI映射[/App/WEB-INF/jsp/login.jsp]在DispatcherServlet的與名稱 '的DispatcherServlet'

釷Ëjsp頁面中可以找到:SRC /主/ web應用/ WEB-INF /jsp/login.jsp

EDIT1:

dispatcher.xml:

<beans xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns="http://www.springframework.org/schema/beans" 
     xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <context:component-scan base-package="com.SSC"/> 

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/jsp/"/> 
     <property name="suffix" value=".jsp"/> 
    </bean> 
</beans> 

web.xml中:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     id="WebApp_ID" version="3.1"> 
    <display-name>JSP</display-name> 
    <welcome-file-list> 
     <welcome-file>login.html</welcome-file> 
     <welcome-file>login.htm</welcome-file> 
     <welcome-file>login.jsp</welcome-file> 
    </welcome-file-list> 
    <!-- Spring Boot Servlets --> 
    <servlet> 
     <servlet-name>SpringBootWebXmlServlet</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/dispatcher.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>SpringBootWebXmlServlet</servlet-name> 
     <url-pattern>/login</url-pattern> 
    </servlet-mapping> 
</web-app> 

JSP頁面的URL:的src /主/ web應用/ WEB-INF /jsp/login.jsp

URL文件的XML:的src /主/ web應用/ WEB-INF /web.xml,dispatcher.xml

我有這樣的問題:

Circular view path [login]: would dispatch back to the current handler URL [/App/login] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.) 

謝謝你幫我跑了服務器中的login.jsp頁面。

+0

http://www.baeldung.com/spring-dispatcherservlet - 這裏是在Baeldung是進入細節有關的鏈接@Adam傑拉德建立一個JSP –

+0

感謝的文章,我申請「3.3。 ViewResolver接口「部分鏈接baeldung。 我有這樣的消息:osweb.servlet.PageNotFound:沒有找到與URI的HTTP請求映射[/App/WEB-INF/jsp/login.jsp]在名爲dispatcherServlet的DispatcherServlet中可以找到jsp頁面:src/main/webapp/WEB-INF/jsp/login。jsp – Michael1

+1

您是否閱讀過啓動文檔的JSP限制部分? https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-jsp-limitations –

回答

0

我看不到您的完整pom.xml,但對我而言(根據註釋中提到的Spring JSP Limitations)有效,是將包裝從JAR更改爲WAR。

<packaging>war</packaging>