JSP关于设置页面属性的理解
想在代码中设置了一个属性,然后再页面中可以用${name}的形式获取。
使用struts,首先尝试getRespond(),返回HttpServletRespond,发现没有setAttribute或者setParam之类的方法。但是使用getRequest,返回HttpServletRequest,有setAttribute,测试有效,例如
this.getRequest.setAttribute("name", "lingceng");
在页面中使用${name},便能等到lingceng。
疑问: 按照字面理解,request是请求,respond是回复,向页面设置参数应该是在respond上操作,为什么是在request呢?
解答: 解释不难,要从一些基本html的概念出发。request可以看做是浏览器上的一条url,可以接参数,如果是get方式,就能显示地看到如?name=lingceng的样子。而respond只是一系列字符流,没有设置参数一说。
至于为什么request上的参数会到页面上呈现,就在于EL表达式可以访问requestScope的数据
JSP_EL的回顾
简化方式使用了EL,依次从PageContext,HttpServletRequest,HttpSession,servletContext中查找varName的属性对应值。若没有则返回空字符串,若具有同名属性,取得的是靠前对象中的属性值。也可以指定scope:
${requestScope.username }
JSP中9个隐藏对象
TODO:struts value stack