spring model html页面,使用Spring提供静态页面和REST服务

我开发了一个Spring应用程序,它提供Spring MVC REST服务.现在我想将Angularjs实现到Spring应用程序的webapp目录中.问题是我不知道如何正确配置它.

我想要实现的目标:

> / api / … =通过Spring MVC提供REST服务的URL,例如localhost:8080 / api / user / 1

> / … =包含静态html页面的URL,例如localhost:8080 / index.html

另外我想默认加载index.html.

目前我正在使用以下配置,但默认情况下它不会加载index.html.但我不知道这是否真的应该在Spring容器中配置静态页面:

web.xml中

org.springframework.web.context.ContextLoaderListener

spring

org.springframework.web.servlet.DispatcherServlet

dispatchOptionsRequest

true

spring

/

applicationContext.xml中

使用当前配置一切正常,但是当我尝试将浏览器指向localhost:8080 /然后出现404未找到而不是加载index.html文件.当我尝试使用localhost:8080 / index.html时,一切正常.

有人能指出我正确的方向如何配置这样的设置?

下面你可以看到我的debug.log.这里的问题似乎如下:

没找到[/]的处理程序方法

所以我猜DispatcherServlet正试图将路径映射到控制器.但我不知道如何避免这种情况.

21:55:04.896 [qtp581501261-25] DEBUG org.eclipse.jetty.http.HttpParser - filled 314/314

21:55:04.897 [qtp581501261-25 - /] DEBUG org.eclipse.jetty.server.Server - REQUEST / on AsyncHttpConnection@f908897,g=HttpGenerator{s=0,h=-1,b=-1,c=-1},p=HttpParser{s=-5,l=9,c=0},r=1

21:55:04.897 [qtp581501261-25 - /] DEBUG o.e.j.server.handler.ContextHandler - scope null||/ @ o.m.j.p.JettyWebAppContext{/,file:/C:/Users/charms/Documents/Intellij%20Projects/cardkeeper/src/main/webapp/},file:/C:/Users/charms/Documents/Intellij%20Projects/cardkeeper/src/main/webapp/

21:55:04.897 [qtp581501261-25 - /] DEBUG o.e.j.server.handler.ContextHandler - context=||/ @ o.m.j.p.JettyWebAppContext{/,file:/C:/Users/charms/Documents/Intellij%20Projects/cardkeeper/src/main/webapp/},file:/C:/Users/charms/Documents/Intellij%20Projects/cardkeeper/src/main/webapp/

21:55:04.897 [qtp581501261-25 - /] DEBUG org.eclipse.jetty.server.session - sessionManager=org.eclipse.jetty.server.session.HashSessionManager@70799896

21:55:04.897 [qtp581501261-25 - /] DEBUG org.eclipse.jetty.server.session - session=null

21:55:04.897 [qtp581501261-25 - /] DEBUG o.e.jetty.servlet.ServletHandler - servlet |/|null -> spring

21:55:04.897 [qtp581501261-25 - /] DEBUG o.e.jetty.servlet.ServletHandler - chain=springSecurityFilterChain->spring

21:55:04.897 [qtp581501261-25 - /] DEBUG o.e.jetty.servlet.ServletHandler - call filter springSecurityFilterChain

21:55:04.897 [qtp581501261-25 - /] DEBUG o.s.s.web.util.AntPathRequestMatcher - Checking match of request : '/'; against '/favicon.ico*'

21:55:04.897 [qtp581501261-25 - /] DEBUG o.s.s.web.util.AntPathRequestMatcher - Checking match of request : '/'; against '/resources/**'

21:55:04.897 [qtp581501261-25 - /] DEBUG o.s.security.web.FilterChainProxy - / at position 1 of 9 in additional filter chain; firing Filter: 'SecurityContextPersistenceFilter'

21:55:04.898 [qtp581501261-25 - /] DEBUG o.s.security.web.FilterChainProxy - / at position 2 of 9 in additional filter chain; firing Filter: 'LogoutFilter'

