虽然JSP已经用的比较少了,趋势是前后端分离嘛。
JSP标准动作
JSP可以写java脚本代码块,但这样对前端页面设计人员不太友好。所以采用标准动作元素来简化JSP,使用格式和html一样,也是采用严格的xml标签语法来表示这些元素。
不要标准动作(使用Java脚本)
<html><body>
<%=((强制转换类型)request.getAttribute("属性名")).getPropertyName()%>
</body></html>
使用标准动作(没有Java脚本)
<html><body>
<jsp:useBean id="属性名" class="强制转换得到的类型的全限定名" scope="作用域类型"/>
<jsp:getProperty name="属性名" property=”propertyName" />
</body> </html>
因为跟html标签很相似,前端页面人员和容易上手。但就上面的代码有一个问题存在:你标准动作不是把作用域请求作为一个JavaBean对象吗?如果这个bean的实例变量是基本数据类型,确实可以直接打印出来,但如果是一个class(类)类型,且这个类类型有个需要打印出来的基本类型的实例变量。怎么办?
简而言之就是,利用<jsp:getProperty>,只能访问bean属性的性质。它不能访问嵌套性质,也就是无法得到我们想要的性质的性质,它只能访问属性的性质。
救星:表达式语言(EL)!
没有脚本的JSP代码,使用EL
<html><body>
Dog's name is:${AttributeName.PropertyName.PropertyName...}
</body></html>
使用EL,打印嵌套性能变得非常容易…换句话说,可以很轻松地打印性质的性质!
举例来说:用这个代码: ${persion.dog.name}
替换以下代码:
<%=((foo.Person) request.getAttribute("person").getDog().getName()%>