ServletConfig和Request

  • http协议的响应: 响应行(状态行)、响应头、响应体

    • 响应行HTTP/1.1 200 OK
      • 常用状态码:200(成功)、302(重定向)、304(读缓存)、404(客户端错误)、500(服务器错误)
    • 响应头
      • 常用方法:setHeader(String key,String value)
      • 常用响应头:Refresh(定时跳转)、Location(重定向)、Content-Disposition(设置文件下载时候的头)、Content-Type(设置响应内容的MIME类型)
    • 响应体:常用方法:getOutputStream()getWriter();
      	//2.设置类型(编码)
          response.setContentType("text/html;charset=UTF-8");
      
          //3.重定向
          //3.1.设置响应行中的响应码
          response.setStatus(302);
          //3.2设置响应头
          response.setHeader("location","/index.html");
      
          //3.3重定向api格式
          response.sendRedirect("http://www.baidu.com");
      
          //5秒后跳转到百度
          response.setHeader("refresh","10;url=http://www.baicu.com");
          //每隔5秒刷新一次
          response.setHeader("refresh","5");
      
          //通知浏览器,提供的资源需要下载
          response.setHeader("content-disposition","attachment;filename=a.jpg");
          //设置MIME类型(可选)
          String mime=getServletContext().getMimeType("a.jpg");
          response.setHeader("content-type",mime);
          //通过getServletContext().getResourceAsStream(String var1)获得输入流
          //通过ServletOutputStream out = response.getOutputStream();//获得输出流进行文件下载
      
      
          //4.设置响应体
          PrintWriter out=response.getWriter();
          out.print("一");
          out.print("二");
          out.print("<br/>");
          out.print("三");
      
  • HttpServletResponse对象: 封装了向客户端发送数据、发送响应头,发送响应状态码的方法。开发人员必须学会使用HttpServletResponse,才能给浏览器发送数据

  • Servlet程序: 一个类直接或间接实现Servlet接口(Servlet接口、GenericServlet实现类、HttpServlet子实现类(常用))

  • Servlet的生命周期:

    • 初始化:用户第一次访问执行 init(ServletConfig config)方法
    • 活着:每次访问都会执行 service(ServletREquest req,ServletResponse res)方法
    • 销毁:应用卸载 destroy()方法

    Servlet是单列多线程,每一个Servlet类全局只有一个实例(执行init方法,创建出来),服务器会针对每次请求得到一个线程处理该请求

  • ServletConfig: 是Servlet的配置对象,可以使用ServletConfig来获得Servlet的初始化参数(SpringMVC中遇到)

  • servletContext: 服务器为每一个项目都创建了一个servletContext(servletContext属于整个应用)

    • 获得对象:getServletContext();
    • 作用:
      • 作为域对象存取数据

        • 范围: 在当前应用,使多个Servlet共享数据
        • getAttribute(String name);//向ServletContext对象的map取数据
        • setAttribute(String name, Object object);//从ServletContext对象的map中添加数据
        • removeAttribute(String name); //根据name去移除数据
      • 获得文件mini类型(文件上传和下载)

        • getMimeType(String file);
      • 获得全局初始化参数

        • String getInitParameter(String name) ; //根据配置文件中的key得到value
      • 获取web资源路径

        • String getRealPath(String path);//根据资源名称得到资源的绝对路径.

          String path = getServletContext().getRealPath("/");
          E:\workspaces\demo\out\artifacts\test_response_war_exploded\

        • getResourceAsStream(String path);//返回制定路径文件的流 web文件夹为当前项目,开头加/

  • 注意:

    • 解决字符流输出中文乱码:response.setContentType(“text/html;charset=utf-8”);
    • 中文文件在不同的浏览器中编码方式不同:火狐是Base64编码,其它浏览器是URL编码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值