21_jspELAndJavaBean
el表达式
之前的 JSP 页面中,我们经常使用 JSP 表达式来输出变量或者页面之间传递的参数。而使用el表达式,可以简化jsp页面代码
使用EL表达式获取数据语法:"${标识符}"
EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象(从范围小的域依次向范围大的域查找),找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。
实例:
语言accept-language: ${header['accept-language']}
<!-- pageContext可以获得九大内置对象 -->
会话编号session id: ${pageContext.session.id}
雇员信息employee:
<!-- 意思为reguestScope域里面的employee对象的name属性的值 -->
${requestScope.employee.name},<br/>
${employee.address.country},<br/>
${employee.address.state},<br/>
${employee.address.city},<br/>
问题同一个war包下,有一个名为employee的类,而该页面是:
register.jsp,由index里的form表单传过来的数据
这里没有创建employee的对象,为什么在域里会有employee的实例对象呢?下面就介绍一下jsp的自动装配机制
jsp的自动装配
语法
public Object setProperty(String key_ele, String val_ele);
- 字符串key_ele –表示要在其上设置值的键元素。
- 字符串val_ele –表示给定键的value元素。
这里用了
<jsp:setProperty property=“*” name=“user”/>
property = ”*”表示所有名字和Bean属性名字匹配的请求参数都将被传递给相应的属性set方法。同时创建一个名为user的employee对象(通过前面名字匹配的参数找到传过来的参数属于employee的属性)
base标签
base标签是HTML语言中的基准网址标记,它是一个单标签,位于网页头部文件的head标签内,一个页面最多只能使用一个base元素,用来提供一个指定的默认目标,算是一种表达路径和连接网址的标记。
用处
base指定了一个URL地址后,所调用的文件或图片等无须再填写完整的地址,只需写上该文件名或图片名即可。因此可以解决路径冗长繁杂的问题。
在这里我们将
去掉,在不修改图片引用地址的前提下也能找到图片,因为项目所在的默认路径已经是basePath所指向的路径。
basePath
在base标签里的basePath指的是什么呢?
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
- request.getContextPath() 获取当前的系统路径,如果如果项目为根目录,则得到一个"",即空的字条串。
- request.getRealpath(“/”)得到的是实际的物理路径,也就是你的项目所在服务器中的路径
- request.getScheme() 等到的是协议名称,默认是http
- request.getServerName() 得到的是在服务器的配置文件中配置的服务器名称 比如:localhost .baidu.com 等等
- request.getServerPort() 得到的是服务器的配置文件中配置的端口号 比如 8080等。