IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> el表达式和jstl标签库技术(JAVA Web自学笔记08) -> 正文阅读

[Java知识库]el表达式和jstl标签库技术(JAVA Web自学笔记08)

el表达式简介

1. EL表达式
在jsp页面中实现计算、逻辑处理、数据显示等功能
目的 : 减少jsp页面中的java代码
2.web资源访问级别 :
Servlet域对象 :
① pageContext(页面级别) : 只能在当前页面中使用
② request : 一次请求过程中使用
③ session : 一次会话
④application : 整个应用范围内

创建一个项目,以及一个index.jsp(一个超链接) ;
在src中创建一个Servlet;
创建一个webResource.jsp显示页面.
在这里插入图片描述
index.jsp:

<a href="HandlerServlet">HandlerServlet</a>

HandlerServlet.java:

package com.lucene.controller;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


@WebServlet("/HandlerServlet")
public class HandlerServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置request级别变量
		request.setAttribute("username", "request_username");
		//设置session级别变量
		HttpSession session = request.getSession();
		session.setAttribute("username", "session_username");
		//设置application级别变量
		ServletContext context = request.getServletContext();
		context.setAttribute("username", "application_username");
		
		//页面跳转到新的jsp页面
		response.sendRedirect("webResource.jsp");
		}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

webResource.jsp:

	<%
		pageContext.setAttribute("username","pageContext_username");
	%>
	<ul>
		<li>pageContext级别:<%=pageContext.getAttribute("username") %></li>
		<li>request级别:<%=request.getAttribute("username") %></li>
		<li>session级别:<%=session.getAttribute("username") %></li>
		<li>application级别:<%=application.getAttribute("username") %></li>
	</ul>

运行结果:
在这里插入图片描述

因为不同资源放在不同的级别中,取资源就会拿到不一样的资源
因为重定向,会产生新的request,新的request没有username变量,所以为null,若用请求转发,就可以取到

//页面跳转到新的jsp页面
request.getRequestDispatcher("webResource.jsp").forward(request, response);

运行结果:
在这里插入图片描述

el表达式语法

${表达式}
新建一个el.jsp页面:

	4+5=${4+5 }<br>
	4*5=${4*5 }<br>
	6/4=${6/4 }<br>
	6/4=${6 div 4 }<br>
	6%4=${6%4 }<br>
	6%4=${6 mod 4 }<br>

运行结果:
在这里插入图片描述
所以el表达式会按小数进行运算,不会进行取整

el表达式可以对数组、列表等进行运算:
在这里插入图片描述

若使用el表达式访问:

		<li>pageContext级别:${pageScope.username }</li>
		<li>request级别:${requestScope.username }</li>
		<li>session级别:${sessionScope.username }</li>
		<li>application级别:${applicationScope.username }</li>

运行结果:
在这里插入图片描述

当我们使用el表达式获取不同级别相同变量是:
pageContext----->request------>session------>application------>报错

el表达式案例

在包中建立一个实体类:
在这里插入图片描述
并且设置 name , sex , age的setter getter 方法 ; 带参数(不带参数)的构造方法 ; toString方法的重写

package com.lucene.model;

public class Person {
	private String name;
	private String sex;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", sex=" + sex + ", age=" + age + "]";
	}
	public Person(String name, String sex, int age) {
		super();
		this.name = name;
		this.sex = sex;
		this.age = age;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

在com.lucene.controller中创建一个Servlet:
在这里插入图片描述

package com.lucene.controller;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.lucene.model.Person;

@WebServlet("/PersonServlet")
public class PersonServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public PersonServlet() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Person person = new Person("张三","男",22);
		request.setAttribute("person",person);
		request.getRequestDispatcher("showPerson.jsp").forward(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
不建议使用该方法,应该使用jstl标签库技术重构:
新建jsp界面:

	name:${person.name }<br>
	sex:${requestScope.person.sex }<br>
	age:${requestScope.person.age }<br>

将PersonServlet设置为项目首页:更改lib中的web.xml文件(删除多余的部分只留一个)
在这里插入图片描述
运行项目:PersonServlet.java------>showPerson.jsp------>显示
运行结果:
在这里插入图片描述

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

jstl标签库技术与案例代码重构

jstl标签库技术

新建jsp页面:jstlDemo1.jsp
引入使用@taglib:

 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

在这里插入图片描述
①items : 接收需要处理的数据
②delims : 分隔符 , 按照分隔符进行分割
③var : date变量 , 按照切分形成若干部分 , 每个代表一个部分 , 相当于循环过程
④href : 每一次取出来的地址的内容 , 作为超链接的连接目标
⑤可视化部分 : 让这个地址作为用户能看到的部分

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-06 15:07:02  更:2021-12-06 15:07:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:51:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码