21:55:04.898 [qtp581501261-25 - /] DEBUG o.s.security.web.FilterChainProxy - / at position 3 of 9 in additional filter chain; firing Filter: 'UsernamePasswordAuthenticationFilter'

21:55:04.898 [qtp581501261-25 - /] DEBUG o.s.security.web.FilterChainProxy - / at position 4 of 9 in additional filter chain; firing Filter: 'DefaultLoginPageGeneratingFilter'

21:55:04.898 [qtp581501261-25 - /] DEBUG o.s.security.web.FilterChainProxy - / at position 5 of 9 in additional filter chain; firing Filter: 'BasicAuthenticationFilter'

21:55:04.898 [qtp581501261-25 - /] DEBUG o.s.security.web.FilterChainProxy - / at position 6 of 9 in additional filter chain; firing Filter: 'SecurityContextHolderAwareRequestFilter'

21:55:04.898 [qtp581501261-25 - /] DEBUG o.s.security.web.FilterChainProxy - / at position 7 of 9 in additional filter chain; firing Filter: 'AnonymousAuthenticationFilter'

21:55:04.898 [qtp581501261-25 - /] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Populated SecurityContextHolder with anonymous token: 'org.springframework.security.authentication.AnonymousAuthenticationToken@9055c2bc: Principal: anonymousUser; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@b364: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: null; Granted Authorities: ROLE_ANONYMOUS'

21:55:04.898 [qtp581501261-25 - /] DEBUG o.s.security.web.FilterChainProxy - / at position 8 of 9 in additional filter chain; firing Filter: 'ExceptionTranslationFilter'

21:55:04.898 [qtp581501261-25 - /] DEBUG o.s.security.web.FilterChainProxy - / at position 9 of 9 in additional filter chain; firing Filter: 'FilterSecurityInterceptor'

21:55:04.898 [qtp581501261-25 - /] DEBUG o.s.s.web.util.AntPathRequestMatcher - Checking match of request : '/'; against '/api/**'

21:55:04.899 [qtp581501261-25 - /] DEBUG o.s.s.w.a.i.FilterSecurityInterceptor - Public object - authentication not attempted

21:55:04.899 [qtp581501261-25 - /] TRACE o.s.w.c.s.XmlWebApplicationContext - Publishing event in Root WebApplicationContext: org.springframework.security.access.event.PublicInvocationEvent[source=FilterInvocation: URL: /]

21:55:04.899 [qtp581501261-25 - /] DEBUG o.s.security.web.FilterChainProxy - / reached end of additional filter chain; proceeding with original chain

21:55:04.899 [qtp581501261-25 - /] DEBUG o.e.jetty.servlet.ServletHandler - call servlet spring

21:55:04.899 [qtp581501261-25 - /] TRACE o.s.web.servlet.DispatcherServlet - Bound request context to thread: SecurityContextHolderAwareRequestWrapper[ FirewalledRequest[ (GET /)@604241542 org.eclipse.jetty.server.Request@2403fe86]]

21:55:04.899 [qtp581501261-25 - /] DEBUG o.s.web.servlet.DispatcherServlet - DispatcherServlet with name 'spring' processing GET request for [/]

21:55:04.899 [qtp581501261-25 - /] TRACE o.s.web.servlet.DispatcherServlet - Testing handler map [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping@12440d38] in DispatcherServlet with name 'spring'

21:55:04.899 [qtp581501261-25 - /] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Looking up handler method for path /

21:55:04.912 [qtp581501261-25 - /] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Did not find handler method for [/]

21:55:04.912 [qtp581501261-25 - /] TRACE o.s.web.servlet.DispatcherServlet - Testing handler map [org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping@c518734] in DispatcherServlet with name 'spring'

21:55:04.912 [qtp581501261-25 - /] TRACE o.s.w.s.h.BeanNameUrlHandlerMapping - No handler mapping found for [/]

21:55:04.912 [qtp581501261-25 - /] TRACE o.s.web.servlet.DispatcherServlet - Testing handler map [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping@3c836d3d] in DispatcherServlet with name 'spring'

