JSP中Out和Request对象详解
内置表示不需要new便可直接使用。
一、基础知识
1.缓冲区:IO最原始是一个一个字节的读取,这就像吃米饭的时候一粒一粒的吃,很没有效率,这时候就有了碗,一碗一碗的吃,岂不痛快。
2.Get提交不能超过2k,安全性不高,查询、搜索时做,效率高,Post提交的信息在Html header里,信息量大,在注册、修改、上传时候。
二、out内置对象
向客户端输出信息,是JspWriter的对象,常用的有println、flush和clear和clearbuffer,后两者的区别是,潜着在flush调用后会抛出异常,前者不会....抛出异常部分后面的代码都不会被执行,还有getBufferSize(缓冲区大小,如果不设置则为0),getRemaining(缓冲区剩余大小),isAutoFlush(缓冲区满时是否自动刷新)。
三、Request对象
是HttpServletRequest的实力,客户端请求完成之前,一直存在。
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form name="regiserForm" action="mainPage.jsp" method="post">
<table>
<tr>
<td>姓名</td>
<td>
<input type="text" name="userName">
</td>
<tr>
<tr>
<td>爱好</td>
<td>
<input type="checkbox" name="favourite" value="羽毛球">羽毛球
<input type="checkbox" name="favourite" value="篮球">篮球
<input type="checkbox" name="favourite" value="网球">网球
<input type="checkbox" name="favourite" value="足球">足球
</td>
</tr>
<tr>
<td colspan=2>
<input type="submit" value="提交">
</td>
</tr>
</table>
</form>
</body>
</html>
这是注册页面,第一点需要注意的是
<%@ page language="java" contentType="text/html; charset=utf-8"%>
charset在contentType里面(看冒号),单独写的话提示找不到属性。第二点是布局问题,名字和input分别占用一个td,工两个td,所以下面的提交是colspan=2。
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
String userName= request.getParameter("userName");
String[] favourite = request.getParameterValues("favourite");
out.println("姓名   "+userName);
out.print("爱好");
for (int i=1; i<favourite.length; i++) {
out.println("   "+favourite[i]);
}
%> </body>
</html>
由于页面编码方式都是UTF-8,但是参数传输方式默认是ISO-8859-1,所以现浏览器里的结果是乱码。在接受参数之前加入
request.setCharacterEncoding("UTF-8");
下面测试Get传递参数
<!-- 直接这样会出现空指针异常,因为并没有传递爱好属性,而mainPage直接去获取爱好,所以空指针,因此需要判断一下 -->
<a href="mainPage.jsp?userName=李四">测试Get方法(URL传参数)</a>
..........................
request.setCharacterEncoding("UTF-8"); String userName= request.getParameter("userName");
out.println("姓名   "+userName);
if(request.getParameterValues("favourite")!=null) {
String[] favourite = request.getParameterValues("favourite"); out.print("爱好");
for (int i=1; i<favourite.length; i++) {
out.println("   "+favourite[i]);
}
}
按理说这种方式传递中文不论地址栏还是现实的结果都会是乱码,但是我这竟然没有,如果有的话
<Connector port="9999" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
配置Tomcat下的server.xml,第一个Connector,可以修改端口号,同事最后加入URIEncoding这个属性。或者
String str= request.getParameter("userName");
String userName = new String(str.getBytes("ISO-8859-1"),"UTF-8");
还有一种就是为Connector 节点添加useBodyEncodingForURI="true" 属性即可。
还可以在request对象里setAttribute('"password","123456")下面通过getAttribute("password")来获得,原来是getParameter。
getContentType:或者MIME类型
getProtocol:协议类型和版本号
getServerPort:服务器端口号
getRemoteAddr:客户端的IP地址
真是的IP地址因为是动态IP,所以找不到真是的。
JSP中Out和Request对象详解的更多相关文章
- django中request对象详解(转载)
django中的request对象详解 Request 我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将 HttpRequest对象 作为第一个参数传入该函数. ...
- jsp request 对象详解
转自:http://www.cnblogs.com/qqnnhhbb/archive/2007/10/16/926234.html 1.request对象 客户端的请求信息被封装在request对象中 ...
- request对象详解
先来了解一下Request的主要方法: setAttribute(String name,Object):设置名字为name的request的参数值getAttribute(String name): ...
- 5.request对象详解
可以通过request对象获取表单提交的值,get或者post方式都是可以得 例子:login.jsp表单 <%@ page language="java" import=& ...
- CorelDRAW中如何再制对象详解
再制对象指的是快捷地将对象按一定的方式复制为多个对象,此种复制是复制的复制,再制不仅可以节省复制的时间,再制间距还可以保证复制效果.本教程将详解如何在CorelDRAW软件中再制对象. CorelDR ...
- response对象和request对象详解
request方法列举:request.getAuthType() // 获取保护servlet的认证方案名(BASIC或SSL),未受保护的servlet返回的就是nullrequest.getCh ...
- django中的request对象详解
Request 我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将 HttpRequest对象 作为第一个参数传入该函数. 我们来看一看这个HttpRequest对 ...
- Django_视图中的request对象详解(八)
本文参考:http://www.cnblogs.com/MnCu8261/p/5871085.html Request 我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并 ...
- django的views里面的request对象详解大全
简介 HTTP 应用的信息是通过 请求报文 和 响应报文 传递的,关于更多的相关知识,可以阅读<HTTP权威指南>获得. 其中 请求报文 由客户端发送,其中包含和许多的信息,而 djang ...
随机推荐
- SLD 官方实例
基于xml标准的sld格式: <?xml version="1.0" encoding="UTF-8"?> <StyledLayerDescr ...
- leetcode Two Sum II - Input array is sorted <面试常考题>
题目描述 //二分查找的变形 用头尾两个指针进行 面试考察题 class Solution { public: vector<int> twoSum(vector<int> ...
- VMW虚拟机生成的文件说明
VMDK(VMWare Virtual Machine Disk Format)是虚拟机VMware创建的虚拟硬格式,文件存在于VMware文件系统中,被称为VMFS(虚拟机文件系统) NVRAM 非 ...
- PHP下利用PHPMailer
PHPMailer有什么优点? 可运行在任何平台之上 支持SMTP验证 发送邮时指定多个收件人,抄送地址,暗送地址和回复地址:注:添加抄送.暗送仅win平台下smtp方式支持 支持多种邮件编码包括:8 ...
- LeetCode679. 24 Game
You have 4 cards each containing a number from 1 to 9. You need to judge whether they could operated ...
- 使用jdk自带的工具native2ascii 转换Unicode字符和汉字
1.控制台转换 1.1 将汉字转为Unicode: C:\Program Files\Java\jdk1.5.0_04\bin>native2ascii 测试 \u6d4b\u8bd5 1.2 ...
- pip/conda国内镜像--安装包提速
对于Python开发用户来讲,PIP安装软件包是家常便饭.但国外的源下载速度实在太慢,浪费时间.而且经常出现下载后安装出错问题.所以把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装成 ...
- “裕同集团&易普优APS项目启动大会”顺利召开
“裕同集团&易普优APS项目启动大会”顺利召开 ——易普优APS助力裕同集团实现精益生产 2017年7月05日,“裕同集团&易普优APS项目启动大会”顺利召开,裕同集团高级王副总裁.I ...
- lr11 controller打开提示cannot initialize driver dll,exiting
解决:在win7要以管理员身份运行才行的 问题2:在使用loadrunner时,从vuser generator启动controller的时候可能出现:由于另一个程序正在运行中 此操作无法完成.请选择 ...
- lr场景运行报错的解决方法