JSP的隐式对象(out,request)

 

JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明。

也就是说隐式对象不需要像一般的Java对象需要使用new关键字来创建,而是直接在JSP页面中使用。

 

九大隐式对象分类

输入输出对象:out

作用域对象:request,response,session,application,pageContext

Servlet对象:page,config

错误对象:exception

对象名称   描述
request HttpServletRequest 接口的实例
response HttpServletResponse 接口的实例
out JspWriter类的实例,用于把结果输出至网页上
session HttpSession类的实例
application ServletContext类的实例,与应用上下文有关
config ServletConfig类的实例
pageContext PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
page javax.servlet.jsp.JspWriter 类的实例,类似于Java类中的this关键字
Exception Exception类的对象,代表发生错误的JSP页面中对应的异常对象

 

1.out对象

out对象是javax.servlet.jsp.JspWriter类的实例化对象,主要功能就是完成页面的输出操作,使用println()或print()输出。

使用<%=%>形式输出比out.println()更加方便。

简单使用

 

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html>
 4 <html>
 5 <head>
 6 <meta charset="UTF-8">
 7 <title>out对象方法案例</title>
 8 </head>
 9 <body>
10 <%
11 out.print("out对象页面输出功能");
12 out.println("out对象页面输出功能方法");
13 
14 out.print("<br>");
15 %>
16 
17 缓冲区大小:<%=out.getBufferSize() %>
18 缓冲区剩余大小:<%=out.getRemaining() %>
19 是否自动清空缓冲区:<%=out.isAutoFlush() %>
20 </body>
21 </html>

 

2.request对象

每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。客户端的请求被封装在request对象中,它是HttpServletRequest类的实例。

request对象有很多方法获取客户端的信息,主要方法如下:

常用方法方法介绍
String getParameter(String name) 返回name指定参数的参数值
String[] getParameterValues(String name) 返回包含参数name的所有值的数组
void setAttribute(String,Object) 存储此请求中的属性
Object getAttribute(String name) 返回指定属性的属性值
String getContentType() 得到请求体的MIME类型
String getProtocol() 返回请求用的协议类型及版本号
String getServerName() 返回接受请求的服务器主机名
int getServerPort() 返回服务器接受此请求所用的端口号
String getCharacterEncoding() 返回字符编码方式
void setCharacterEncoding() 设置请求的字符编码方式
int getContentLength() 返回请求体的长度(以字节数)
String getRemoteAddr() 返回发送此请求的客户端IP地址
String getRealPath(String path) 返回一虚拟路径的真实路径
String request.getContextPath() 返回上下文路径

 

简单例子1——request方法获取http协议信息

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html>
 4 <html>
 5 <head>
 6 <meta charset="UTF-8">
 7 <title>request方法获取http协议信息</title>
 8 </head>
 9 <body>
10 <%="request方法获取http协议信息" +"<hr>"%>
11 <% 
12       out.println("协议类型及版本号:"+request.getProtocol()+"<br>");
13       out.println("当前链接使用的协议:"+request.getScheme()+"<br>");
14       out.println("服务器名称:"+request.getServerName()+"<br>");
15       out.println("服务器接受此请求的端口号:"+request.getServerPort() +"<br>");
16       out.println("请求方式:"+request.getMethod()+"<br>");
17       out.println("客户端IP地址:"+request.getRemoteAddr()+"<br>");
18       out.println("客户端主机:"+request.getRemoteHost() +"<br>");
19       out.println("URL的部分值:"+request.getRequestURI()+"<br>");
20       out.println("URL:"+request.getRequestURL()+"<br>");
21       out.println("Web服务目录部分值:"+request.getServletPath()+"<br>");
22       out.println("实际目录:"+request.getRealPath("/request.jsp")+"<br>");
23       out.println("<br>");
24 %>
25 
26 </body>
27 </html>

简单例子2——request从URL获取参数信息

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html>
 4 <html>
 5 <head>
 6 <meta charset="UTF-8">
 7 <title>request从URL获取参数信息</title>
 8 </head>
 9 <body>
10 参数a的值:<%=request.getParameter("a") %><br>
11 参数b的值:<%=request.getParameter("a") %><br>
12 </body>
13 </html>

运行结果:

 

 

简单例子3——request域对象的使用

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html>
 4 <html>
 5 <head>
 6 <meta charset="UTF-8">
 7 <title>request域对象的使用</title>
 8 </head>
 9 <body>
10  <%
11 //设置字符编码,解决中文乱码问题,无法解决URL传递中文出现的乱码问题。
12       request.setCharacterEncoding("utf-8");
13       request.setAttribute("name", "张三");
14       request.setAttribute("age", "20");
15      %>
16       姓名:<%=request.getAttribute("name") %><br>
17      年龄:<%=request.getAttribute("age") %>
18 </body>
19 </html>

简单例子4——request从form表单中获取数据

requestForm.jsp

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html>
 4 <html>
 5 <head>
 6 <meta charset="UTF-8">
 7 <title>request从form表单中获取数据</title>
 8 </head>
 9 <body>
10 <form action="hobbyShow.jsp" method="post">
11    <table>
12      <tr>
13        <td>用户名:</td><td><input type='text' name="name"> </td>
14      </tr>
15       <tr>
16        <td>爱好:</td><td>
17          <input type="checkbox" name="hobbys" checked="checked" value="篮球">篮球
18           <input type="checkbox" name="hobbys" value="足球">足球
19            <input type="checkbox" name="hobbys" value="乒乓球">乒乓球
20             <input type="checkbox" name="hobbys" value="羽毛球">羽毛球
21          </td>
22      </tr>  
23    </table>
24   <input type="submit" value="提交">
25 </form>
26 </body>
27 </html>

hobbyShow.jsp

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html>
 4 <html>
 5 <head>
 6 <meta charset="UTF-8">
 7 <title>request显示form表单数据</title>
 8 </head>
 9 <body>
10 <%
11 //设置字符编码,解决中文乱码问题,无法解决URL传递中文出现的乱码问题。
12 request.setCharacterEncoding("utf-8");
13 String name =request.getParameter("name");
14 
15 String[] hobbys = request.getParameterValues("hobbys");
16 %>
17 
18 姓名:<%=name %><br>
19 爱好:<%
20 for(int i=0;i<hobbys.length;i++)
21 {
22   out.println(hobbys[i]);
23   out.print("<br>");
24 }
25 %>
26 </body>
27 </html>

 

 

参考文章

https://www.cnblogs.com/Life-is-Demo/p/11530640.html

https://blog.csdn.net/qq_44013790/article/details/87207317

https://www.runoob.com/jsp/jsp-implicit-objects.html

https://www.cnblogs.com/wujixing/p/4953362.html

https://www.cnblogs.com/wujixing/p/4950669.html

posted @ 2020-03-05 14:10  YorkShare  阅读(598)  评论(0编辑  收藏  举报