容器内置了9大对象,这些对象在jsp页无需实例化,可以直接使用。

分别为request、 response 、session、 application 、out、 pageContext 、config 、page、 exception

1)request对象

request封装了由客户端请求的http所有细节,包括HTTP头信息,系统信息,请求方式,请求参数

request.getParameter("参数name");  //获取请求的url参数。不存在此参数返回null,存在参数但没有值返回””。

在作用域管理属性:

当使用<jsp:forward>请求转发时,可为后面的页面传参数。

request.setAttribute(String name,Object obj);//当前页写入值

request.getAtrribute(String name);//目标页获取到值 ,值为Object,需要转换;有可能name不存在,最好需要判断一下

cookie读与取

java里面不能通过已知cookie名称直接获取其值,要循环所有cookies来判断方式获取

//写入cooke,如果有中文,要使用URLEncoder.encode()编码
Cookie ck=new Cookie("UserInfo", URLEncoder.encode("我是值","utf-8"));
ck.setMaxAge(60*60*24*30);//有效期为30天
response.addCookie(ck);//给客户端写cookie

取cookie

 String result="";
Cookie[] cks = request.getCookies();
if (cks != null) {
for (Cookie ck : cks) {
//有中文要使用URLDecoder.decode()来解码
result+="名称:"+ck.getName()+" 值为:" + URLDecoder.decode(ck.getValue(),"utf-8");
}
}

其他请求

<body>
<br />客户提交信息的方式equest.getMethod():<%=request.getMethod()%>
<br />使用的协议request.getProtocol():<%=request.getProtocol()%>
<br />获取发出请求字符串的客户端地址request.getRequestURI():<%=request.getRequestURI()%>
<br />获取发出请求字符串的客户端地址request.getRequestURL():<%=request.getRequestURL()%>
<br />获取提交数据的客户端IP地址request.getRemoteAddr():<%=request.getRemoteAddr()%>
<br />获取服务器端口号request.getServerPort():<%=request.getServerPort()%>
<br />获取服务器名称request.getServerName():<%=request.getServerName()%>
<br />获取客户端主机名request.getRemoteHost():<%=request.getRemoteHost()%>
<br />获取客户端所请求的脚本文件的文件路径request.getServletPath():<%=request.getServletPath()%>
<br />获取Http协议定义的文件头信息HOST值request.getHeader("host"):<%=request.getHeader("host")%>
<br />获取Http协议定义的文件头信息User-Agent值request.getHeader("user-agent"):<%=request.getHeader("user-agent")%>
<br />获取Http协议定义的文件头信息accept-language值request.getHeader("accept-language"):<%=request.getHeader("accept-language")%>
<br />获取请求文件的绝对路径request.getRealPath("index.jsp"):<%=request.getRealPath("index.jsp")%>
</body>

结果为:

客户提交信息的方式equest.getMethod():GET
使用的协议request.getProtocol():HTTP/1.1
获取发出请求字符串的客户端地址request.getRequestURI():/crm/index.jsp
获取发出请求字符串的客户端地址request.getRequestURL():http://localhost:8080/crm/index.jsp
获取提交数据的客户端IP地址request.getRemoteAddr():0:0:0:0:0:0:0:1
获取服务器端口号request.getServerPort():8080
获取服务器名称request.getServerName():localhost
获取客户端主机名request.getRemoteHost():0:0:0:0:0:0:0:1
获取客户端所请求的脚本文件的文件路径request.getServletPath():/index.jsp
获取Http协议定义的文件头信息HOST值request.getHeader("host"):localhost:8080
获取Http协议定义的文件头信息User-Agent值request.getHeader("user-agent"):Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
获取Http协议定义的文件头信息accept-language值request.getHeader("accept-language"):zh-CN,zh;q=0.9
获取请求文件的绝对路径request.getRealPath("index.jsp"):E:\study\java\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\crm\index.jsp

获取客户的国际化信息:

Locale locale=request.getLocale();
if(locale.equals(Locale.CHINA)){
//当前客户端环境为中文
}

2)response对象

//跳转
  response.sendRedirect("http://www.baidu.com");
//设置header
response.setHeader("cache-control", "no-store");
response.setDateHeader("Expires", 0);
response.setHeader("refresh", "5");
//设置缓冲区大小,8的倍数
response.setBufferSize(32);
//强制缓冲区内容输出到客户端
response.flushBuffer();
//获取缓冲区大小
response.getBufferSize();
//缓冲区内容是否已发送完成
response.isCommitted();

3)session对象

 //设置session,值为object
session.setAttribute("name", "guocheng");
//获取session值,值为 object,要转换
session.getAttribute("name");
//获取session最近一次访问时间
session.getLastAccessedTime();
//移除某个session
session.removeAttribute("name");
//获取超时时间
session.getMaxInactiveInterval();
//设置超时时间,秒为单位
session.setMaxInactiveInterval(10);
//销毁session,之后所有session操作都报错,谨慎用
session.invalidate();

4)application对象

应用的全局参数,在\WEB-INF\web.xml中的<context-param>标记中配置 。修改web.xml的内容需要重启应用才能生效

<context-param>
<param-name>name</param-name>
<param-value>陈小东</param-value>
</context-param>

读取方法:

//获取方式
application.getInitParameter("已知名称");
//列出所有参数名称
Enumeration es = application.getInitParameterNames();
while (es.hasMoreElements()) {
String name = (String) es.nextElement();
String v = application.getInitParameter(name);
out.print(name + ":" + v);
}

类似session,出可以程序运行中为application添加属性及值