21:55:04.912 [qtp581501261-25 - /] DEBUG o.s.w.s.h.SimpleUrlHandlerMapping - Matching patterns for request [/] are [/**]

21:55:04.912 [qtp581501261-25 - /] DEBUG o.s.w.s.h.SimpleUrlHandlerMapping - URI Template variables for request [/] are {}

21:55:04.912 [qtp581501261-25 - /] DEBUG o.s.w.s.h.SimpleUrlHandlerMapping - Mapping [/] to HandlerExecutionChain with handler [org.springframework.web.servlet.resource.ResourceHttpRequestHandler@6abe6713] and 1 interceptor

21:55:04.912 [qtp581501261-25 - /] TRACE o.s.web.servlet.DispatcherServlet - Testing handler adapter [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter@7a614724]

21:55:04.912 [qtp581501261-25 - /] TRACE o.s.web.servlet.DispatcherServlet - Testing handler adapter [org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter@885cb41]

21:55:04.912 [qtp581501261-25 - /] DEBUG o.s.web.servlet.DispatcherServlet - Last-Modified value for [/] is: -1

21:55:04.912 [qtp581501261-25 - /] DEBUG o.s.w.s.r.ResourceHttpRequestHandler - Ignoring invalid resource path []

21:55:04.913 [qtp581501261-25 - /] DEBUG o.s.w.s.r.ResourceHttpRequestHandler - No matching resource found - returning 404

21:55:04.913 [qtp581501261-25 - /] DEBUG o.s.web.servlet.DispatcherServlet - Null ModelAndView returned to DispatcherServlet with name 'spring': assuming HandlerAdapter completed request handling

21:55:04.913 [qtp581501261-25 - /] TRACE o.s.web.servlet.DispatcherServlet - Cleared thread-bound request context: SecurityContextHolderAwareRequestWrapper[ FirewalledRequest[ [GET /]@604241542 org.eclipse.jetty.server.Request@2403fe86]]

21:55:04.914 [qtp581501261-25 - /] DEBUG o.s.web.servlet.DispatcherServlet - Successfully completed request

21:55:04.914 [qtp581501261-25 - /] TRACE o.s.w.c.s.XmlWebApplicationContext - Publishing event in WebApplicationContext for namespace 'spring-servlet': ServletRequestHandledEvent: url=[/]; client=[0:0:0:0:0:0:0:1]; method=[GET]; servlet=[spring]; session=[null]; user=[null]; time=[15ms]; status=[OK]

21:55:04.914 [qtp581501261-25 - /] TRACE o.s.w.c.s.XmlWebApplicationContext - Publishing event in Root WebApplicationContext: ServletRequestHandledEvent: url=[/]; client=[0:0:0:0:0:0:0:1]; method=[GET]; servlet=[spring]; session=[null]; user=[null]; time=[15ms]; status=[OK]

21:55:04.914 [qtp581501261-25 - /] DEBUG o.s.s.w.a.ExceptionTranslationFilter - Chain processed normally

21:55:04.914 [qtp581501261-25 - /] DEBUG o.s.s.w.c.SecurityContextPersistenceFilter - SecurityContextHolder now cleared, as request processing completed

21:55:04.914 [qtp581501261-25 - /] DEBUG org.eclipse.jetty.server.Server - RESPONSE / 404 handled=true

21:55:04.915 [qtp581501261-25] DEBUG o.e.jetty.server.AsyncHttpConnection - Enabled read interest SCEP@7cee85c5{l(/0:0:0:0:0:0:0:1:51001)r(/0:0:0:0:0:0:0:1:8080),d=true,open=true,ishut=false,oshut=false,rb=false,wb=false,w=true,i=0r}-{AsyncHttpConnection@f908897,g=HttpGenerator{s=4,h=0,b=0,c=-1},p=HttpParser{s=0,l=9,c=0},r=1}

21:55:04.915 [qtp581501261-25] DEBUG org.eclipse.jetty.http.HttpParser - filled 0/0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值