2023-09-14 11:50

Jsp内置对象详解

wanmatea

JavaEE

(606)

(0)

收藏

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条评论

点击登录参与评论