javaWeb之表达式语言---应用MVC

1,在MVC中应用EL

EL可以通过反射的方式调用保存在属性范围中的java对象内容,比我们现在有一个这样的VO类(Dept.java):

package com.keith.elDemo;

public class Dept {
	private int deptNo;
	private String dName;

	public Dept() {
	}

	public int getDeptNo() {
		return deptNo;
	}

	public void setDeptNo(int deptNo) {
		this.deptNo = deptNo;
	}

	public String getdName() {
		return dName;
	}

	public void setdName(String dName) {
		this.dName = dName;
	}
}

 然后我在jsp中可以通过脚本设置相关内容(elTest.jsp):

	<%
	Dept dept = new Dept();
	dept.setDeptNo(1);
	dept.setdName("java");
	request.setAttribute("deptInfo",dept);
	 %>

 设置完后,我们可以这样访问(elTest.jsp):

	 部门编号:${deptInfo.deptNo }
	 部门名称:${deptInfo.dName }

 在利用EL输出对象属性的操作中实际上还是依靠java反射机制完成(可以在getter方法上加上输出,测试观察);

看下在MVC模式中怎么运用:

ElServlet:

package com.keith.elDemo;

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 ElServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		this.doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		Dept dept = new Dept();
		dept.setDeptNo(007);
		dept.setdName("Java");
		req.setAttribute("deptInfo", dept);
		req.getRequestDispatcher("elTest.jsp").forward(req, resp);
	}

}

 在web.xml:

	<servlet>
		<servlet-name>ELServlet</servlet-name>
		<servlet-class>com.keith.elDemo.ElServlet</servlet-class>
	</servlet>  
	<servlet-mapping>
		<servlet-name>ELServlet</servlet-name>
		<url-pattern>/ELServlet</url-pattern>
	</servlet-mapping>

 elTest.jsp:

	 部门编号:${deptInfo.deptNo }
	 部门名称:${deptInfo.dName }

 此时的页面只管JSP的输出,不用考虑后台是怎么运行的。

2,运算符

在表达式语言中为了方便用户的显示操作定义了许多算术运算符,关系运算符,逻辑运算符,使用这些运算符将会让JSP变得更加简洁;对于太复杂的操作还是应该在Servlet或JavaBean中完成;

No算术运算符描述范例结果
1+加法操作${1+1}2
2-减法操作${2-1}1
3*乘法操作${1*2}2
4/或div除法操作${1/2}或${1 div 2}0.5
5%或mod取模(余数)${1%2}或${1 mod 2}1

EL中还提供了6种关系运算符:

No关系运算符描述范例结果
1==或eq等于${2 == 3 }或${2 eq 3 } false||false
2!=或ne不等于${2!=3 }或${2 ne 3 }
true||true
3<或lt小于${2<3 }或 ${2 lt 3 } true|| true
4>或gt大于${2>3 }或${2 gt 3 } false||false
5<=或le小于等于${2<=3 }或${2 le 3 } true|| true
6>=或ge大于等于${2>=3 }或${2 ge 3 } false||false

EL中提供了3种逻辑运算符:

No逻辑运算符描述范例结果
1&&或and${true && false }或${true and false } false
2||或or${true || false }或${true or false } true
3!或not相反${!true }或${not true } false

EL中还有3种其他运算符:

No其他运算符描述范例结果
1empty判断是否为null${empty deptInfo } false
2?:三目运算${1 > 2 ? "大于":"小于" } 小于
3()括号运算符${1*(2+3) } 5
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值