
再过去我们学习jsp中获取后台传来的数据的时候可以说是苦不堪言,但学习了EL表达时候,你也会感觉如sping般畅爽
粗略的精华部分

不懂的来看详细的
1. EL: Expression Language, 表达式语言.
2. 在jsp中, 可以通过EL表达式简化java代码的书写. 通过使用EL获取数据(请求参数, 作用域数据).
3. 虽然可以通过<%= %>形式获取数据, 但是较为麻烦:
> 如果用到的数据是对象, 需要先导包;
> 从作用域取出的数据都是Object, 需要类型强转;
> 如果没有数据, 会显示 null.

1.获取用户请求数据(请求实体)
<%=request.getParameter("uname")%>//获取请求实体中一个键一个值的数据
${param.uname}
<%=request.getParameterValues("fav")[1]%>//获取请求实体中同键不同值的数据,返回的是String数组
${paramValues.fav[1]} //可以直接使用角标获取 例如爱好
2.获取sum:
sum: <%=request.getAttribute("sum")
sum: ${sum}
3.获取字符串
str: <%=request.getAttribute("str")%>
str: ${str}
4.获取对象
name:<%=((User)request.getAttribute("user")).getName()
name: ${user.name}
address: <%=((User) request.getAttribute("user")).getAddress().getAddr()
address: ${user.address.addr}
5.获取list集合
name: ((List<User>)request.getAttribute("list")).get(1).getName()
name: ${list[1].name}
addr: ((List<User>) request.getAttribute("list")).get(1).getAddress().getAddr()
addr: ${list[1].address.addr}
6.获取map集合
<%=( (HashMap) request. getAttribute("c")).get("name)%>
name: ${map.c.name}
<%= ((User)( (HashMap)request. getAttribute("c" )).get("address"))>
addr: ${map.c.address.addr}
测试Servlet 主要使用req 作用域
public class TestServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 数字
req.setAttribute("sum:",123);
// 字符串
req.setAttribute("str","abc");
// 对象
User user1 = new User(1, "鸣人", new Address("福州"));
User user2 = new User(1, "佐助", new Address("泉州"));
User user3 = new User(1, "小樱", new Address("厦门"));
req.setAttribute("user",user1);
// List 集合
List<User> list = new ArrayList<>();
// 使用方法将对象装入集合
Collections.addAll(list,user1,user2,user3);
req.setAttribute("list",list);
// Map集合
Map<String, User> map = new HashMap<>();
map.put("a",user1);
map.put("b",user2);
map.put("c",user3);
req.setAttribute("map",map);
// 跳转到测试页面输出
// req.getRequestDispatcher("/demo1.jsp").forward(req,resp);
req.getRequestDispatcher("/demo2.jsp").forward(req,resp);
}
}
没有使用EL表达式获取作用域信息
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>没有使用el表达的取值方式</title>
</head>
<body>
<ul>
<li>demo 获取请求参数: <%=request.getParameter("demo")%>
</li>
<li>sum:<%=request.getAttribute("sum")%>></li>
<li>str:<%=request.getAttribute("str")%></li>
<li> use:
<ul>
<li>name:<%=((User)request.getAttribute("user")).getName()%></li>
<li>address: <%=((User) request.getAttribute("user")).getAddress().getAddr()%></li>
</ul></li>
<li>list
<ul>
<li>name: <%=((List<User>)request.getAttribute("list")).get(1).getName()%></li>
<li>addr: <%=((List<User>) request.getAttribute("list")).get(1).getAddress().getAddr()%></li>
</li>
<li> map
<ul>
<%--<li>name: <%=((Map)request.getAttribute("a")).values()%></li>--%>
<%--<li>address:<%=((Map)request.getAttribute("a")).getOrDefault("a",1)%></li>--%>
</ul>
</li>
<li>没有信息,仅作测试看看返回内容:<%=request.getAttribute("abc")%></li>
</ul>
</body>
</html>
使用EL表达式获取信息
<html>
<head>
<title>EL</title>
</head>
<body>
<%--获取请求参数--%>
<ul>
<li>请求参数:${param.demo}</li>
<li>获取作用域</li>
<li>sum: ${num}</li>
<li>str: ${str}</li>
<li>user
<ul>
<li>name: ${user.name}</li>
<li>addr: ${user.address.addr}</li>
</ul>
</li>
<li>list
<ul>
<li>name: ${list[1].name}</li>
<li>addr: ${list[1].address.addr}</li>
</ul>
</li>
<li>map
<ul>
<li>name: ${map.c.name}</li>
<li>addr: ${map.c.address.addr}</li>
</ul>
</li>
<li>没有数据
${abc}
</li>
</ul>
</body>
</html>
