文章目录
21_jspELAndJavaBean
el表达式
之前的 JSP 页面中,我们经常使用 JSP 表达式来输出变量或者页面之间传递的参数。而使用el表达式,可以简化jsp页面代码
使用EL表达式获取数据语法:"${标识符}"
实例:
语言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元素。
这里用了
property = ”*”表示所有名字和Bean属性名字匹配的请求参数都将被传递给相应的属性set方法。同时创建一个名为user的employee对象(通过前面名字匹配的参数找到传过来的参数属于employee的属性)
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等。