一、实验内容
1、EL表达式的熟练使用
创建一个Java Web项目,使用EL表达式获取访问此项目的绝对地址。
相对地址与绝对地址的区别:
相对地址是指相对于当前网页的地址。
绝对地址可以细分为两种:一种是网络地址,一种是本地地址。网络地址以http://、ftp://或https://等网络协议名开头,本地地址是在本地计算机外存储器(硬盘、软件、U盘等)上的地址,绝对路径是能够直接访问的,一般是固定不变的。
EL表达式提供的隐含对象:
pageContext:对应于JSP页面中的pageContext对象,用于获取ServletContext、request、response和 session等其他JSP内置对象。
代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>地址获取</title>
</head>
<body>
<p>获取此项目的绝对地址:${pageContext.request.requestURL}</p>
</body>
</html>
image.png
2、EL表达式的熟练使用
(1)在一个Servlet中创建一个对象集合,例如:List<Student>,将此对象集合类存入request对象属性中,请求转发到listIterator.jsp;
(2)在listIterator.jsp中遍历并使用EL表达式输出Student对象的属性值。
思路:
可以建立一个对象的Javabean,再建立一个对象集合Servlet,将对象实例化并存入request范围内,最后转发到页面listIterator.jsp用EL表达式输出。
这里为了简便,用数组模拟了对象集合,将数组放入list中,属性只有名字,用数组的值模拟对象属性,最后转发页面输出,只有一个Servlet页面。
代码如下:
Student.java
package com.qst.chapter02.servlet;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/Student")
public class Student extends HttpServlet {
private static final long serialVersionUID = 1L;
public Student() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int name =0;
ArrayList Listlist = new ArrayList<>();
//对象集合需要再写一个对象Javabean,所以这里用数组模拟对象集合并赋值
for(int i=0;i<5;i++){
name=name+1;
Listlist.add(name);
}
//将学生列表设置到requet范围中
request.setAttribute("list", Listlist);
//转发页面
request.getRequestDispatcher("/listIterator.jsp").forward(request,response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
listIterator.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>获取得到的学生序号:</p>
<p>
Student序号:
<!-- EL输出,如果是真实的对象放在list中只需要输出list[i].属性就行 -->
${requestScope.list[0]}
${requestScope.list[1]}
${requestScope.list[2]}
${requestScope.list[3]}
${requestScope.list[4]}
</p>
</body>
</html>
运行效果如图
总结
此实验只是简单的EL表达式的基本操作,相比于JSP的脚本语言,EL操作更简洁,在输出页面中本实验用了多次EL输出,其实用JSTL标签库将对象循环输出会更好,JSTL标签库的操作可自行百度。
网友评论