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"%>
Springmvc加载静态文件和开启EL表达式的支持的更多相关文章
- springmvc 加载静态文件失败
header.jsp,部分代码 <head> <title>QA|VIS_PLATFORM</title> <meta content="width ...
- 在seajs中使用require加载静态文件的问题
注意,在seajs中使用require加载静态文件时,必须使用常量,不能用变量.如果一定要用变量,请使用require.async var html = require("view/sys/ ...
- flask模板应用-加载静态文件:添加Favicon,使用CSS框架,使用宏加载静态资源
加载静态文件 一个Web项目不仅需要HTML模板,还需要许多静态文件,比如CSS.JavaScript文件.图片和声音声.在flask程序中,默认需要将静态文件存储在与主脚本(包含程序实例的脚本)同级 ...
- django加载静态文件
在一个网页中,不仅仅只有一个 html 骨架,还需要 css 样式文件. js 执行文件以及一些图片等,因此在 DTL 中加载静态文件是一个必须要解决的问题.在 DTL 中,使用 static 标签来 ...
- easyui datagrid 加载静态文件中的json数据
本文主要介绍easyui datagrid 怎么加载静态文件里的json数据,开发环境vs2012, 一.json文件所处的位置 二.json文件内容 {"total":28,&q ...
- Django模版中加载静态文件配置详解
.settings.INSTALLED_APPS下添加:django.contrib.staticfiles .settings.py下添加:STATIC_URL = '/static/' . ()在 ...
- 41.Python中加载静态文件
在一个网页中,不仅仅只有一个html骨架,还需要css样式文件,js执行文件以及一些图片等.因此在DTL中加载静态文件时一个必须要解决的问题.在DTL中,使用static标签来加载静态文件.要使用st ...
- nginx提高加载静态文件速度
1.本来对于静态网页,我们不需要放在应用容器中,原因一时由于应用服务器是用来解析动态网页的,针对静态网页本来就性能不高,而且还会占用应用容器的资源,所以我们专门使用nginx用来解析静态网页. ...
- 二十:jinja2之加载静态文件
静态文件: flask默认指定的静态文件路径为根目录下的static,可以自定义路径,并指定,使用url_for('文件夹', filename='文件名')引用 加载css文件 加载js文件 其他文 ...
随机推荐
- jQuery.on() 函数详解
on() 函数用于为指定元素的一个或多个事件绑定事件处理函数. 此外,你还可以额外传递给事件处理函数一些所需的数据. 从jQuery 1.7开始,on()函数提供了绑定事件处理程序所需的所有功能,用于 ...
- Single Number,Single Number II
Single Number Total Accepted: 103745 Total Submissions: 218647 Difficulty: Medium Given an array of ...
- 合理的使用size_t可以提高程序的可移植性和代码的可读性,让你的程序更高效。
最近研读STL源码时,发现里面有很多ptrdiff_t类型的数据,这与size_t的作用类似.以下是一篇关于size_t等平台无关类型的作用,写得很清楚.特将其记录下来. http://blog.cs ...
- Java三大特征之继承(二)
在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...
- java.util.logging.Logger基础教程
从JDK1.4开始即引入与日志相关的类java.util.logging.Logger,但由于Log4J的存在,一直未能广泛使用.综合网上各类说法,大致认为: (1)Logger:适用于小型系统,当日 ...
- AngularJS如何给动态添加的DOM中绑定事件
正常情况(即非动态插入 DOM 对象)下,ng-click 这样的指令之所以有效(即点击之后能调用注册在可见作用域里的方法),是因为 angular 在 compiling phase(编译阶段)将宿 ...
- C语言的本质(23)——C标准库之输入与输出(上)
1..文件的基本概念 所谓"文件"是指一组相关数据的有序集合.这个数据集有一个名称,叫做文件名.实际上在前面的各章中我们已经多次使用了文件,例如源程序文件.目标文件.可执行文件.库 ...
- 命名空间“System.Windows.Forms”中不存在类型或命名空间名称“DataVisualization”。是否缺少程序集引用?
using System.Windows.Forms.DataVisualization.Charting; 编译时报警:命名空间"System.Windows.Forms"中不存 ...
- Linux下更新瑞芯微固件
有这样的需求,是因为提供的BSP中是在windows下烧写的系统.我直接在linux下开发,每次编译后代码都要在windows下烧写,是一个很麻烦的事情.为了解决这个问题我尝试着用VirtualBox ...
- 手机端页面自适应:rem布局
rem布局非常简单,首页你只需在页面引入这段原生js代码就可以了 (function (doc, win) { var docEl = doc.documentElement, resizeEvt = ...