1:需要使用el表达式,专门替代 <%= %>
2:使用jstl技术专门替代 <% 这里的循环和判断 %>
1 el
1.1 el表达式概述
EL(Expression Language) 是为了使JSP写起来更加简单。是独立的语言。
在jsp页面可以直接编写el表达式的代码,用于获取jsp4大域中的数据或其他地方的数据。
1.2 el表达式的基本语法
在jsp页面上直接使用
${ 4大域中的属性名 };
取值之后,会自动将数据值输出到浏览器。
注意:
如果取不到值,则会返回一个空字符串。
1.3 el表达式的内置对象(红色为常用,但是面试建议全背下来)
就是在${在这里可以直接写的对象名就是el的内置对象}
el的内置对象一共有11个,每一个内置对象都有不同的作用:
具体的:
pageScope
requestScope
sessionScope
applicationScope
上面这4个分别与jsp中的4大域对象相对应
param 就是将浏览器传递过来的所有参数,封装成了一个param对象。使用格式: ${ param.参数名 }
paramValues
Header
headerValues
initParam 获取web.xml中的配置的全局参数
cookie 获取浏览器携带过来的cookie 格式: ${ cookie.cookie的名称 }
pageContext 就是jsp中的pageContext,在el表达式中,通常会使用这个对象来获取jsp中的其他8个对象。
例如: ${ pageContext.request.contextPath } 获取工程的绝对路径!!!(通过内置对象pageContext拿request对象,通过request对象拿getContestPath方法)
1.3.1 内置对象param的使用
目录结构
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<font color="red" size="7">${msg }</font>
<form action="${pageContext.request.contextPath }/LoginServlet" method="get">
用户名:<input type="text" value="${param.username }" name="username">
<br>
<input type="submit">
</form>
</body>
</html>
LoginServlet.java
package com.itheima.demo01_El练习;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 模拟用户登录失败,进行数据回显的效果
*/
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//提示不对 ......
request.setAttribute("msg","用户名或密码错误");
request.getRequestDispatcher("/el/login.jsp").forward(request, response);
}
protected voi