JSP动作指令初级解析
2016-01-28 21:25
711 查看
编译指令与动作指令的不同动作指令与编译指令不同,编译指令是同志Servlet引擎的处理消息,而动作指令只是运行时候的动作。编译指令在将JSP编译成Servlet时起了作用,而处理指令通常可替换成JSP脚本,forward指令,执行页面转向,将请求的处理转发到下一个页面。forward指令用于将页面响应转发到另外的页面,既可以是静态的HTML页面,也可以是动态的JSP页面,或者转发到容器中的Servlet。语法:
<span style="white-space:pre"> </span><jsp:forward page="relativeURL|<%=expression%>"/><%--可以通过<jsp:param>来添加额外的请求参数。该请求参数可以通过HttpServletRequest的getParameter方法获取。--><jsp:param name="paramName" value="paramValue"/></jsp:forward>注意:执行forward指令转发请求时,用户请求的地址没有改变的,但是页面的内容完全被forword目标页的内容修改。请求的信息,属性都是同一条。编译后的内容为:
if (true) {_jspx_page_context.forward( "forward.jsp" + "?"+ org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("age", request.getCharacterEncoding())+"="+org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("11", request.getCharacterEncoding()));return;}include指令:用于动态引入一个JSP页面。include指令是一个动态include指令,用于包含某个页面。不会导入被include页面的编译指令,仅仅是将被导入的页面的body部分插入到被include页面中。语法:
<span style="white-space:pre"> </span><jsp:include page="relativeURL|<%=expression%>" flush="true|false">
<span style="white-space:pre"> </span><%-- <span style="font-family: Arial, Helvetica, sans-serif;">可以通过<jsp:param>来添加额外的请求参数。该请求参数可以通过HttpServletRequest的getParameter方法获取。</span> -->
<span style="white-space:pre"> </span><jsp:param name="paramName" value="paramValue"/><span style="white-space:pre"> </span></jsp:forward>flush属性是指定输出缓冲是否被转移到被导入的页面中,注意:动态导入时使用一个include方法将导入页面的数据包含进来。编译后的内容:
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "include.jsp" + "?"+ org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("age", request.getCharacterEncoding())+ "=" + org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("11", request.getCharacterEncoding()),
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "include.jsp" + "?"+ org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("age", request.getCharacterEncoding())+ "="+ org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("11", request.getCharacterEncoding()),out,false);注意:include动作与include指令的区别1、 include动作(动态导入)是在Servlet中使用include方法来引入被导入页面的内容,(运行时引入)include指令(静态导入)是将被导入页面的代码全部融入,两个页面融合成一个整体(编译时导入)2、 静态导入时被导入页面的编译指令会起作用,动态导入时被导入页面的编译指令会失去作用。只是插入body内容。3、 动态导入可以添加额外的参数。注意:include动作与forward动作的区别1、 相同点:都采用方法来引入目标页面。forward动作使用_jspx_page_context的forward方法引入目标页面,include动作使用JspRuntimeLibrary的include方法引入目标页面2、 不同点:执行forward动作时,页面会被完全替代。执行include时,只是将body部分的内容插入到原有页面。param指令:用于在include和forward动作中传递参数语法:
<jsp:param name="paramName" value="paramValue" />setProperty、useBean、getPropertyuseBean:在JSP页面中初始化一个Java实例setProperty:为javaBean实例的属性设置值getProperty:输出JavaBean实例的属性useBean:创建一个JavaBean的实例。语法:
<jsp:useBean id="beanId" class="className" scope="page|request|session|application"/>id:设置的javabean变量名class:用于创建javaBean的类scope:范围属性:page:该javaBean实例尽在该页面有效request:在本次请求中有效session:在本次对话中有效application:在本应用中一直有效翻译后的内容
cn.jiang.Person person = null;person = (cn.jiang.Person) _jspx_page_context.getAttribute("person", javax.servlet.jsp.PageContext.PAGE_SCOPE);if (person == null){person = new cn.jiang.Person();_jspx_page_context.setAttribute("person",person, javax.servlet.jsp.PageContext.PAGE_SCOPE);}setProperty:设置JavaBean实例的属性值。语法:
<jsp:setProperty name="beanName" property="propertyName" value="propertyName"/>name:设置的javaBean名property:要设置的javaBean的属性名value:设置的javaBean属性的属性值其中propertyName对应的是javaBean的setPropertyName,即该属性值应该是对应的set方法翻译后的内容:
org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(_jspx_page_context.findAttribute("person"),"name","测试名1",null,null,false);getProperty:输出JavaBean实例的属性值。语法:
<jsp:getProperty name="beanName" property="propertyName"/>name:javaBean的实例名property:输出的javaBean的属性名其中propertyName对应的javaBean的getPropertyName,即该属性值对应的是get方法翻译后的内容:
out.write(org.apache.jasper.runtime.JspRuntimeLibrary.toString((((cn.jiang.Person)_jspx_page_context.findAttribute("person")).getName())));
相关文章推荐
- EXTJS Ajax请求中文乱码
- javascript indexOf startWith
- JSON例子应用
- 图表插件 - chart.js (柱状图) 学习总结
- struts2如何在提交前进行js代码判断
- 【JSOI2015】字符串树
- JsViews Error:Unknown template:“#projectData”
- Rhino -- 基于java的javascript实现
- 多说使用ua-parser-js显示浏览器和系统信息
- Javascript 如何访问 和 修改CSS样式(网页样式)
- 浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
- 11、BaseJsonRes
- javascript方式实现无缝滚动(两种方式)
- 理解js的prototype原型对象
- javascript高级程序设计第三章
- 135 js 高程6.1
- WebSocket的JavaScript例子
- 将jsp文件打包进jar包内使用
- js和jq的不同方法
- 韩顺平 javascript教学视频_学习笔记22_js事件驱动机制_js事件分类_js访问css技术