• Spring MVC page render时jsp中元素相对路径的解决办法


    前段时间做了用Spring Security实现的登录和访问权限控制的功能,但是page render使用的是InternalResourceResolver,即在spring的servlet配置文件中做如下配置: 

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

    当controller返回一个view时,Spring MVC就会根据该配置中的设置到/WEB-INF/pages/路径下寻找view名.jsp这个文件来进行页面渲染。

     

    通过这样的方法,我在登录页面上显示出来的是用最基本的html实现的一个form,没有任何的样式和图片。

     

    现在我对这个页面进行了一些css的样式和image的修饰,css和images分别放在了/WEB-INF/css/和/WEB-INF/images/路径下。这样,我的WEB-INF目录下的结构是这样的:

     

    按照一般的相对路径,在jsp里这样写可以找到images里和css里的文件:

    <link rel="stylesheet" type="text/css" href="../css/style.css"> 
    
    <img src="../images/logo.png"> 

    但是当程序在web container里运行时,这个相对地址并不是我们的硬盘里的相对地址,而是项目在web container里的相对地址。当页面进行显示时,由于InternalResourceViewResolver中的配置,使得对http://localhost:8080/SpringSecurity/login的访问是在/WEB-INF/pages/路径下找到相应的jsp。

     

    所以在Spring MVC里希望通过相对路径找到resource文件时需要做下面的配置:

     

    在applicationContext.xml中:

    <mvc:resources mapping="/images/*" location="WEB-INF/images/" />
    
    <mvc:resources mapping="/css/*" location="WEB-INF/css/" />

    然后在jsp的href里:

    <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/style.css"> 

    ${pageContext.request.contextPath}就是将url direct到了当前目录下,然后再通过applicationContext中的配置来对该相对路径进行map。这样就能成功的在页面上显示images和css了。

     

  • 相关阅读:
    php学习day12---数据库(4)数据表的连接查询,子查询和联合查询
    php学习day11---数据库(3)数据表的增删改查
    php学习day10---数据库基础2
    php学习day9---数据库的基本知识
    php学习day8---数组的知识
    php学习day7--函数的相关知识
    资源相互引用时 需添加 PerformSubstitution=True
    C++完美实现Singleton模式[转]
    shell
    AJAX enabled & disabled
  • 原文地址:https://www.cnblogs.com/harolei/p/3192206.html
Copyright © 2020-2023  润新知