Springmvc加载静态文件和开启EL表达式的支持

一、静态文件加载问题

刚开始学习SpringMVC,发现静态文件无法加载

web.xml配置如下:

<web-app id="WebApp_ID" version="3.0"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

    <display-name>Spring Web MVC Hello World Application</display-name>

    <servlet>
        <servlet-name>spring</servlet-name>
            <servlet-class>
                org.springframework.web.servlet.DispatcherServlet
            </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

该配置会将一切资源的请求都交给SpringMVC去处理,而SpringMVC会将URL映射到对应的控制器去处理,对静态文件的请求会报 没有对应映射 的错误。

解决方法我目前只查到以下两种:

1.配置web.xml,在其中加入如下片段:

<servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
    </servlet-mapping>  

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.gif</url-pattern>
    </servlet-mapping>  

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpg</url-pattern>
    </servlet-mapping>  

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
    </servlet-mapping>

表示对于css、js、gif和jpg格式的图片不使用spring的过滤器,这样就可以找到对应的文件了。

2.修改spring-servlet.xml,这种情况下不需要修改web.xml的配置:

<mvc:resources mapping="/javascript/**"
        location="/static_resources/javascript/"/>
        <mvc:resources mapping="/styles/**"
        location="/static_resources/css/"/>
        <mvc:resources mapping="/images/**"
        location="/static_resources/images/"/>
        <mvc:default-servlet-handler /> 

当请求js文件时,就去网站目录下的js文件夹下去寻找,其他类型的静态文件也是类似的形式。当然,这里还必须加上mvc标签的声明:

xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation=“http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd”

但是,配置到这里的确可以找到静态文件,却找不到控制器了,还需要加上一句:

<mvc:annotation-driven/>

至此方法2才算是配置完成。

二、向视图传值

从控制器向视图传值,大概有以下几种方式:

1.HttpServletRequest.sertAttribute()方法

@RequestMapping("/pass1")
    public String pass1(HttpServletRequest request){
        String name1 = request.getParameter("name");
        System.out.println(name1);
        request.setAttribute("name", name1);
        return "user";
    }

2.ModelAndView

@RequestMapping("/pass2")
    public ModelAndView pass2(){
        ModelAndView mav=new ModelAndView("user");
        mav.addObject("age", 24);
        return mav;
    }

3.使用Map

@RequestMapping("/pass3")
    public String pass3(Map map){
        map.put("sex", "boy");
        return "user";
    }

4.Model

@RequestMapping("/pass4")
    public String pass4(Model model){
        model.addAttribute("id", "111222333");
        return "user";
    }

但是遇到的问题是无论前台怎样写,都无法获取到设定的值,例如${name}会输出原样的${name},而不是控制器对name属性赋予的值,这是因为我使用的jsp版本默认关闭对EL表达式的支持,需要手动打开:

<%@ page  isELIgnored="false"%>
时间: 2025-01-13 00:09:01

Springmvc加载静态文件和开启EL表达式的支持的相关文章

加载静态文件,父模板的继承和扩展

用url_for加载静态文件 <script src="{{ url_for('static',filename='js/login.js') }}"></script> flask 从static文件夹开始寻找 可用于加载css, js, image文件 继承和扩展 把一些公共的代码放在父模板中,避免每个模板写同样的内容.base.html 子模板继承父模板 {% extends 'base.html' %} 父模板提前定义好子模板可以实现一些自己需求的位置及

加载静态文件,父模板的继承和扩展(2017.11.3)

用url_for加载静态文件 <script src="{{ url_for('static',filename='js/login.js') }}"></script> flask 从static文件夹开始寻找 可用于加载css, js, image文件 继承和扩展 把一些公共的代码放在父模板中,避免每个模板写同样的内容.base.html 子模板继承父模板 {% extends 'base.html' %} 父模板提前定义好子模板可以实现一些自己需求的位置及

二十一、加载静态文件,父模板的继承和扩展

用url_for加载静态文件 <script src="{{ url_for('static',filename='js/login.js') }}"></script> flask 从static文件夹开始寻找 可用于加载css, js, image文件 继承和扩展 把一些公共的代码放在父模板中,避免每个模板写同样的内容.base.html 子模板继承父模板 {% extends 'base.html' %} 父模板提前定义好子模板可以实现一些自己需求的位置及

Django加载静态文件

方法一: 1.在app目录中创建static 目录,并在该目录下创建存储css,img,js的子目录. 2.在相应的目录下创建相对应的静态文件. static/css/mystyle.css, static/img/timg.jpg,(保存图片) static/js/myjs.js 3.在模板文件中加载静态文件 例: mystyle.css: body{ background:blue;} myjs.js: alert('hello') static_test.html: {% load sta

在python3中如何加载静态文件详版步骤

在一个网页中,不仅仅只有一个`html`骨架,还需要`css`样式文件,`js`执行文件以及一些图片等.因此在`DTL`中加载静态文件是一个必须要解决的问题.在`DTL`中,使用`static`标签来加载静态文件.要使用`static`标签,首先需要`{% load static %}`.加载静态文件的步骤如下: 首先确保`django.contrib.staticfiles`已经添加到`settings.INSTALLED_APPS`中. 确保在`settings.py`中设置了`STATIC

041:模版中加载静态文件详解

加载静态文件: 在一个网页中,不仅仅只有一个 html 骨架,还需要 css 样式文件, js 执行文件以及一些图片等.因此在 DTL 中加载静态文件是一个必须要解决的问题.在 DTL 中,使用 static 标签来加载静态文件.要使用 static 标签,首先需要 {% load static %} .加载静态文件的步骤如下: 1. 首先确保 django.contrib.staticfiles 已经添加到 sttings.INSTALLED_APPS 中. 2. 确保在 settings.p

django开发环境setting.py里面设置debug=false时却成功加载静态文件?

django开发环境setting.py里面设置debug=false时却成功加载静态文件?按理来说应该是加载失败的. 启动服务器,运行正常,但是静态文件如css,js,图片是无法加载的. 问题: 解答:问题在于使用的是谷歌浏览器,默认使用了缓存.导致每次访问同一个url时,都返回的是缓存里面的东西. 通过谷歌浏览器里面的开发者工具network下面的选项能禁用缓存.禁用缓存之后,则在django开发环境里面,运行 python manage.py runserver,如将DEBUG的值设为Tr

jinjia2 flask加载静态文件

一.加载静态文件 静态文件:css 文件.js文件.图片文件 加载静态文件使用的是“url_for”函数 语法:{{ url_for( "static", filename="xxxxx" ) }} 路径查找,要以当前项目的static目录作为根目录. 二.实例:   原文地址:https://www.cnblogs.com/yingxiongguixing/p/11987485.html

eclipse中启动spring-mvc项目时无法加载静态文件的问题分析

问题表现: eclipse里使用spring-mvc框架开发web项目,项目正常启动后能访问jsp页面,但jsp页面的网页效果没有生效,并提示jsp文件里提示js找不到,404错误. (1)初步判断: 在浏览器里debug时,jsp页面提示js文件找不到,提示404错误.由于项目名是littlec-exchange-center,访问时url里是exchangecenter,初步判断是路径有错. 尝试解决:在tomcat的conf路径下查看server.xml配置如下: 可以看到,虽然tomca