Java学习之Response篇

Java学习之Response篇0x00前言续上篇文章内容,这篇本章来更新Response。0x01Response常用方法:setStatus(intsc):设置响应状态码se

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

Java学习之Response篇

0x00 前言

续上篇文章内容,这篇本章来更新Response。

0x01 Response

常用方法:

setStatus(int sc)  : 设置响应状态码

setHeader(String name, String value)   设置响应头

resp.sendRedirect(String Redirect);      302跳转


这里的转发和重定向不一样,来看看两者的区别。

重定向:

1. 地址栏发生变化
2. 重定向可以访问其他站点(服务器)的资源
3. 重定向是两次请求。不能使用request对象来共享数据
			
转发:

1. 转发地址栏路径不变
2. 转发只能访问当前服务器下的资源
3. 转发是一次请求,可以使用request对象来共享数据

重定向代码:

Response类:


@WebServlet("/response")
public class Response extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setStatus(302);
        resp.setHeader("location","/demo1");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

ServletDemo类:


@WebServlet("/demo1")
public class ServeletDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("已跳转");
        resp.sendRedirect("http://www.baidu.com");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

writer方法使用:

@WebServlet("/response")
public class Response extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setCharacterEncoding("gbk");   //设置编码
        PrintWriter writer = resp.getWriter();  //获取输出对象
        writer.write("response");//输出内容
        writer.println("1235");

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

输出字节流

ServletOutputStream outputStream = resp.getOutputStream();
        outputStream.write("abc".getBytes());
        


0x02 ServletContext

ServletContext: 代表整个web应用,可以和程序的容器(服务器)来通信

常用方法:


request.getServletContext();   : 通过request对象获取
this.getServletContext();     : 通过HttpServlet获取

String getMimeType(String file)  : 获取MIME对象


域对象:共享数据

1. setAttribute(String name,Object value)
2. getAttribute(String name)
3. removeAttribute(String name)

获取文件的真实(服务器)路径:

String getRealPath(String path) 



文件下载小案例:

编写一个html页面,里面写一个超链接对图片进行下载。

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>downlaod</title>
</head>
<body>

<a href="/demo/img/1.jpg">图片查看</a>

<a href="downloadServlet?filename=1.jpg">图片下载</a>

</body>
</html>

downloadSerlet类:

@WebServlet("/downloadServlet")
public class downloadServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


        this.doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


        String filename = request.getParameter("filename");  //接收filename传参的值
            ServletContext servletContext = this.getServletContext();   //创建servletContext 对象
            String Path = servletContext.getRealPath("/img/" + filename);  //获取文件真实路径

        String mimeType = servletContext.getMimeType(filename);//获取mimel类型





        FileInputStream fis = new FileInputStream(Path);   //路径参数文件输入流对象中
        response.setHeader("content-type",mimeType);  //响应头设置mime类型
        response.setHeader("content-disposition","attachment;filename="+filename); //设置为附件类型
            ServletOutputStream outputStream = response.getOutputStream();   //获取文件输出流
            byte[] buff = new byte[1024];   //设置每次读取的字节大小
            int len =0;
            while ((len = fis.read(buff))!=-1){     

                outputStream.write(buff,0,len);  
            }

    }
}

这里简单的一个案例就完成了。

0x03 结尾

这里的几个内容无非就是几个方法的一个使用,这就体现了Java面向对象语言的强大。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119940.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • UltraWebChart部署时报GUI+错误解决手记[原创]

    UltraWebChart部署时报GUI+错误解决手记[原创]

    2021年7月22日
    60
  • 串口服务器调试助手使用教程,如何配置串口服务器及串口调试的六个技巧

    串口服务器调试助手使用教程,如何配置串口服务器及串口调试的六个技巧串口服务器如何配置,很多用户都不清楚。今天,本文总结和阐述了如何配置串口服务器和串口调试的六个技巧:1.如何设置串口服务器的串口属性,比如波特率参数和数值?点击屏幕上的“设备”单元;手动键入“程序设置”;手动选择“程序”,最后手动输入“串口参数”。2.串口服务器怎么配置?首先要熟悉自己的操作环境和应用配置参数(熟悉各个串口的工作模式,熟悉主要参数中包含的网络参数,设备本身的信息内容,打印服务等相关…

    2022年6月3日
    53
  • android 测试用例模板下载,app测试用例模板.doc

    android 测试用例模板下载,app测试用例模板.docapp测试用例模板APP基本测试用例个人首页1.我的页面2.个人信息页面3.个性标签页面4.TA的页面消息页面消息页面发布商品和图片发布商品分享图片买买买页面买买买页面一级分类页面买手热荐品类二级分类页面侧边栏页面购物车页面我的钱包页面一、编号条件步骤预期结果实际结果1打开我的页面?出现我的信息(头像、昵称、签名、关注数、粉丝数、入手、出手)、中部出现切换我发表的与我喜欢的tab、下部列表出现内容…

    2022年7月17日
    13
  • linux常用的环境变量_linux用户的环境变量

    linux常用的环境变量_linux用户的环境变量环境变量配置文件如想将一个路径加入到$PATH中,可以像下面这样做:1.控制台中:$PATH=”$PATH:/my_new_path”(关闭shell,会还原PATH)2.修改profile文件:$vi/etc/profile以交叉编译环境为例:交叉编译工具器在/usr/local/arm/4.3.2/bin/找到下面内容if[“$EUID”=”0”];thenpa…

    2022年10月1日
    4
  • treeTable实现排序

    treeTable实现排序/***TreeTable0.1-Client-sideTreeTableViewer!*@requiresjQueryv1.3**DuallicensedundertheMITandGPLlicenses:*http://www.opensource.org/licenses/mit-license.php…

    2022年5月11日
    36
  • 对java老师的评价及建议_对老师的评价和建议

    对java老师的评价及建议_对老师的评价和建议篇一:学生对教师评语学生对教师的评价()老师授课的方式非常适合我们,他根据本课程知识结构的特点,重点突出,层次分明。理论和实际相结合,通过例题使知识更条理化。但授课速度有点快,来不及记录。()老师授课有条理,有重点,对同学既热情又严格,是各位老师学习的榜样。()老师上课有时非常幽默,有时非常严格,不过还是非常有教授风度的,不妨自己来听听嘛!大家很崇拜他哦!=()老师治学严谨,要求严格,能深入了解学…

    2022年7月7日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号