账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    spring mvc 设置视图后缀名为html时为什么找不到资源?
    37
    0

    1.后缀为jsp和html的文件都存在,当后缀设为jsp时,访问相应url可以访问到,当为html时,访问url找不到资源,这是为什么?有猜想过是因为url-pattern设为“/”导致的,但是为什么html不可以,而jsp可以。

    2.相关代码如下
    web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app>
        <servlet>
            <servlet-name>app</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:myMVC.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>app</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    
    </web-app>
    

    myMVC.xml 当suffix设为html时访问url没有效果,但是jsp就可以

    <beans xmlns = "http://www.springframework.org/schema/beans"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xmlns:context = "http://www.springframework.org/schema/context"
           xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation = "http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd">
        
        <context:component-scan base-package = "hello" />
    
        <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name = "prefix" value = "/WEB-INF/pages/" />
            <property name = "suffix" value = ".html" />
        </bean>
    
    </beans>
    

    HelloController.java

    @Controller
    @RequestMapping("")
    public class HelloController {
    
        @GetMapping("/hello")
        public String handle(Model model) {
            model.addAttribute("message", "Hello World!");
            return "index";
        }
    
    }
    
    

    3.会有错误信息 org.springframework.web.servlet.DispatcherServlet.noHandlerFound No mapping found for HTTP request with URI [/WEB-INF/pages/index.html] in DispatcherServlet with name 'app'
    是什么原因造成这种现象的?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 我在y城运快递 普通会员 1楼

      在Spring MVC中,如果你设置了视图的后缀名为"html",但是当你尝试访问这些资源时,你仍然可以找到它们,但它们可能会显示为乱码或者不完整。

      原因可能有以下几点:

      1. 如果你的视图文件和资源文件在同一个目录下,你可能需要提供相对路径或绝对路径,例如:

      java public String viewName(String url) { return "/path/to/your/views/" + url; }

      这样,你就可以正确地访问视图文件了。

      1. 如果你的视图文件和资源文件不在同一个目录下,你需要提供绝对路径,例如:

      java public String viewName(String url) { return "/path/to/your/views/" + url; }

      这样,即使资源文件在视图文件的同一目录下,你仍然需要提供绝对路径才能正确地访问资源文件。

      1. 如果你的视图文件和资源文件在同一个目录下,但资源文件包含特殊字符,你可能需要使用URLEncoder.encode来编码资源文件的名称。例如:

      java public String viewName(String url) { return URLEncoder.encode("your/resource/file.html", "UTF-8"); }

      这样,即使资源文件包含特殊字符,你仍然可以正确地访问资源文件。

      1. 如果你的视图文件和资源文件在同一个目录下,但资源文件包含URL编码后的特殊字符,你可能需要使用URLDecoder.decode来解码资源文件的名称。例如:

      java public String viewName(String url) { return URLDecoder.decode("your/resource/file.html", "UTF-8"); }

      这样,即使资源文件包含URL编码后的特殊字符,你仍然可以正确地访问资源文件。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部