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 其他运算符 描述 范例 结果
1 empty 判断是否为null ${empty deptInfo } false
2 ?: 三目运算 ${1 > 2 ? "大于":"小于" } 小于
3 () 括号运算符 ${1*(2+3) } 5

你可能感兴趣的:(mvc,jsp,Web,servlet,脚本)