java_web之jsp之pageContext
2012-11-10 12:57
267 查看
Jsp运行原理与九大隐式对象:
Jsp运行原理:每一个jsp页面第一次打开时,web容易都会把请求转给jsp引擎(java程序)去处理;jsp引擎先将jsp翻译成一个servlet类;然后按照servlet的方式进行调用;
九大隐式对象:request,response,page,pageContext,config ,aplication ,out , session , exception ;
pageContext 对象:是jsp技术中重要的一种对象;它代表jsp页面的运行环境,不仅封装了其他八大隐式对象,自己本身还是一个域;可以用来保存数据;
getException方法返回exception隐式对象
getPage方法返回page隐式对象
getRequest方法返回request隐式对象
getResponse方法返回response隐式对象
getServletConfig方法返回config隐式对象
getServletContext方法返回application隐式对象
getSession方法返回session隐式对象
getOut方法返回out隐式对象
pageCotext的与范围是当前jsp页面,相比于其他要小,域对象包括request、session、aplication(最大)、pageContext(最小);
pageContext属性的方法:
public void setAttribute(java.lang.String name,java.lang.Object value)//设置属性
public java.lang.Object getAttribute(java.lang.String name)//通过name获取属性;
public void removeAttribute(java.lang.String name)//移走属性,相当于删除;
pageCotext还封装了访问其他域的方法
public java.lang.Object getAttribute(java.lang.String name,int scope)//数值类型代表范围,范围相当于一个域,分为四个:APPLICATION_SCOPE,PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE相当于在指定的域找到这个属性,获取它的值;
public void setAttribute(java.lang.String name, java.lang.Object value,int scope)//
设置属性,并把它放在哪一个域里;
public void removeAttribute(java.lang.String name,int scope)//从哪一个域里移出属性;
代表各个域的常量
PageContext.APPLICATION_SCOPE
PageContext.SESSION_SCOPE
PageContext.REQUEST_SCOPE
PageContext.PAGE_SCOPE
findAttribute(java.lang.String name)方法 //查找指定的属性,首先在当前page下查找,如果个没有,到request下逐次到session,application下查找,如果找不到返回null;
<%
request.setAttribute("name","username");
//request.getAttribute("name");
String value = (String)pageContext.getAttribute("name",pageContext.REQUEST_SCOPE);
out.print(value);
%> <br>
<%=pageContext.findAttribute("name") %>
PageContext类中定义了一个forward方法和两个include方法来分别简化和替代RequestDispatcher.forward方法和include方法。
方法接收的资源如果以“/”开头, “/”代表当前web应用。
<%pageContext.forword(“url”);%>//跳转到某个路径
<%pageContext.includ(“url”)%>//把某个页面内容包含进来 属于动态包含
JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护。
Jsp标签:
1、<jsp:include>:
<jsp:include>标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入。
语法:
<jsp:include page="relativeURL | <%=expression%>" flush="true|false" />
<% pageCotext include=”url”%>;作用相同;
page属性用于指定被引入资源的相对路径,它也可以通过执行一个表达式来获得。
flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端。
<jsp:include>与include指令(<%@include file="relativeURL" % >)的比较:
<jsp:include>标签是动态引入, <jsp:include>标签涉及到的2个JSP页面会被翻译成2个 servlet,这2个servlet的内容在执行时进行合并。
而include指令是静态引入,涉及到的2个JSP页面会被翻译成一个servlet,其内容是在源文件级别进行合并。
不管是<jsp:include>标签,还是include指令,它们都会把两个JSP页面内容合并输出,所以这两个页面不要出现重复的HTML全局架构标签,否则输出给客户端的内容将会是一个格式混乱的HTML文档
2、<jsp:forword>
<jsp:forward>标签用于把请求转发给另外一个资源。
语法:
<jsp:forward page="relativeURL | <%=expression%>" />
page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得。
3、<jsp:param>//不能单独使用,必须配合前面两个使用;
当使用<jsp:include>和<jsp:forward>标签引入或将请求转发给其它资源时,可以使用<jsp:param>标签向这个资源传递参数。
语法1:
<jsp:include page="relativeURL | <%=expression%>">
<jsp:param name="parameterName" value="parameterValue|<%= expression %>" />
</jsp:include>
语法2:
<jsp:forward page="relativeURL | <%=expression%>">
<jsp:param name="parameterName" value="parameterValue|<%= expression %>" />
</jsp:include>
<jsp:param>标签的name属性用于指定参数名,value属性用于指定参数值。在<jsp:include>和<jsp:forward>标签中可以使用多个<jsp:param>标签来传递多个参数。
如果想获取的话,直接在将要跳转的页面获取属性,用过getParameter属性
如果值是中文,设置字符编码;
映射JSP:
只需在文本页面配好
<servlet>
<servlet-name>SimpleJspServlet</servlet-name>
<jsp-file>/jsp/simple.jsp</jsp-file>
<load-on-startup>1</load-on-startup >
</servlet>
……
<servlet-mapping>
<servlet-name>SimpleJspServlet</servlet-name>
<url-pattern>/xxx/yyy.html</url-pattern>
</servlet-mapping>
如何查找JSP页面中的错误
JSP页面中的JSP语法格式有问题,导致其不能被翻译成Servlet源文件,JSP引擎将提示这类错误发生在JSP页面中的位置(行和列)以及相关信息。
JSP页面中的JSP语法格式没有问题,但被翻译成的Servlet源文件中出现了Java语法问题,导致JSP页面翻译成的Servlet源文件不能通过编译,JSP引擎也将提示这类错误发生在JSP页面中的位置(行和列)以及相关信息。
JSP页面翻译成的Servlet程序在运行时出现异常,这与普通Java程序的运行时错误完全一样,Java虚拟机将提示错误发生在Servlet源文件中的位置(行和列)以及相关信息。
Jsp运行原理:每一个jsp页面第一次打开时,web容易都会把请求转给jsp引擎(java程序)去处理;jsp引擎先将jsp翻译成一个servlet类;然后按照servlet的方式进行调用;
九大隐式对象:request,response,page,pageContext,config ,aplication ,out , session , exception ;
pageContext 对象:是jsp技术中重要的一种对象;它代表jsp页面的运行环境,不仅封装了其他八大隐式对象,自己本身还是一个域;可以用来保存数据;
getException方法返回exception隐式对象
getPage方法返回page隐式对象
getRequest方法返回request隐式对象
getResponse方法返回response隐式对象
getServletConfig方法返回config隐式对象
getServletContext方法返回application隐式对象
getSession方法返回session隐式对象
getOut方法返回out隐式对象
pageCotext的与范围是当前jsp页面,相比于其他要小,域对象包括request、session、aplication(最大)、pageContext(最小);
pageContext属性的方法:
public void setAttribute(java.lang.String name,java.lang.Object value)//设置属性
public java.lang.Object getAttribute(java.lang.String name)//通过name获取属性;
public void removeAttribute(java.lang.String name)//移走属性,相当于删除;
pageCotext还封装了访问其他域的方法
public java.lang.Object getAttribute(java.lang.String name,int scope)//数值类型代表范围,范围相当于一个域,分为四个:APPLICATION_SCOPE,PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE相当于在指定的域找到这个属性,获取它的值;
public void setAttribute(java.lang.String name, java.lang.Object value,int scope)//
设置属性,并把它放在哪一个域里;
public void removeAttribute(java.lang.String name,int scope)//从哪一个域里移出属性;
代表各个域的常量
PageContext.APPLICATION_SCOPE
PageContext.SESSION_SCOPE
PageContext.REQUEST_SCOPE
PageContext.PAGE_SCOPE
findAttribute(java.lang.String name)方法 //查找指定的属性,首先在当前page下查找,如果个没有,到request下逐次到session,application下查找,如果找不到返回null;
<%
request.setAttribute("name","username");
//request.getAttribute("name");
String value = (String)pageContext.getAttribute("name",pageContext.REQUEST_SCOPE);
out.print(value);
%> <br>
<%=pageContext.findAttribute("name") %>
PageContext类中定义了一个forward方法和两个include方法来分别简化和替代RequestDispatcher.forward方法和include方法。
方法接收的资源如果以“/”开头, “/”代表当前web应用。
<%pageContext.forword(“url”);%>//跳转到某个路径
<%pageContext.includ(“url”)%>//把某个页面内容包含进来 属于动态包含
JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护。
Jsp标签:
1、<jsp:include>:
<jsp:include>标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入。
语法:
<jsp:include page="relativeURL | <%=expression%>" flush="true|false" />
<% pageCotext include=”url”%>;作用相同;
page属性用于指定被引入资源的相对路径,它也可以通过执行一个表达式来获得。
flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端。
<jsp:include>与include指令(<%@include file="relativeURL" % >)的比较:
<jsp:include>标签是动态引入, <jsp:include>标签涉及到的2个JSP页面会被翻译成2个 servlet,这2个servlet的内容在执行时进行合并。
而include指令是静态引入,涉及到的2个JSP页面会被翻译成一个servlet,其内容是在源文件级别进行合并。
不管是<jsp:include>标签,还是include指令,它们都会把两个JSP页面内容合并输出,所以这两个页面不要出现重复的HTML全局架构标签,否则输出给客户端的内容将会是一个格式混乱的HTML文档
2、<jsp:forword>
<jsp:forward>标签用于把请求转发给另外一个资源。
语法:
<jsp:forward page="relativeURL | <%=expression%>" />
page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得。
3、<jsp:param>//不能单独使用,必须配合前面两个使用;
当使用<jsp:include>和<jsp:forward>标签引入或将请求转发给其它资源时,可以使用<jsp:param>标签向这个资源传递参数。
语法1:
<jsp:include page="relativeURL | <%=expression%>">
<jsp:param name="parameterName" value="parameterValue|<%= expression %>" />
</jsp:include>
语法2:
<jsp:forward page="relativeURL | <%=expression%>">
<jsp:param name="parameterName" value="parameterValue|<%= expression %>" />
</jsp:include>
<jsp:param>标签的name属性用于指定参数名,value属性用于指定参数值。在<jsp:include>和<jsp:forward>标签中可以使用多个<jsp:param>标签来传递多个参数。
如果想获取的话,直接在将要跳转的页面获取属性,用过getParameter属性
如果值是中文,设置字符编码;
映射JSP:
只需在文本页面配好
<servlet>
<servlet-name>SimpleJspServlet</servlet-name>
<jsp-file>/jsp/simple.jsp</jsp-file>
<load-on-startup>1</load-on-startup >
</servlet>
……
<servlet-mapping>
<servlet-name>SimpleJspServlet</servlet-name>
<url-pattern>/xxx/yyy.html</url-pattern>
</servlet-mapping>
如何查找JSP页面中的错误
JSP页面中的JSP语法格式有问题,导致其不能被翻译成Servlet源文件,JSP引擎将提示这类错误发生在JSP页面中的位置(行和列)以及相关信息。
JSP页面中的JSP语法格式没有问题,但被翻译成的Servlet源文件中出现了Java语法问题,导致JSP页面翻译成的Servlet源文件不能通过编译,JSP引擎也将提示这类错误发生在JSP页面中的位置(行和列)以及相关信息。
JSP页面翻译成的Servlet程序在运行时出现异常,这与普通Java程序的运行时错误完全一样,Java虚拟机将提示错误发生在Servlet源文件中的位置(行和列)以及相关信息。
相关文章推荐
- 【Java.Web】JSP —— 语法基础 —— PageContext抽象类
- Tomcat与JavaWeb 3.3 JSP的异常处理、发布和PageContext
- javaweb-jsp-PageContext对象分析及代码和截图案例
- 深入分析JavaWeb Item12 -- jsp运行原理与基本语法
- http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed wit
- Javaweb开发为什么需要分前后端,放弃原生JSP
- JavaWeb之 JSP基础
- JavaWeb之jsp编译为java源码的文件地址
- maven项目下JSTL表达式联系出现java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.jsp.index_jsp
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之17.Session
- JavaWeb——JSP内置对象application,JSP属性范围
- eclipse中jsp文档无语法着色,安装Eclipse Java Web Developer Tools插件
- 【Java.Web】JSP —— 语法基础 —— 选择在web.xml配置访问JSP URL
- [Java web] JSP 内置对象
- javaWeb jsp中的九大内置对象 及 四个作用域
- 关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件(转载)
- Java Web开发之详解JSP
- Java EE WEB工程师培训——JDBC+Servlet+JSP整合开发之21.Servlet_资源访问(访问数据库) 推荐
- 复习java web之jsp入门_El表达式_JSTL标签库
- JavaWeb之JSP--------------JSP小结