response响应

response响应

 

 

通过response设置响应行

setStatus(int  sc) 方法

 

重定向:

重定向特点:

       1.请求服务器两次

       2.url地址会变化

 

response.sendRedirect("/WEB04/Servlet002");方法 //要重定向的地址

 

 

 

通过response设置响应头

 

serHeader("refresh","时间秒数;url=要跳转的网址")设置定时刷新

response.setHeader("refresh","5;url=https://www.baidu.com");

 

 

 

通过response设置响应体

 

把文件打印到页面中:

//获取字节输出流

ServletOutputStream out=response.getOutputStream();

//明确数据源

String path=getServletContext().getRealPath("a.jpg");

//创建文件字节输入流

FileInputStream fis=new FileInputStream(path);

//开始复制

int len=0;

byte[] bytes=new byte[1024];

while((len=fis.read(bytes))!=-1){

    out.write(bytes,0,len);

}

//关闭资源

fis.close();

 

 

解决中文乱码问题:

request.setCharacterEncoding("UTF-8");//设置request的编码

response.setContentType("text/html;charset=UTF-8");//指定浏览器解析页面的编码

 

 

 

解决文件名中文乱码问题:

 

//通过name获取文件名

    String filename=request.getParameter("filename");

    //get请求解决中文乱码

    filename=new String (filename.getBytes("ISO-8859-1"),"UTF-8");

    //获取请求头中的agent来辨别客户端是哪个浏览器

    String agent=request.getHeader("User-Agent");

 

复制代码,解决乱码方法如下:

String filenameEncoder=””

if (agent.contains("MSIE")) {

// IE浏览器

filenameEncoder= URLEncoder.encode(filename, "utf-8");

filenameEncoder= filenameEncoder.replace("+", " ");

} else if (agent.contains("Firefox")) {

// 火狐浏览器

BASE64Encoder base64Encoder = new BASE64Encoder();

filenameEncoder="=?utf-8?B?"+base64Encoder.encode(filename.getBytes("utf-8")) + "?=";

} else {

// 其它浏览器

filenameEncoder= URLEncoder.encode(filename, "utf-8");                                  

}

 

其中agent就是请求头User-Agent的值

 

posted @ 2019-03-31 19:19  fdbnf  阅读(292)  评论(0编辑  收藏  举报