JSP内置对象(基础二上)out,request,response
2016-11-18 12:51
399 查看
jsp内置对象主要有:
out,request,response,session,application,page,pageContext,exception,config。
out内置对象
out对象是JspWrite类的示例,是向客户端输出内容常用的类。
常用方法:
1.void println()向客户端打印字符串
2.void clear()清除缓冲区内容,如果在flush之后调用会抛出异常
3.void clearBuffer()清除缓冲区内容,如果在flush之后调用不会抛出异常
4.void flush将缓冲区内容输出到客户端
5.int getBufferSize()返回缓冲区字节数的大小,如果不设缓冲区则为0
6.int getReMaining()返回缓冲区剩余多少可用
7.boolean isAutoFlush()返回缓冲区满时,是自动清空还是抛出异常
8 void close()关闭输出流
运用:
request对象
首先介绍表单的get提交与post提交方式的区别。
1.get提交
get提交以明文的方式通过URL提交数据,提交的数据最多不超过2KB,安全较低但效率比post高,适合提交数据量不大,安全性不高的数据,比如:搜索,查询功能。
post提交是将用户提交的信息封装在HTML HEADER内,适合用于提交数据量大,安全性高的用户信息,比如:注册,修改,上传等功能。
客户端请求的信息被封装在request对象中,通过它才能了解客户的需求,做出响应,它是httpSerlvetRequest类的实例。request对象具有请求作用域,即完成客户端请求之前,该对象一直有效。
常用方法:
void setAttribute(String name,Object):设置名字为name的request 的参数值
Object getAttribute(String name):返回由name指定的属性值
getAttributeNames():返回request 对象所有属性的名字集合,结果是一个枚举的实例
getCookies():返回客户端的所有 Cookie 对象,结果是一个Cookie 数组
getCharacterEncoding() :返回请求中的字符编码方式
getContentLength() :返回请求的 Body的长度
getHeader(String name) :获得HTTP协议定义的文件头信息
getHeaders(String name) :返回指定名字的request Header 的所有值,结果是一个枚举的实例
getHeaderNames() :返回所以request Header 的名字,结果是一个枚举的实例
getInputStream() :返回请求的输入流,用于获得请求中的数据
getMethod() :获得客户端向服务器端传送数据的方法
String getParameter(String name) :获得客户端传送给服务器端的有 name指定的参数值
getParameterNames() :获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实
例
String[] getParameterValues(String name):获得有name指定的参数的所有值
String getProtocol():获取客户端向服务器端传送数据所依据的协议名称
getQueryString() :获得查询字符串
getRequestURI() :获取发出请求字符串的客户端地址
getRemoteAddr():获取客户端的 IP 地址
getRemoteHost() :获取客户端的名字
getSession([Boolean create]) :返回和请求相关 Session
String getServerName() :获取服务器的名字
String getContentType:得到请求体的MIME类型
getServletPath():获取客户端所请求的脚本文件的路径
getServerPort():获取服务器的端口号
removeAttribute(String name):删除请求中的一个属性
实例
实现用户表单提交
request.jsp页面:
解决URL传递中文乱码:
打开tomcat->conf->server.xml
加入:URIEncoding=”utf-8”
![](https://img-blog.csdn.net/20161118125009082)
response对象
response是HttpSerlvetResponse类的实例,response对象具有页面作用域,即访问一个页面时,该页面的response对象只能对这次访问有效,其他页面的response对当前页面无效。
常用方法:
String getCharacterEncoding()返回响应用的是何种字符编码
void setContentType(String type)设置响应MIME类型
PrintWrite getWrite()返回可以向客户端输出字符的一个对象
sendRedirect(java.lang.String location)重新定向客户端的请求
实例
请求转发与请求重定向的区别:
请求重定向:客户端行为,response.sendRedirect();从本质上讲,相当于两次请求,前一次请求对象不会保存,地址栏的URL地址会改变。如上例子从login.jsp表单提交到response.jsp,页面调用response.sendRedirect(“request.jsp”)(取消注释);则地址栏是request.jsp,且提交的对象未保存。
请求转发:request.getRequestDispatcher().forward(request, response);
是一次请求,请求对象会保存,地址栏的url地址不会变。如上例子从login.jsp表单提交到response.jsp,页面调用request.getRequestDispatcher(“request.jsp”).forward(request, response)(取消注释);则地址栏是response.jsp,提交的对象保存。
out,request,response,session,application,page,pageContext,exception,config。
out内置对象
out对象是JspWrite类的示例,是向客户端输出内容常用的类。
常用方法:
1.void println()向客户端打印字符串
2.void clear()清除缓冲区内容,如果在flush之后调用会抛出异常
3.void clearBuffer()清除缓冲区内容,如果在flush之后调用不会抛出异常
4.void flush将缓冲区内容输出到客户端
5.int getBufferSize()返回缓冲区字节数的大小,如果不设缓冲区则为0
6.int getReMaining()返回缓冲区剩余多少可用
7.boolean isAutoFlush()返回缓冲区满时,是自动清空还是抛出异常
8 void close()关闭输出流
运用:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <h1>out内置对象</h1> <% out.println("<h2>静夜思</h2>"); out.println("床前明月光<br>"); out.println("疑是地上霜<br>"); out.flush(); //out.clear();//这里会抛出异常。 out.clearBuffer();//这里不会抛出异常。 out.println("举头望明月<br>"); out.println("低头思故乡<br>"); %> 缓冲区大小:<%=out.getBufferSize() %>byte<br> 缓冲区剩余大小:<%=out.getRemaining() %>byte<br> 是否自动清空缓冲区:<%=out.isAutoFlush() %><BR> </body> </html>
request对象
首先介绍表单的get提交与post提交方式的区别。
1.get提交
get提交以明文的方式通过URL提交数据,提交的数据最多不超过2KB,安全较低但效率比post高,适合提交数据量不大,安全性不高的数据,比如:搜索,查询功能。
post提交是将用户提交的信息封装在HTML HEADER内,适合用于提交数据量大,安全性高的用户信息,比如:注册,修改,上传等功能。
客户端请求的信息被封装在request对象中,通过它才能了解客户的需求,做出响应,它是httpSerlvetRequest类的实例。request对象具有请求作用域,即完成客户端请求之前,该对象一直有效。
常用方法:
void setAttribute(String name,Object):设置名字为name的request 的参数值
Object getAttribute(String name):返回由name指定的属性值
getAttributeNames():返回request 对象所有属性的名字集合,结果是一个枚举的实例
getCookies():返回客户端的所有 Cookie 对象,结果是一个Cookie 数组
getCharacterEncoding() :返回请求中的字符编码方式
getContentLength() :返回请求的 Body的长度
getHeader(String name) :获得HTTP协议定义的文件头信息
getHeaders(String name) :返回指定名字的request Header 的所有值,结果是一个枚举的实例
getHeaderNames() :返回所以request Header 的名字,结果是一个枚举的实例
getInputStream() :返回请求的输入流,用于获得请求中的数据
getMethod() :获得客户端向服务器端传送数据的方法
String getParameter(String name) :获得客户端传送给服务器端的有 name指定的参数值
getParameterNames() :获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实
例
String[] getParameterValues(String name):获得有name指定的参数的所有值
String getProtocol():获取客户端向服务器端传送数据所依据的协议名称
getQueryString() :获得查询字符串
getRequestURI() :获取发出请求字符串的客户端地址
getRemoteAddr():获取客户端的 IP 地址
getRemoteHost() :获取客户端的名字
getSession([Boolean create]) :返回和请求相关 Session
String getServerName() :获取服务器的名字
String getContentType:得到请求体的MIME类型
getServletPath():获取客户端所请求的脚本文件的路径
getServerPort():获取服务器的端口号
removeAttribute(String name):删除请求中的一个属性
实例
实现用户表单提交
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'login.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <h1>用户登录</h1> <hr> <form action="request.jsp" method="post"> <table> <tr> <td>用户名:</td> <td><input type="text" name="username"/></td> </tr> <tr> <td>爱好:</td> <td> <input type="checkbox" name="favorite" value="read">读书 <input type="checkbox" name="favorite" value="music">音乐 <input type="checkbox" name="favorite" value="movie">电影 <input type="checkbox" name="favorite" value="internet">上网 </td> </tr> <tr> <td colspan="2"><input type="submit" value="提交"/></td> </tr> </table> </form> <br> <br> <a href="request.jsp?username=李四">测试URL传参数</a> </body> </html>
request.jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'request.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <h1>request内置对象</h1> <% request.setCharacterEncoding("utf-8"); //解决中文乱码问题,无法解决URL传递中文出现的乱码问题。 //解决URL传递中文乱码需到tomcat下的server.xml内加入URIEncoding="utf-8" request.setAttribute("password", "123456"); %> 用户名:<%=request.getParameter("username") %><br> 爱好 :<% if(request.getParameterValues("favorite")!=null) { String[] favorites = request.getParameterValues("favorite"); for(int i=0;i<favorites.length;i++) { out.println(favorites[i]+" "); } } %> <br> 密码:<%=request.getAttribute("password") %><br> 请求体的MIME类型:<%=request.getContentType() %><br> 协议类型及版本号: <%=request.getProtocol() %><br> 服务器主机名 :<%=request.getServerName() %><br> 服务器端口号:<%=request.getServerPort() %><BR> 请求文件的长度 :<%=request.getContentLength() %><BR> 请求客户端的IP地址:<%=request.getRemoteAddr() %><BR> 请求的真实路径:<%=request.getRealPath("request.jsp") %><br> 请求的上下文路径:<%=request.getContextPath() %><BR> </body> </html>
解决URL传递中文乱码:
打开tomcat->conf->server.xml
加入:URIEncoding=”utf-8”
response对象
response是HttpSerlvetResponse类的实例,response对象具有页面作用域,即访问一个页面时,该页面的response对象只能对这次访问有效,其他页面的response对当前页面无效。
常用方法:
String getCharacterEncoding()返回响应用的是何种字符编码
void setContentType(String type)设置响应MIME类型
PrintWrite getWrite()返回可以向客户端输出字符的一个对象
sendRedirect(java.lang.String location)重新定向客户端的请求
实例
<%@ page language="java" import="java.util.*,java.io.*" contentType="text/html; charset=utf-8"%> <% response.setContentType("text/html;charset=utf-8"); //设置响应的MIMI类型 out.println("<h1>response内置对象</h1>"); out.println("<hr>"); //out.flush(); PrintWriter outer = response.getWriter(); //获得输出流对象 outer.println("大家好,我是response对象生成的输出流outer对象"); response.sendRedirect("login.jsp");//请求重定向 //请求重定向 //response.sendRedirect("request.jsp"); //请求转发 // request.getRequestDispatcher("request.jsp").forward(request, response); %>
请求转发与请求重定向的区别:
请求重定向:客户端行为,response.sendRedirect();从本质上讲,相当于两次请求,前一次请求对象不会保存,地址栏的URL地址会改变。如上例子从login.jsp表单提交到response.jsp,页面调用response.sendRedirect(“request.jsp”)(取消注释);则地址栏是request.jsp,且提交的对象未保存。
请求转发:request.getRequestDispatcher().forward(request, response);
是一次请求,请求对象会保存,地址栏的url地址不会变。如上例子从login.jsp表单提交到response.jsp,页面调用request.getRequestDispatcher(“request.jsp”).forward(request, response)(取消注释);则地址栏是response.jsp,提交的对象保存。
相关文章推荐
- 浪潮优派培训笔记:JSP的9大内置对象之(二).与Input/Output有关的内置对象:out、request、response
- JSP内置对象(1)----request、response
- javaweb基础学习(二)<request和response详解,以及请求中的乱码问题>
- JSP九大内置对象(Request,Response,Out,Session,Application,Cookie,Config,Page,Exception)
- Java基础学习总结(9)——response和request
- request,response,session,application,out对象的常用调用的函数
- [转]struts2的action中获得request response session几种方法【基础】
- JSP内置对象--pageContent,request,response,session,application,config,out,page,exception
- JSP内置对象之out request response
- jsp九大内置对象:request、response、session、application、out、page、pageContext、config、exception
- JSP内置对象(1)----request、response
- JSP 内置对象(request response session application out pageContext)
- Java EE基础-response和request页面跳转问题
- JSP内置对象(包括request和response)以及解决url传中文参数出现乱码问题
- WEB基础之Request和Response
- request,response,session,out,pagecontext
- 基础知识:response.cookie和request.cookie区别
- JSP九大内置对象---Request,Response,Out,Session,Application,Cookie,Config,Page,Exception
- HttpServletResponse&&HttpServletRequest基础
- request、response、session、application、out、pagecontext、config、page、exception