response的代码解析
Posted 离落想AC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了response的代码解析相关的知识,希望对你有一定的参考价值。
老师的代码Response1.java 和Response2.java 文件
1.Response1主要内容:通过response设置相应消息头,重点Refresh的设置。例如,三秒后跳转到其他页面。
2.Response1主要内容:response实现文件下载,实现输出验证码图片。
除了代码还有一张放在服务器上的图片。
接下来学习代码:
1.Response1主要内容:通过response设置相应消息头,重点Refresh的设置。例如,三秒后跳转到其他页面。
首先是test1 此代码实现的是一个页面时间,每一秒刷新一次;
主要代码及注释如下所示:
public void test1(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
//使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。
//此处是html类数据
PrintWriter out = response.getWriter();
//限制输出数据类型
//write():仅支持输出字符类型数据,字符、字符数组、字符串等
//print():可以将各种类型(包括Object)的数据通过默认编码转换成bytes字节形式,这些字节都通过write(int c)方法被输出
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//将日期格式化成 yyyy-MM-dd HH:mm:ss
long time = System.currentTimeMillis();
//获取当前时间
Date dt = new Date(time);
//取时间
out.write(df.format(dt));
//输出时间
//out.write(dt.toLocaleString());
response.setHeader("Refresh", "1");//间隔1秒刷新到自己
}
其次是test2 这是一个Refresh的设置 主要功能是设置3秒后载入其他网页。
主要代码及解析如下所示:
public void test2(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
//使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。
//此处是html类数据
PrintWriter out = response.getWriter();
//限制输出数据类型
//write():仅支持输出字符类型数据,字符、字符数组、字符串等
//print():可以将各种类型(包括Object)的数据通过默认编码转换成bytes字节形式,这些字节都通过write(int c)方法被输出
out.write("登录成功,3秒后跳转到");
//response.setHeader("Refresh", "3;URL=/ServletDemo/register.html");
response.setHeader("Refresh", "3;URL=/MyJspProject/111.html");//3妙后刷新到其他资源
}
接下来是test3,是一个response.sendRedirect的用法
主要代码及注释如下所示:
public void test3(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//response.sendRedirect("/ServletDemo/register.html");
response.sendRedirect("/MyJspProject/111.html");
//用于生成302响应码和Location响应头,从而通知客户端去重新访问Location响应头中指定的URL
}
接下来是test4,是一个设置响应头
public void test4(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setStatus(302);//设置响应码
//response.setHeader("Location", "/ServletDemo/register.html");//设置响应消息头
response.setHeader("Location", "/MyJspProject/111.html");
}
2.Response1主要内容:response实现文件下载,实现输出验证码图片。
首先是获取验证码图片的代码;
主要代码及注释如下所示:
private void test3(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
//通知浏览器不要缓存
response.setHeader("Expires", "-1");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
int width = 120;
int height = 25;
//创建一副内存图像:BufferedImage
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
//得到属于该图片的画笔:Graphics
Graphics g = image.getGraphics();
//画边框
g.setColor(Color.BLUE);
g.drawRect(0, 0, width, height);
//填充背景色
g.setColor(Color.YELLOW);
g.fillRect(1, 1, width-2, height-2);
//画干扰线
g.setColor(Color.GRAY);
Random r = new Random();
for(int i=0;i<10;i++)
g.drawLine(r.nextInt(width), r.nextInt(height), r.nextInt(width), r.nextInt(height));
//随机数字
g.setColor(Color.RED);
g.setFont(new Font("宋体", Font.BOLD|Font.ITALIC, 20));
int x = 23;
for(int i=0;i<4;i++){
g.drawString(r.nextInt(10)+"", x, 20);
x+=20;
}
//输出到浏览器的页面上:ImageIO
ImageIO.write(image, "jpg", response.getOutputStream());
}
其次是response实现文件下载的代码
Tips:此代码是可以修改文件名的;
主要代码及注释如下所示:
private void test2(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
String filePath = getServletContext().getRealPath("/1.jpg");
//通知客户端以下载的方式打开
String filename = "郁金香.jpg";
response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(filename,"UTF-8"));//中文文件名此处要进行URL编码
response.setHeader("Content-Type", "application/octet-stream");//通知客户端正文的类型
InputStream in = new FileInputStream(filePath);
OutputStream out = response.getOutputStream();
int len = -1;
byte b[] = new byte[1024];
while((len=in.read(b))!=-1){
out.write(b, 0, len);
}
in.close();
out.close();
}
tips:此代码不能修改文件名
主要代码及注释如下所示:
private void test1(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
String filePath = getServletContext().getRealPath("/1.jpg");
//通知客户端以下载的方式打开
response.setHeader("Content-Disposition", "attachment;filename=1.jpg");
response.setHeader("Content-Type", "application/octet-stream");//通知客户端正文的类型
InputStream in = new FileInputStream(filePath);
OutputStream out = response.getOutputStream();
int len = -1;
byte b[] = new byte[1024];
while((len=in.read(b))!=-1){
out.write(b, 0, len);
}
in.close();
out.close();
}
以上是关于response的代码解析的主要内容,如果未能解决你的问题,请参考以下文章
Docker删除报错:Error response from daemon: conflict: unable to delete 08b152afcfae (must be forced)(代码片段
片段(Java) | 机试题+算法思路+考点+代码解析 2023
Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段