首页 > 其他 > 详细

Servlet(二)

时间:2021-01-27 22:16:56      阅读:34      评论:0      收藏:0      [点我收藏+]

Servlet(二)

Mapping映射问题

  • 指定一个映射路径:

  • <servlet-mapping>
        <servlet-name>name</servlet-name>
        <url-pattern>/xxx</url-pattern>
    </servlet-mapping>
    
  • 指定多个映射路径:直接指定多个路径

  • 指定通用映射路径:/xxx/*

  • 默认请求路径:/*

  • 指定后缀或前缀:*.xxx,前面不能加斜杠

  • 指定路径的优先级高于默认路径

ServletContext

  • Web容器在启动的时候,会为每个web程序都创建一个对应的ServletContext对象,代表当前的web应用

  • 获取对象:this.getServletContext()

  • 共享数据:context.setAttribute("key", value)context.getAttribute("key")

  • 获取初始化参数:context.getInitParameter("url")

    • <context-param>
          <param-name>url</param-name>
          <param-value>jdbc:mysql://localhost:3306/mybatis</param-value>
      </context-param>
      
  • 请求转发:context.getRequestDispatcher("path").forward(req, resp);

    • 转发后路径不会发生变化
  • 读取资源文件:

    • 在resources目录中新建properties

    • username=root
      password=123456
      
    • 获取输入流:

    • InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
      
    • 加载并获取:

    • Properties prop = new Properties();
      prop.load(is);
      String username = prop.getProperty("username");
      String password = prop.getProperty("password");
      

HttpServletResponse

基本方法和属性

  • 负责向浏览器发送数据的方法:getOutputStream()getWriter()

  • 负责向浏览器发送响应头的方法:setxxx()

  • 响应状态码:SC_XXX

常见应用

  • 向浏览器输出消息

  • 下载文件:

  •  @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //获取下载文件的路径
            String realPath = "xxxx\\1.png
            //下载文件名
            String filename = realPath.substring(realPath.lastIndexOf("\\") + 1);
            //设置浏览器:下载而非内联,文件名UTF-8编码
            resp.setHeader("Content-Disposition", "attachment; filename="+ URLEncoder.encode(filename, "UTF-8"));
            //获取文件输入流
            FileInputStream in = new FileInputStream(realPath);
            //创建缓冲区
            int len = 0;
            byte[] buffer = new byte[1024];
            //获取Servlet输出流
            ServletOutputStream out = resp.getOutputStream();
            //将文件写入缓冲区
            while((len = in.read(buffer))> 0){
                out.write(buffer, 0, len);
            }
            //关闭流
            in.close();
            out.close();
        }
    
  • 重定向:resp.setRedirect("path")

    • 等效于:resp.setHeader("Location","path")resp.setStatus(302)
    • 这里的路径要写全,包括设置的虚拟路径

HttpServletRequest

  • 获取前端传递的参数:req.getParameter()
  • 通过请求转发:req.getRequestDispatcher("path").forward(req,resp)

Servlet(二)

原文:https://www.cnblogs.com/xiafrog/p/14336153.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!