JSP中el表达式的取值过程是怎样的?
在html文件中像是这样
<input type="hidden" name="testType" value="${testType}" />
或者是这样
<p>${user}</p>
的el表达式是怎样取值的?
是SpringMVC自己解决的?
===================================================
另外,是直接在web.xml中配置好web-app的版本就可以直接用el表达式了么? 展开
el表达式和Springmvc没关系,el表达式取值必需是servlet四大作用(servletContext>session>request>pageContext)中有的值,这四个域都有setAttribute("",object)方法和getAttribute("")方法 el表达式 会自动从四大域中按作用范围从小到达寻找搜寻对应名字的值,其内部调用的就是pageContext的findAttribute("")方法;如果要想在页面通过el表达式得到值就必需先调用域的setAttribute方法把值设置进去,不需要什么配置,直接写el表达式就可以如下代码
<%
application.setAttribute("name", "zhangsan");//Context域
session.setAttribute("name", "lisi");//session域
request.setAttribute("name", "wangwu"); //request域
pageContext.setAttribute("name", "zhaoliu");//page域
%>
${name }
输出结果是page域中的zhaoliu 如果将page域删掉则输出wangwu 依次类推
哥们 这是javaee基础知识 建议学好基础在整框架 不然只会傻瓜式的复制粘贴 不知道内部工作原理
嗯...可能是我表述还有些问题.....
其实想知道的不是el表达式的原理,是SpringMVC的原理。
可以将SpringMVC看成一个大的servlet 就是对servlet的一个封装
哦?主要不是想知道el表达式的原理,是想了解一下el表达式是怎样取值的...
那一般跟什么有关?
页面用EL表达式取不到值只有这么几种情况:
后台发送的参数没有传递到页面,EL表达式接收不到。
EL要取的参数与后台传递的不是同一个参数。
EL取的目标参数在被封装在另外一个对象内部,EL无法获取到。
spring这个东西强大是强大了,不过往往也因此破换了某些规则,如单例模式碰上Spring就有点行不通,EL表达式在这里不知道是啥情况,期待,呵呵。
el表达式取值必需是servlet四大作用(servletContext>session>request>pageContext)中有的值
EL表达式可以取JavaBean的值,也可以取Attribute的值,下面是取Attribute的值
2.${name }取值是从作用域最小的域进行取值,这里就是pageContext开始取值,即以上四个语句都有的时候,取到的name值是pageContext里面的Attribute中name值pageContextName
在JavaScript里面使用需要在最外层加引号:“${name}”
3.c标签又常与EL表达式使用:
JSP中用EL表达式取 传回来的Attribute中list值(假设list值是 读取数据库数据返回的resultset类转成list类值)
2:el表达式是从session,request或者application context中所取的“属性。
3:el表达式只是一种从上下文中获取数据的手段,你要取得什么信息,先放入上下文中,然后el表达式才可以获取。上下文就是指session,request或者application context、pagecontext
4:以下是如何从web.xml中获取配置信息的一个例子
===================================================
/*通过 getServletConfig() 获取单一值*/
String value = getServletConfig().getInitParameter("name1");
/*获取所有初始化变量*/
java.util.Enumeration enum = getServletConfig().getInitParameterNames();
for (; enum.hasMoreElements(); ) {
// 获取初始化参数的名字
String name = (String)enum.nextElement(); // 获取对应值
value = getServletConfig().getInitParameter(name);
} /* 通过 getServletContext() 获取单一值*/ String value = getServletContext().getInitParameter("name1");
就是说现在的spring已经不需要配置jps属性了?
3. 一般来说应该是取request里面的值,那在SpringMVC里面就是ModleAndView咯?
spring只是封装了servlet而已,不需要配置的
mvc你能控制的也就是M和V,C你也就是顶多配置一下