6.10 常见面试题分析
1. 根据你的理解,简述EL所包含的隐含对象
答:EL表达式中包含11个隐含对象,它们分别为:
1)PageContext:表示此JSP的PageContext。
2)pageScope:取得Page范围的属性名称所对应的值。
3)requestScope:取得Request范围的属性名称所对应的值。
4)sessionScope:取得session范围的属性名称所对应的值。
5)applicationScope:取得Application范围的属性名称所对应的值。
6)param:如同ServletRequest.getParameter(String name)。回传String类型的值。
7)paramValues:如同ServletRequest.getParameterValues(String name)。回传String[]类型的值。
8)header:如同ServletRequest.getHeader(String name)。回传String类型的值。
9)headerValues:如同ServletRequest.getHeaders(String name)。回传String[]类型的值。
10)Cookie:如同HttpServletRequest.getCookies()。
11)initParam:如同ServletContext、getInitParameter(String name)。回传String类型的值。
2. 在具体开发Struts2框架应用时,经常会用到哪些数据标签
答:在具体开发中,经常会遇到如下的数据标签,它们分别为:
1)property标签:该标签也许是Struts2中最常用的标签了,它实现的功能也是很简单的—输出OGNL表达式的值。
2)set标签:该标签赋予变量一个特定范围内的值。当希望给一个变量赋一个复杂的表达式,每次访问该变量而不是复杂的表达式时用到。其在两种情况下非常有用:复杂的表达式很耗时(性能提升)或者很难理解(代码可读性提高)。
3)push标签:虽然set标签可以在action context中放置数据,而push标签则可以将对象的引用压入值栈中。如果围绕某单个对象做大量操作,则是相当有用的。可以将对象压入值栈之后直接对其进行操作,而不需要在每个与对象管理的表达式之前加上对象名字。
4)bean标签:实例化一个符合JavaBeans规范的class,标签体内可以包含几个Param元素,用于调用setter方法给此class的属性赋值。如果指定了id属性,则该实例将会放到值栈中。bean标签的参数如表6.14所示。
5)action标签:通过指定命名空间和action名称,该标签允许在JSP页面直接调用action标签体用来渲染action执行结果,除非设定了executeResult参数为true,否则在struts.xml中为该action指定的Result Processor不会执行,这个值默认是false。