web基础--02请求

来源:互联网 发布:vmware 12 mac 破解版 编辑:程序博客网 时间:2024/06/09 23:26
http  状态码
100-199:表示信息性代码,请求正在进行。
200-299:请求成功
300-399:表示用于已经移走的资源文件。指示新地址。
400-499:表示又客户端引发的错误
500-599:表示由服务器端引发的错误

设置状态码。
Response.setStatus(num);
设置错误信息。
responser.sendeError(404,“not find”);


设置状态码300-399
Response.setStaus(302);
repponse.setHeader(“Location”,”资源网页”)   资源重定向。

编码集设置 :
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");


设置响应内容的类型,设置mime类型 
什么是mime类型。  告诉浏览器,服务器发送回去的数据类型是什么,客户端启动相应的应用程序来处理响应的内容。
Response.setcontentType(“text/html;charset=utf-8”);   按照utf-8的格式解析
通过响应头设置mime类型。
.setheader(“contentType”,”text/html;charset=utf-8”);  tomcat 默认编码集是ISO8859-1;  
设置内容在传输的过程中编码格式.
SetcharsetEncoding();
自动刷新功能
.setHeader(“refresh”,”秒数;index.jsp”);  


控制数据无法缓存
.setHeader(“Pragma”,”No-cache”)
.setHeader(“Cache-Contorl”,”No-cache”)
.serHeader(“Expires”,system.cuttentTimerMillis(毫秒数)) 设置过期时间。  


设置消息体
输出流对象。
PrintWriter out =Resp.getWriter();  字符输出流对象
Out.print()   输出所有格式
Out.write()  只能输出字符
Print和write  
共同点:两者都不会刷新页面。只在原来的页面上写数据。两个方法都是重写了writer类里面的weiter方法
不同点:print可以将不同的数据转换为字符串输出,writer只能操作,字符,字符数组,字符串。




获取到字节流输出对象
OutputStream os= Response.getoutputStream();
将字符串转化成字节数组,再输出
字符串.getBytes()     


下载文件
1、设置响应编码集 
2、获取文件要下载的路径,通过上下文对象获取到文件的物理路径
.getServletContext().getRealPath(“路径”)
3、设置响应头,控制浏览器打开下载框
Resp.serHeader(“content-disposition”,”attchment;filename=”+”文件名”)
中文文件
Resp.serHeader(“content-disposition”,”attchment;filename=”+
New String(文件名.getbytes(“”),”服务器编码集”))




4、获取到图片的二进制流
//---FileReader fr = new FileReader(path);字符流
Inputstrem in =new fileinpitstrem(path);
5、创建一个二进制流
//---printwiter out=resp.getwriter();
Outputstrem out= resp.getoutputstrem();
6、创建缓存区
Int len=0;
Byte b=new byte[1024];
While((len=in.read(b))>0){
Out.writer(by,0,len);


}


通过字符流操作二进制的文件,可能出现内容丢失。


重定向 
1Resp.sendrditect (“目标网页”);
2 设置响应头的方式  Response.setStaus(302);
repponse.setHeader(“Location”,”资源网页”)
内容:
1.重定向的状态码是302,表示资源被移走,重新请求新的资源
2.重定向是客户端发起的两次请求。
3.调用sendredirect方法可以不用设置状态码


使用servlet处理http请求


提交方法
Doget:用于获取到服务器的资源
1.地址栏直接输入服务器资源
2,通过js直接访问
3,超链接访问。


Dopost :
主要是用于传输数据,客户端向服务器发送数据。文本、二进制的数据。


使用:1请求一个静态页面或者图形文件时使用get方法。因为仅仅需要发送文件名
2发送大数据使用post  因为没有大小限制
3上传文件时用post
4发送保密信息时使用post


获取到请求行的内容。
获取到客户请求的方法
String Method =Requ.getMethod();
获取到请求的url地址 --url统一资源定位符
String url =requ.getrequestUrl().toString()
获得uri  --uri统一资源标识符
requ.getrequestUri()
获取到请求附带的参数;
Requ.getqueryString()
获取到客户端的ip


Requ.getremoteaddr();


获取到服务器的内容
Requ.getlocalPort();  端口返回int类

获取到请求头:
Requ.getheader(“name”);  
获取到所有的请求头
Enumeration num = req.getheaderName();  返回枚举


Getdateheader(); 返回日期类型。
setChacrEcncoding();


Requ.getparameter(“key”);


获取到客户端传递的多个数据。
Requ.getparametervalues(“key”)
遍历--


请求派发:
整个过程是在服务器端完成。(客户端只需要发一次请求)
Reqdispatcher rd= Req.getreqdispatcher(“跳转页面”)
Rd.forward(req,resp)


当前请求派发后这个资源就将控制权移交给下一个资源。
但是java'代码任然要执行。
Include(req,resp)
包含:将其他资源的内容包含到本资源来,最终控制权会回到该服务器上。


请求派发和重定向的区别
1.请求派发的状态307  重定向是302
2.请求派发是在服务器端完成,不影响客户端,地址栏不会发生变化。
3.请求派发只能在本服务器完成,重定向是可访问其他服务器的资源。
4. 重定向加/  Js提交、超链接提交、重定向、都要加上项目名字。提交的路径是找到webapps目录(不加/是相对路径)


请求提交
Js提交、超链接提交、重定向、都要加上项目名字。
请求派发默认调用dopost
0 0
原创粉丝点击