zoukankan      html  css  js  c++  java
  • 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了。

     

  • 相关阅读:
    mysql常用时间列表的查询——七天内、本月、本周、某天
    js取数组获取最大值的四种方式
    Mysql按周,按月,按日,按小时分组统计数据
    Mysql中的sum函数为null时的解决办法
    Maven 中 dependencyManagement 标签使用
    嵌入式printf函数运用基于ti 16位MCU
    md5实现对用户名与密码的保护
    c# md5 算法实现
    define a struct
    file.open异常处理
  • 原文地址:https://www.cnblogs.com/harolei/p/3192206.html
Copyright © 2011-2022 走看看