为了实现与用户的动态交互或者控制页面输出,需要在JSP页面中嵌入大量的Java代码。
能否在JSP页面中不使用Java代码而访问数据呢?
当然可以喽,用El就能解决这个问题!
什么是EL
EL即Expression Language(表达式语言)
EL的功能
替代JSP页面中的复杂代码
EL的语法
${ EL exprission}
${ bean.name } 或 ${ bean['name'] }
EL的特点
自动转换类型
EL得到某个数据时可以自动转换类型
对于类型的限制更加宽松
使用简单
相比较在JSP中嵌入Java代码,EL应用更简单
EL的语法
EL语法
以“${”作为开始,以“}”作为结束
直接使用变量名获取值$
${ username }
变量属性范围名称
EL中的运算符
EL运算符
运算符”[ ]”
运算符”.”
作用
获取对象属性
${user.name} =》得到user对象的name属性 等价于${user[name]}
获取对象集合中的数据
在Session中保存了一个(list)集合users
${sessionScope.users[1]} =》得到集合中第二位的对象
扫描二维码关注公众号,回复:
3151740 查看本文章
EL运算符
el实际应用:
1.创建EL.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>El</title>
</head>
<body>
<fieldset>
<legend>
简单字符串
</legend>
${str}
${sessionScope.welcome2}
${applicationScope.welcome3}
</fieldset>
<fieldset>
<legend>
特殊字符串
</legend>
${welcome}
${welcome1}
</fieldset>
<fieldset>
<legend>
自定义对象
</legend>
${newstest.id},${newstest.tid},${newstest.title},${newstest.ncontent}<br/>
</fieldset>
<fieldset>
<legend>
集合
</legend>
${newslisttest[0].id},${newslisttest[0].tid},${newslisttest[0].title},${newslisttest[0].ncontent}<br/>
${newslisttest[1].id},${newslisttest[1].tid},${newslisttest[1].title},${newslisttest[1].ncontent}
</fieldset>
<fieldset>
<legend>
运算符
</legend>
v+1: ${v+1}<br/>
v-1: ${v-1}<br/>
v*1: ${v*1}<br/>
v/1: ${v/1}<br/>
v/1: ${v div 1}<br/>
v%3: ${v % 3}<br/>
v%3: ${v mod 3}<br/>
v>2: ${v>3}<br/>
</fieldset>
<fieldset>
<legend>
测试是否为空
</legend>
${empty v} <br/>
${empty v1}<br/>
${empty v2}<br/>
${empty v3}<br/>
${empty v4}<br/>
${empty v5}<br/>
</fieldset>
</body>
</html>
2.创建ElServlet (news实体类以及业务逻辑层在此不再赘述,如需使用自行创建)
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.xintouyun.jweb.entity.News;
import com.xintouyun.jweb.service.NewsService;
import com.xintouyun.jweb.service.impl.NewsServiceImpl;
public class ElServlet extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException{
//创建session
HttpSession session =request.getSession();
//创建application
ServletContext application=request.getServletContext();
request.setAttribute("str", "hello world");
request.setAttribute("welcome", "<font color='red'>你好</font>");
//request.setAttribute("welcome1","<script> alert(111111) </script>");
session.setAttribute("welcome2", "nihao");
application.setAttribute("welcome3", "nihaoa");
NewsService newsservice=new NewsServiceImpl();
News news2=newsservice.getNews(14);
request.setAttribute("newstest", news2);
List<News> news3=newsservice.listNews();
request.setAttribute("newslisttest", news3);
request.setAttribute("v", "10");
request.setAttribute("v1", null);
request.setAttribute("v2", "");
request.setAttribute("v3", new ArrayList<>());
request.setAttribute("v3", "value4");
request.getRequestDispatcher("El.jsp").forward(request, response);
}
}
3.配置web.xml文件
<servlet>
<servlet-name>ElServlet</servlet-name>
<servlet-class>com.xintouyun.jweb.servlet.ElServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ElServlet</servlet-name>
<!--访问servlet的路径:必须以/开头,这个/代表应用的根 -->
<url-pattern>/ElServlet</url-pattern>
</servlet-mapping>
配置完毕后重启tomcat服务器:
在服务器地址栏访问:http://localhost:8080/myweb/ElServlet(我的项目名字是myweb)