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