前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【JavaWeb】案例:读取 WEB 工程下的资源文件、文件下载、点击切换验证码

【JavaWeb】案例:读取 WEB 工程下的资源文件、文件下载、点击切换验证码

作者头像
陶然同学
发布2023-02-27 13:41:03
5410
发布2023-02-27 13:41:03
举报
文章被收录于专栏:陶然同学博客

👀专栏介绍

【JavaWeb】 目前主要更新JavaWeb,一起学习一起进步。

👀本期介绍

本期主要介绍读取 WEB 工程下的资源文件、文件下载、点击切换验证码

文章目录

2、案例 2:读取 WEB 工程下的资源文件

2.1、需求说明

2.2、案例原型准备

2.3、案例代码实现-JavaSE

2.4、案例分析-JavaEE

2.5、案例代码实现-JavaEE

3、案例 3:文件下载

3.1、需求说明

3.2、需求分析

3.3、案例代码实现-固定文件名

3.3.1、动态获取文件名下载

3.3.2、强制下载响应头设置

3.3.3、解决下载文件名乱码工具使用

4、案例 4:点击切换验证码

4.1、需求说明

4.2、案例代码实现

5、知识讲解-程序跳转-重定向【重点】

5.1、请求转发和重定向的区别【重点】

2、案例 2:读取 WEB 工程下的资源文件

2.1、需求说明

要求分别使用 JavaSE 和 JavaEE 的技术来获取 4 个文件

2.2、案例原型准备

准备代码:

2.3、案例代码实现-JavaSE

2.4、案例分析-JavaEE

因为 javaEE 项目最终部署到 tomcat 上运行,目录结构发生了改变,变为如下结构。

所以我们需要使用 JavaEE 的方式才能获取到文件正确路径。

我们使用 ServletContext 的 getRealPath(String path);来获取文件的真实路径

path 路径需要写成 webapps 中的路径,项目名缩写为 /

2.5、案例代码实现-JavaEE

3、案例 3:文件下载

3.1、需求说明

分别使用超链接和 Servlet 程序,进行网站资源的下载。

3.2、需求分析

超链接下载方式,其实就是依赖了缺省 Servlet 进行下载。

而缺省 Servlet 无法处理中文,所以我们只能自己写 Servlet 程序,来帮我们获取中文资源进行下载

3.3、案例代码实现-固定文件名

3.3.1、动态获取文件名下载

3.3.2、强制下载响应头设置

3.3.3、解决下载文件名乱码工具使用

// 必须写在 getOutputStream() 之前 response.setHeader("Content-Disposition", "attachment;filename="+filename);

上传文件名乱码解决:

new String("".getBytes("iso8859-1"),"utf-8");

下载文件名中文乱码解决工具:(直接使用即可,谷歌未存在)

/** * 解决中文下载乱码工具 * @param fileName 需要解决乱码的文件名 * @param request * @return */ public static String base64EncodeFileName(String fileName,HttpServletRequest request) throws UnsupportedEncodingException { String result = fileName; String agent = request.getHeader("User-Agent"); if(agent.contains("Firefox")){ BASE64Encoder base64Encoder = new BASE64Encoder(); try { result="=?UTF-8?B?" + new String(base64Encoder.encode(result .getBytes("UTF-8"))) + "?="; } catch (UnsupportedEncodingException e) { e.printStackTrace(); throw new RuntimeException(e); } }else{ result = URLEncoder.encode(result,"UTF-8"); } return result; }

4、案例 4:点击切换验证码

4.1、需求说明

在访问登录页面时,需要生产验证码。从而防止用户使用程序恶意登录。

4.2、案例代码实现

login.jsp

Servlet

5、知识讲解-程序跳转-重定向【重点】

javaEE 资源跳转方式有两种:

1 、 重定向

2 、 请求转发

今天我们来学习重定向方式进行资源跳转

浏览器立即重新确定方向,再次请求(重定向)

5.1、请求转发和重定向的区别【重点】

主要区别:

1 、 请求转发使用 request 对象,重定向使用 response 对象

2 、 请求转发使用服务器端路径,重定向使用客户端路径

3 、 请求转发不能跳转外网,重定向可以

4 、 请求转发是服务器内部的跳转,不依赖网速,跳转速度极快。

重定向是依赖浏览器的跳转,严重依赖网速,跳转速度略慢

5 、 请求转发:请求一次,响应一次。 占用资源少

重定向:重定向 N 次,响应 n+1 次。占用大量资源

6 、 请求转发可以访问受保护目录资源,重定向不能

7 、 请求转发不会改变地址栏路径,重定向会改变路径。

安全:请求转发。会隐藏后面转发程序的访问路径。

程序 BUG :由于请求转发不会更改地址,会导致用户重复访问某个 Servlet

程序。改为重定向

8 、 请求转发可以使用 request 作用域,重定向不能

何时使用请求转发。

1 、 为了安全,隐藏某些程序的访问路径

2 、 为了效率

3 、 为了内存占用率低

4 、 访问受保护目录资源

5 、 使用 request 作用域

何时使用重定向:

1 、 跳转外网路径

2 、 改变地址栏访问路径

除了以上 7 种情况,两种跳转方式可以相互替代

请求外网,用重定向,其他所有使用请求转发即可

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 👀专栏介绍
  • 👀本期介绍
  • 文章目录
  • 2、案例 2:读取 WEB 工程下的资源文件
    • 2.1、需求说明
      • 2.2、案例原型准备
        • 2.3、案例代码实现-JavaSE
          • 2.4、案例分析-JavaEE
            • 2.5、案例代码实现-JavaEE
            • 3、案例 3:文件下载
              • 3.1、需求说明
                • 3.2、需求分析
                  • 3.3、案例代码实现-固定文件名
                    • 3.3.1、动态获取文件名下载
                    • 3.3.2、强制下载响应头设置
                    • 3.3.3、解决下载文件名乱码工具使用
                • 4、案例 4:点击切换验证码
                  • 4.1、需求说明
                    • 4.2、案例代码实现
                    • 5、知识讲解-程序跳转-重定向【重点】
                      • 5.1、请求转发和重定向的区别【重点】
                      相关产品与服务
                      验证码
                      腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档