Java Web之JSP内置对象

什么是内置对象

内置对象其实就是已经定义好的对象,我们不需要创建直接使用即可。
内置对象主要是为了方便我们的开发,提升我们的开发效率
JSP有9个内置对象

  1. request ( HttpServletRequest ) 作用域,表示一次请求
  2. response ( HttpServletResponse ) 表示一次响应
  3. session ( HttpSession ) 作用域 表示一次会话
  4. out ( JspWriter )向浏览器返回数据
  5. page (Servlet) 当前jsp对应的Servlet对象
  6. application ( ServletContext )作用域,表示当前Web应用,全局对象。
  7. pageContext ( pageContext ) 作用域 页面上下文,获取页面的信息
  8. config (ServletConfig) 当前JSP对应的ServletConfig对象
  9. exception (Exception) JSP页面中发生的异常

不同的内置对象有不同的作用域

常用的内置对下如下
request
response
session
application
pageContext


request

不管是前端后端还是移动端,只要涉及到网络请求都少不了request和response对象。

关于HTTP协议,可以看这篇文章简单了解一下 数据交互

request对象就是一个请求对象,封装了客户端的请求信息,比如我们填写的表单信息,服务端需要通过request对象拿到需要的数据,然后做出响应

在jsp中,request对象是HttpServletRequest的实例。

常用方法

<%

    request.setAttribute("name","喻志强");	//往request对象中存储一个值  key-value的形式
    request.setCharacterEncoding("utf-8");	//设置编码格式

    request.getParameter("");//获取提交的指定参数的值
    request.getParameterNames();//返回请求中所有参数的集合
    request.getParameterValues("");//获取包含指定参数的所有值的数组
    request.getAttributeNames();//获取所有属性名称集合
    request.getAttribute("name");//获取指定属性的属性值,如果不存在返回null
    request.getCharacterEncoding();//获取编码格式
    request.getProtocol();//获取HTTP使用的协议
    request.getServletPath();//获取用户提交信息的页面的路径
    request.getMethod();//获取用户提交的方式(GET/POST 等)
    request.getHeaderNames();//返回所有HTTP头的名称集合
    request.getHeader("");//获取header中指定属性的值
    request.getRemoteAddr();//获取用户的ip地址
    request.getRemoteHost();//获取用户的主机名
    request.getServerName();//获取服务器的名称
    request.getServerPort();//获取服务器端口号
    request.getCookies();//返回客户端所有的Cookie的数组
    request.getSession();//返回request对应的session对象,如果没有,则创建一个
    request.getInputStream();//返回请求的输入流
    request.getContextPath();//返回request URI中指明的上下文路径
    request.getRequestDispatcher("result.jsp").forward(request,response);//请求转发
%>

小例子:我们写一个简单的表单,将提交的request一些信息打印出来


<form action="request.jsp" method="get">

    姓名:<input name="userName"><br>
    年龄:<input name="age"> <br>
    爱好:<input type="checkbox" name="hobby" value=""><input type="checkbox" name="hobby" value=""><input type="checkbox" name="hobby" value=""><input type="checkbox" name="hobby" value=""><br>

    <input type="submit" value="提交">


</form>

request.jsp代码


<%@ page import="java.util.Enumeration" %><%--
  Created by IntelliJ IDEA.
  User: yzq
  Date: 2018/7/24
  Time: 11:44
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>request内置对象</title>
</head>
<body>

<%

    Enumeration<String> headers = request.getHeaderNames();


    while (headers.hasMoreElements()) {

        String headerName = headers.nextElement();

        String headerValue = request.getHeader(headerName);
        System.out.println(headerName + " : " + headerValue);
%>

<span>
    <%=headerName%>
    :
    <%=headerValue%>

</span>
<br>

<% }%>

<hr>

<%
    String userName = request.getParameter("userName");
    String age = request.getParameter("age");
    String[] hobbies = request.getParameterValues("hobby");

    int serverPort = request.getServerPort();
    String serverName = request.getServerName();



%>

serverPort:<%=serverPort%>
<br>
serverName:<%=serverName%>


<hr>
提交的用户名:<%=userName%><br>
提交的年龄:<%=age%><br>
提交的爱好:
<%
    for (int i = 0; i < hobbies.length; i++) {
        out.print(hobbies[i] + " ");
    }
%>


</body>
</html>

看一下运行效果

这里写图片描述

