EL表达式
读取requestScope的对象
- 编写一个servlet,转发到显示页面
- 在requestScope里面存现一个Person对象
- 在显示页面使用el表达式将对象去取
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
//设置request和response编码格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
Person person = new Person("王二",99,"男");
request.setAttribute("person", person);
request.getRequestDispatcher("/el/getElTest01.jsp").forward(request, response);
out.flush();
out.close();
}
显示页面
- 可以通过“ . ”直接获取person的属性值
- person.age 相当于调用person的age的get方法
----获取requestScope里面的person对象-------
${requestScope.person.name }<br>
<!--
直接获取person.xxx,没有指定从哪个域对象开始取值
从pageScope, requestScope,sessionScope,applicationScope开始取值
-->
${person.age +1 }<br>
--------------------Boolean表达式---------------------------------<br>
${person1 == null } person1在所有域里面都为null <br>
${person != null } person不为null<br>
${empty person.age} 判断age是否为null<br>
${person != null ? "正确" : "错误"} <br>
结果:
三目运算符的使用
<input type="radio" name="gender" ${person.sex=="男"? "checked":" "}>男
<input type="radio" name="gender" ${person.sex=="女"? "checked":" "}>女
结果:
获取Map集合里面的值
<%
//创建一个map集合
Map<String,String> map = new HashMap<String,String>();
//向map集合添加元素
map.put("k1", "v1");
map.put("k2", "v2");
map.put("k2", "v2");
//将map集合放到requestScope域里面
request.setAttribute("map", map);
%>
<!-- 去取map的k1的值 -->
map集合里面k1的值为:${map.k1 };
获取请求头
<h3>获取请求头</h3>
获取请求头${header}<br><br><br>
获取请求头的Accept:${header.Accept}<br>
<%-- 当获取Accept-Encoding,"${header.Accept-Encoding}"这样写会报错,其中的“-”是特殊符号 --%>
获取请求头的Accept-Encoding:${header["Accept-Encoding"]} <br>
获取请cookie对象:${cookie }<br>
获取cookie.JSESSIONID的值:${cookie.JSESSIONID.value }<br>
获取请求方式:${pageContext.request.method }
web.xml文件中配置初始化参数
web.xml文件
<context-param>
<param-name>name</param-name>
<param-value>张三</param-value>
</context-param>
获取初始化参数
取web.xml的初始化参数:${initParam.name }
- 域对象重小到大的排序
pageScope , requestScope,sessionScope,applicationScope
pageScope在当前页有效,相当于this,不管是转发还是重定向都会丢失属性和参数。
- ${param.name}
name: "${param.name }"<br>
//相当于
<%
out.println(request.getParameter("name"));
%>
- age: ${param.age2 + 10}可以进行类型转换,将String装换成Int
age: ${param.age2 + 10}<br>
<%
String age = request.getParameter("age2");
Integer.parseInt(age);
%>
- ${paramValues.color } 接收数组类型
color: "${paramValues.color }"<br>
<%
String[] color = request.getParameterValues("color");
%>
- ${applicationScope.time } 获取 applicationScope里面的time对象
${applicationScope.time }
<%
application.getAttribute("time");
%>
- ${sessionScope.person.name }接收实体对像可以采用联级的方式来获取属性值
Person对像用于测试
重域对象里面取值的问题
Person personSession = new Person();
personSession.setAge(25);
//这里是sessionScope里面的
session.setAttribute("perScope", personSession);
Person personRequesr = new Person();
personRequesr.setAge(20);
request.setAttribute("perScope", personRequesr);
- ${perScope.age }先重小范围属性小的开始查找当小的范围查找到就取出(key,value)
所以age = 25
//指定重session域对象,里面取出person在取出name
sessionAttrtubite: ${sessionScope.person.name }<br>
<!-- 对于key有特殊符号的要使用[] -->
sessionAttrtubite: ${sessionScope["com.zx.entity.Person"].name }<br>
${sessionScope.person.name }解析
- sessionScope进入session的域对象里面
- seesionScope.person调用getAttribute(String s)
- sessionScope.person.name调用Person的getName方法
“${paramValues.color[0]}获取第一个数组
${pageContext.request.contextPath }获取web Application的名称
pageContext即为pageContext类型,但只能是只读属性,就可以一直的.下去