application.setAttribute("gg", "值");
String s = (String) application.getAttribute("gg");

5)out对象

可以在页面输入内容,清空缓冲区等

out.clear();

6)pageContext对象

当前页面的上下文,仅为当前页面级别.

//定向到本站其页面,而非外站
pageContext.forward("p1.jsp");
//同样可以为上下文内添加属性
pageContext.setAttribute("name", "234");
pageContext.getAttribute("name");
pageContext.removeAttribute("name");
//与request对象一致
pageContext.getRequest();
pageContext.getResponse();
pageContext.getSession();
pageContext.getOut();

7)config对象

获取服务器的一些信息

//servlet上下文
config.getServletContext();
//当前servlet名称
config.getServletName();//等于jsp
//web.xml全局参数
config.getInitParameter(name);
config.getInitParameterNames();

8)page对象

page代表的就是jsp的本身,可以用this做别名。一个jsp页实质上就是一个servlet类。

page.getClass();//如等于org.apache.jsp.index_jsp

page.hashCode();

9)exception对象

当一个页使用使用<%@page errorPage=”error.jsp” %>,当本页报异常时会转向到error.jsp页

在error.jsp页可直接使用<%=exception.getMessage()%>显示错误信息

error.jsp要<%@page isErrorPage=”true”%>

9.Java web—JSP内置对象的更多相关文章

  1. [Java web] JSP 内置对象

    1. Application 服务器启动后产生,所有用户共用一个Application,可以往里面存一些键值对 2. Session 会话对象,第一个JSP页面被装载时自动创建.从一个客户打开浏览器并 ...

  2. Java EE JSP内置对象及表达式语言

    一.JSP内置对象 JSP根据Servlet API规范提供了一些内置对象,开发者不用事先声明就可使用标准变量来访问这些对象. JSP提供了9种内置对象: (一).request 简述: JSP编程中 ...

  3. Java EE.JSP.内置对象

    JSP根据Servlet API 规范提供了某些内置对象,开发者不用事先声明就可以使用标准的变量来访问这些对象.JSP提供了九中内置对象:request.response.out.session.ap ...

  4. Java学习--jsp内置对象

    九个内置对象,其中Out,request,response,session,application常用 get与post区别: request对象: response对象: 请求转发与请求重定向的区别 ...

  5. java之jsp内置对象

    1.out对象 <% out.println("金鳞岂是池中物,<br>"); out.println("一遇风云变化龙.<br>" ...

  6. java web 程序---内置对象application的log方法的使用

    application的主要方法里,有log方法,是日志文件里可以查看到信息的. 当老师写好代码后,他发现在tomact里的log目录下找不到信息,原因是:我们用myeclipse这个客户端软件,应该 ...

  7. Java学习-jsp内置对象Session

  8. Java Web程序设计笔记 • 【第3章 JSP内置对象】

    全部章节   >>>> 本章目录 3.1 JSP 内置对象简介 3.1.1 JSP 内置对象概述 3.1.2 JSP 表单处理 3.1.2 request对象 3.1.2 开发 ...

  9. JSP中的Java代码和内置对象

    一.JSP中的Java代码 (一)JSP页面中有三种方式嵌入java代码: 1.java的表达式 格式:<%= java表达式 %> 2.java的语句 格式:<% java语句&g ...

随机推荐

  1. C# 使用Epplus导出Excel [3]:合并列连续相同数据

    C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...

  2. LeetCode 三角形最小路径和

    给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11 ...

  3. Java语言的特点和特性

    1. Java语言的主要特点: 1. 跨平台性 所谓的跨平台性,是指软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行.这是软件发展的趋势和编程人员追求的目标.之所以这样说,是因为计算 ...

  4. 【二分】bestcoder p1m2

    模型的转化和二分check的细节挺不错的 Problem Description 度度熊很喜欢数组!! 我们称一个整数数组为稳定的,若且唯若其同时符合以下两个条件: 数组里面的元素都是非负整数. 数组 ...

  5. 【线段树】bzoj3585: mex

    非常精妙的线段树题 Description 有一个长度为n的数组{a1,a2,...,an}.m次询问,每次询问一个区间内最小没有出现过的自然数. Input 第一行n,m. 第二行为n个数. 从第三 ...

  6. python常用内置函数用法精要

    用一个表格大致总结一下所有的内置函数用法,如下: 函数 功能简要说明 abs(x) 返回数字x的绝对值或复数x的模 all(iterable) 如果对于可迭代对象中所有元素x都等价于True,则返回T ...

  7. Ubuntu18.04 下联想电脑 无法连接WIFI问题解决

    联想笔记本电脑Ubuntu系统下无法开启无线硬件开关的解决.总结了3个方法,方便以后使用. 方法一: 一.问题描述: 本人使用联想拯救者14IFI笔记本在安装Ubuntu系统时会出现无线硬件开关关闭的 ...

  8. Google 超分辨率技术 RAISR

    每天都有数以百万计的图片在网络上被分享.储存,用户借此探索世界,研究感兴趣的话题,或者与朋友家人分享假期照片.问题是,大量的图片要嘛被照相设备的像素所限制,要嘛在手机.平板或网络限制下被人为压缩,降低 ...

  9. eclipse中新建maven项目无法添加src/main/java问题

    eclipse创建maevn web项目,在选择maven_archetype_web原型后,默认只有src/main/resources这个Source Floder. 按照maven目录结构,添加 ...

  10. git删除本地所有的更改

    删除本地所有为暂存的修改: git checkout -f 如果有修改以及加入暂存区的话 那么 使用如下命令: git reset --hard git clean -xdf