黑马程序员技术交流社区
标题:
让你们看看在黑马老师一天教的东西(安卓班)
[打印本页]
作者:
不可言
时间:
2014-7-22 22:08
标题:
让你们看看在黑马老师一天教的东西(安卓班)
这是今天的一个作业,老师让整理一天的笔记...。你们有何感想么。。。
---------------------Response响应头-----------------
向浏览器输出字符涉及的编码问题
//1.getOutputStream();代表的是用字节流实现输出,默认情况下,用本地编码(GBK)
ServletOutputStream os = response.getOutputStream();
os.write("中国,你好!".getBytes());//默认编码输出
//2,用UTF-8输出给浏览器,这时得指定浏览器用UTF-8
os.write("<meta http-equiv='Content-Type' content='text/html;charset=GBK'>".getBytes());
os.write("是热天".getBytes());
//3,设置头
response.setHeader("Content-Type", "text/html;charset=UTF-8");
os.write("ssdfe广东省".getBytes("UTF-8"));
下载
//设置头信息
//response.setHeader("Content-Disposition","attachment;filename=3.jpg");
//如果下载文件名有中文时的解决方案
response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode("没是","UTF-8"));
response.setHeader("Content-Type","application/octet-Stream");
//获取绝对路径
String path = getServletContext().getRealPath("/WEB-INF/classes/没事.jpg");
//获取输入输出流
InputStream is = new FileInputStream(path);
OutputStream os = response.getOutputStream();
int len = -1;
byte[] b = new byte[1024];
while((len = is.read(b))!=-1)
os.write(b,0,len);
is.close();//关闭
设置不要缓存
response.setHeader("Expires", -1);
response.setHeader("Cache-Control", "no-cache");//1.0
response.setHeader("Prama", "no-cache");//1.1
设置过期时间
response.setDateHeader("Expires",System.currentTimeMillis()*3600*1000);//单位长整形,毫秒
重定向
特点:
1,相当于对服务器发送了两次数据
2,保存在response域中的数据不能共享
resoponse.sendRedirect("work/1.html");//只能是绝对路径,因为是给浏览器用的
刷新页面
//设置浏览器编码
response.setContentType("text/html;charset=GBK");
response.getWrite().write("两秒后将跳转至主页");
//设置刷新时间与跳转地址
response.setHeader("Refresh","2;URL=/work/1.html");
字符编码解码:URLEncoder(编码) URLDecoder(解码)
String str = "职工";
String afterStr = URLEncoder.encode(str,"GBK"); //编码
String restr = URLDecoder.decode(afterStr,"GBK");//解码
--------------------------Request-----------------------------------------------
方法摘要
String ip = request.getRemoteAddr();//得到客户端的IP
String myip = request.getLocalAddr();//服务器ip
String url = request.getRequestURL().toString();//协议+主机+资源地址
String uri = request.getRequestURI();//资源地址
String method = request.getMethod();//客户端请求类型
String queryString = request.getQueryString();//只接受get请求,请求参数
System.out.println("客户端的IP: "+ip);
System.out.println("服务器ip: "+myip);
System.out.println("协议+主机+资源地址: "+url);
System.out.println("资源地址: "+uri);
System.out.println("客户端请求类型: "+method);
System.out.println("至接受get请求,请求参数: "+queryString);
//-----------------获取请求头的信息--------------------
String request.getHeader("Accept-Encoding");//得到一个请求头的值
Enumeration request.getHeaders(str);//得到一个请求头,所对应的多个值的写法
Enumeration request.getHeaderNames(str);//得到客户端发过来的所有请求头信息
浏览器访问方式:http://localhost:8080/work/servlet/MethodServletTest1?name=sdf;name=er,pwd=df,dsg=324
输出结果
客户端的IP: 0:0:0:0:0:0:0:1
服务器ip: 0:0:0:0:0:0:0:1
协议+主机+资源地址: http://localhost:8080/work/servlet/MethodServletTest1
资源地址: /work/servlet/MethodServletTest1
客户端请求类型: GET
至接受get请求,请求参数: name=sdf;name=er,pwd=df,dsg=324
查看浏览器支持的压缩方式
String ae = request.getHeader("Accept-Encoding");
if(ae.contains("deflate"))
System.out.println("支持deflate压缩:"+ae);
else
System.out.println("不支持deflate压缩:"+ae);
//输出结果:支持deflate压缩:gzip,deflate,sdch
得到一个请求头,所对应的多个值的写法
Enumeration<String> emunss = request.getHeaders("Accept-Encoding");
while (emunss.hasMoreElements()) {
String string = (String) emunss.nextElement();
System.out.println(string);//结果:gzip,deflate,sdch
//得到所有请求头以及它们的值,请加以下语句
//System.out.println(request.getHeader(string));
}
去请求头参数的值
String username = request.getParameter("username");
取多个值
String []pwd = request.getParameterValues("password");
获取请求头提交的多个信息,封装至对象中
//需要导jar包
User user = new User();
System.out.println("封装前:"+user);
BeanUtils.populate(user, request.getParameterMap());
System.out.println("封装后:"+user);
上传文件时,用post提交
InputStream iStream = request.getInputStream();
int len = -1;
byte[] b = new byte[1024];
while ((len = iStream.read(b))!=-1)
System.out.println(new String(b,0,len));
iStream.close();
请求头设置编码格式
request.setCharacterEncoding("UTF-8");
域对象
request.setAttribute(key,value)
request.getAttribute(key)
request.removeAttribute(key);
getServletContext()中的转发与reqeust 中的转发
//ServletContext中的转发只能写绝对路径,而request中的转发可以是绝对路径也可以相对路径
重定向(2次请求地址栏会变,request域中数据不能传递,可以重定向到别的应用)
(响应头)response.sendRedirect("绝对路径");
转发属于本次请求(服务器在转,地址栏不变,是一次请求,request域中数据能传递,只适应于本应用),包含也是一样
为什么不会输出源中的在网页打印的数据,因为在转发时会先将源对象中的数据清空
转发之后的代码会继续执行
request.setAttribute("p","pp");
RequestDispatcher rd = request.getRequestDispatcher("绝对路径or相对路径");
rd.forward();
//rd.include();
forward() 不会输出源中的在网页打印的数据,因为在转发时会先将域中数据清空
include() (包含)会输出源中网页打印的数据
复制代码
作者:
七丶哥
时间:
2014-7-22 22:11
看不懂 呢。
作者:
s526349668
时间:
2014-7-22 22:34
讲jsp的九大内置对象了啊
作者:
790324255a
时间:
2014-7-22 22:58
本帖最后由 790324255a 于 2014-7-22 23:08 编辑
表示在学javaWEB DBUtil
作者:
7418695lp
时间:
2014-7-22 23:00
额果断的看不懂啊
作者:
烟海
时间:
2014-7-22 23:04
不太懂。。。。一心想去学安卓呢。。。。。。。
作者:
花花公子
时间:
2014-7-22 23:18
额,基础必须打好啊
作者:
dreamseekerkun
时间:
2014-7-22 23:38
表示一点看不懂
作者:
刘小印
时间:
2014-7-22 23:49
很强大的样子,信息量不少
作者:
伊甸拾忆
时间:
2014-7-22 23:57
一天要吸收那么多东东,感觉很强大
作者:
scenery_sky
时间:
2014-7-22 23:59
讲的挺多的,加油啊
作者:
长跑※终点
时间:
2014-7-23 00:13
哦哦,知识点还挺多的
作者:
杨冬冬
时间:
2014-7-23 00:13
代码一点也看不懂
作者:
357016138
时间:
2014-7-23 00:18
完全跟不上节奏啊
作者:
wisely
时间:
2014-7-23 00:35
mark一下,以后再膜拜
作者:
醉、倾鯎
时间:
2014-7-23 00:37
量不少啊,难怪进去之后都是12之后才睡觉的,一天都得消化完
作者:
hmid
时间:
2014-7-23 06:43
楼主是哪个班的啊?第几天的学习了这是?
作者:
刷了牙就睡
时间:
2014-7-23 06:59
这是高考个节奏啊~
作者:
bfl625
时间:
2014-7-23 08:56
这是开学多长时间的课程?刚开始的吗?
作者:
唤月
时间:
2014-7-23 09:00
牛
作者:
阿磊
时间:
2014-7-23 09:04
赶脚很难的样子,基础真的很重要啊
作者:
张周飞
时间:
2014-7-23 09:07
看着这些果断觉得自己是渣渣!!还是好好打好基础
作者:
java—family
时间:
2014-7-23 09:10
我一定会来的
作者:
a6511631
时间:
2014-7-23 09:15
一天就这么一个作业?
作者:
陈新海1
时间:
2014-7-23 09:46
好难哦,基础一般哦
作者:
签发
时间:
2014-7-23 09:49
还好吧!
作者:
戒风
时间:
2014-7-23 09:54
看不懂,,
作者:
tc庄稼汉
时间:
2014-7-23 10:29
响应头:lol:lol:lol:lol:lol:lol
作者:
心ヤ0°一下
时间:
2014-7-23 10:51
好多知识点啊
作者:
Franklin
时间:
2014-7-23 14:37
都是动脑子的事儿,不要害怕
作者:
编程学徙
时间:
2014-7-23 14:44
虽然我还看不懂,但是还是要膜拜一下。希望楼主继续坚持分享。。。。。。
作者:
baiiiu
时间:
2014-7-23 15:09
牛,得学习了。
作者:
meibinlove
时间:
2014-7-23 15:46
这是EW?
作者:
慕杰
时间:
2014-7-23 16:04
我去,很给力的样子!!!
作者:
闪电博尔特
时间:
2014-7-23 16:35
碉堡了牛
作者:
曾欢
时间:
2014-7-25 11:07
眼都花了。。。
作者:
乐此不疲
时间:
2014-7-25 12:50
看不懂 但感觉很充实
作者:
付士长
时间:
2014-7-25 15:50
very good 哈哈顶顶
作者:
@for
时间:
2014-7-25 15:53
一天学的知识点真多
作者:
dingpanbo
时间:
2014-7-25 15:57
no懂,正在学习中
作者:
高老强
时间:
2014-7-25 16:06
基础不硬,去到真的好难受啊
作者:
sunny~
时间:
2014-7-25 16:07
这么多你能记住啊。
作者:
xwh1230
时间:
2014-7-25 16:13
嗯,好像内容比基础班多些,不过还能接受
作者:
yinxjfly
时间:
2014-7-25 17:28
看完后有种受虐的感觉,多少期啊?
作者:
多此一举
时间:
2014-7-25 18:49
容量挺大啊
作者:
技术牛人
时间:
2014-7-25 20:33
好多啊,不好搞啊
作者:
0小菜鸟0
时间:
2014-7-25 20:34
哎,要是我也能进去学就好了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2