Jsp文件最终会被转换成一个Servlet类,在这个类中定义了一些变量可以直接使用,这就是jsp中的内置对象。
Jsp第一次访问会被转换成Servlet类,所以第一次访问比较慢。
九个内置对象有:
1、out 对应的类是JSPWriter
2、request 对应的类是HttpServletRequest
3、response 对应的类是HttpServletResponse
4、session 对应的类是 HttpSession
5、application 对应的类是ServletContext
注:
ServletContext 与application的异同
相同:其实servletContext和application 是一样的,就相当于一个类创建了两个不同名称的变量。在 servlet中ServletContext就是application对象。大家只要打开jsp编译过后生成的Servlet中的_jspService()方法就可以看到如下的声明:
ServletContextapplication = null;
application= pageContext.getServletContext();
不同:两者的区别就是application用在jsp中,servletContext用在servlet中。application和page request session 都是JSP中的内置对象,在后台用ServletContext存储的属性数据可以用application对象获得。
而且application的作用域是整个Tomcat启动的过程。
例如:ServletContext.setAttribute("username",username);
则在JSP网页中可以使用 application.getAttribute("username");
来得到这个用户名。
6、page 对应的类是 当前jsp页面生成的Servlet类的对象
7、pageContext 对应的类是 PageContext
8、config对应的类是 ServletConfig
9、exception 对应的类是 Exception
一、page
page等同于this
从转换后的Servlet类的代码中,可以看到这种关系:Object page = this;
二、pageContext
每个页面都有一个pageContext对象
1、获得其他对象
pageContext相当于所有其他内置对象的大总管,通过pageContext可以获得其他的八个对象。
pageContext.getServletContext() 就是获得application内置对象。
((HttpServletRequest)(pageContext.getRequest())).getContextPath() 获得项目的根路径。
2、保存数据
setAttribute(“nane”,”张三”)
getAttribute(“name”)
范围是当前的jsp页面 包含的页面也获取不到
和在页面中定义一个变量的用法一样
<%
String name=”张三”;
%>
区别是通过setAttribute保存的数据,可以通过el表达式获取${name}
但是定义的变量不能通过el表达式获取
三、application
常用方法 setAttribute() getAttribute()
作用范围是整个Web应用程序,在Web应用程序运行期间,所有的页面都可以访问在这个范围内的对象。比session的应用范围要大。
启动Tomcat服务的时候 创建application对象
停止Tomcat服务的时候 销毁application对象
所有人访问的都是同一个对象,任何一个人修改了application的数据,其他人看到的都是修改之后的。
用的很少。
可以用于统计当前在线人数。
三、exception
在jsp页面的page指示符中添加属性isErrorPage=”true” 才可以使用exception对象
新建一个jsp页面error.jsp 然后添加isErrorPage属性和代码
<%@page isErrorPage=”true”>
<%
String msg=exception.getMessage();
out.print(msg);
%>
然后在另外一个页面的page指示符中添加属性
<%page errorPage=”error.jsp” %>
说明这个页面中有任何的错误都会跳转到error.jsp页面。
有错误页面的好处:
客户体验比较好
代码中的错误信息不会被看到
实际中用的比较少,因为用这个方式没有办法区分是什么原因造成的。 有比这个更好的错误提示 比如说404跳转到哪个页面 500跳转到哪个页面
在页面中添加代码:
Integer.parseInt(“3a”);
现在访问这个页面就会跳转到error.jsp页面
四、config
在WebServlet中添加一个参数
@WebServlet(initParams={@WebInitParam(name=”color”,value=”red”)},value=”/hello”)
public class UserServlet{
初始化Servlet的参数
这个name和value是随便写的
相当于在配置web.xml配置文件中
<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>com.wanmait.demo.UserServlet</servlet-class>
<init-param>
<param-name>color</param-name>
<param-value>red</param-value>
</init-param>
</servlet>
在程序中我们可以获得这个name对应的值。
ServletConfig config=this.getServletConfig();
String color=config.getInitParameter(“color”);
config就是ServletConfig的对象 用于获得Servlet的初始化参数。
0条评论
点击登录参与评论