可以看到,我们顺利的拿到了表单中提交的数据,并将头信息打印出来

这里写图片描述

拿到数据后就可以进行下一步的处理了。


response

response对象对应着http请求的响应,其封装了响应体的信息,我们可以通过response对象响客户端返回数据。
response对象是HttpServletResponse的实例

常用方法


    response.getOutputStream();//返回一个响应二进制的输出流
    response.getWriter();//返回可以输出字符的对象
    response.sendRedirect("");//页面重定向
    response.setContentLength(1000);//设置响应头长度
    response.setContentType("text/html; charset=utf-8");//设置响应的MIME类型
    response.getCharacterEncoding();//获取编码格式
    response.addCookie(new Cookie("",""));//添加Cookie
   response.setHeader("Content-Disposition","attachment; filename=fileName");//配置header,表示浏览器已下载的方式打开文件
    response.setStatus(200);//设置响应码
    ...

示例,验证用户名密码,并向页面写入数据


<%

    String account = request.getParameter("account");
    String pwd = request.getParameter("pwd");

    if (account.equals("yzq")&&pwd.equals("123")){
      response.getWriter().write("登录成功");
    }else {
        response.getWriter().write("账号或密码错误");
    }


%>

session

session:代表客户端与服务端的一次会话

用户第一次进入系统直到退出系统或关闭浏览器,期间的一系列行为称为会话,是HttpSession的实例。
session主要用于会话跟踪,可以用来共享数据,例如登录的用户信息等等

一次会话可能包含多次request和response

常用方法:

<%

    session.setAttribute("name", "yzq"); 
    session.setAttribute("age", 25);
    session.getCreationTime();//获取创建时间
    session.getId();//获取sessionid
    session.invalidate();//取消session,使session不可用
    session.removeAttribute("name");//移除某个属性

%>

out

out对象代表输出流对象,我们可以通过out对象向客户端输出内容
out对象是JspWriter类的实例

常用方法

<%

    out.println("");//换行输出
    out.clear();//清空缓冲区内容
    out.clearBuffer();//清除缓存区的当前内容
    out.close();//关闭输出流

%>

application

application 实现了用户间数据的共享,可存放全局变量。
它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在,这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了 application 对象的生命周期。它是 ServletContext 类的实例。

常用方法:

<%
    application.setAttribute("", "");//新增属性
    application.getAttribute("");//获取属性
    application.getRealPath("");//获取指定虚拟路径的真实路径
    application.getResource("");//返回指定资源的url路径


%>

page

page 指向当前 JSP 页面本身,有点象类中的 this 指针,它是 java.lang.Object
类的实例 。“page” 对象代表了正在运行的由 JSP 文件产生的类对象。

    
    getServletInfo();
    getServletConfig();

exception

exception 是一个表示错误对象,当一个页面在运行过程中发生了错误,就产生这
个对象。如果一个 JSP 页面要应用此对象,就必须把 isErrorPage 设为 true,否则
无法编译。它实际上是 java.lang.Throwable 的对象。

通常情况下我们会指定一个error.jsp 专门用来显示错误页面。

例如:

<%--
  Created by IntelliJ IDEA.
  User: yzq
  Date: 2018/7/24
  Time: 15:48
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head>
    <title>exception</title>
</head>
<body>



<%

    exception.getCause();
    exception.getLocalizedMessage();
    exception.getMessage();

%>

</body>
</html>

我们在其他页面指定errorPage即可

<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="exception/error.jsp" %>

config

config 对象是在一个 Servlet 初始化时,JSP 引擎向它传递信息用的,此信息
包括 Servlet 初始化时所要用到的参数(通过属性名和属性值构成)以及服务器
的有关信息(通过传递一个 ServletContext 对象),不是太常用


pageContext

pageContext 对象提供了对其他内置对性的获取方法,也就是说他可以访问到本页面的所有其他内置对象

常用方法

    pageContext.setAttribute("","");
    pageContext.getAttribute("");
    pageContext.getRequest();
    pageContext.getServletConfig();
    pageContext.getSession();

以上就是Jsp中的内置对象

下一篇比较重要:

Java Web之Servlet


如果你觉得本文对你有帮助,麻烦动动手指顶一下,可以帮助到更多的开发者,如果文中有什么错误的地方,还望指正,转载请注明转自喻志强的博客 ,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喻志强(Xeon)

码字不易,鼓励随意。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值