Response 下载/验证码/重定向

Response

web服务器接收到客户端的请求,针对这个请求,分别创建一个请求的HttpServletRequest对象,和响应的HttpServletResponse

  • 如果要获取用户的请求过来参数:HttpServletRequest
  • 如果给用户响应一些信息:HttpServletResponse

下载文件

  1. 要获取下载文件的路径
  2. 下载的文件名是啥?
  3. 设置浏览器支持下载需要的东西
  4. 获取下载文件的输入流
  5. 获取OutputStream
  6. 将FileOutputStream流写入到buffer缓冲区
  7. 使用OutputStream将缓冲区中的数据输出到客户端
//        要获取下载文件的路径
        String url = "H:\\DaiMa\\java\\javaWeb\\Response\\src\\main\\resources\\1.png";
//        下载的文件名是啥?
        String fileName = url.substring(url.lastIndexOf("\\")+1);
        System.out.println("文件名:"+fileName);
//        设置浏览器支持下载需要的东西
        resp.setHeader("Content-disposition","attachment;filename="+fileName);
        //创建缓冲区
        int len = 0;
        byte[] buff = new byte[1024];
//        获取下载文件的输入流
        FileInputStream in = new FileInputStream(url);
//        获取OutputStream
        ServletOutputStream outputStream = resp.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的使用 Java Web 技术实现验证码的示例代码: 首先,我们需要编写一个 Servlet,用于生成验证码: ```java package com.example; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class CaptchaServlet extends HttpServlet { private static final long serialVersionUID = 1L; // 验证码图片的宽度和高度 private static final int CAPTCHA_WIDTH = 120; private static final int CAPTCHA_HEIGHT = 40; // 验证码字符集合 private static final char[] CHARACTERS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray(); // 随机数生成器 private static final Random RANDOM = new Random(); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 创建验证码图片 BufferedImage captchaImage = new BufferedImage(CAPTCHA_WIDTH, CAPTCHA_HEIGHT, BufferedImage.TYPE_INT_RGB); Graphics g = captchaImage.getGraphics(); // 绘制背景 g.setColor(Color.WHITE); g.fillRect(0, 0, CAPTCHA_WIDTH, CAPTCHA_HEIGHT); // 生成随机验证码 StringBuilder captchaBuilder = new StringBuilder(); for (int i = 0; i < 4; i++) { captchaBuilder.append(CHARACTERS[RANDOM.nextInt(CHARACTERS.length)]); } String captcha = captchaBuilder.toString(); // 将验证码保存到 Session 中 HttpSession session = request.getSession(); session.setAttribute("captcha", captcha); // 绘制验证码 g.setColor(Color.BLACK); g.setFont(new Font("Arial", Font.BOLD, 24)); for (int i = 0; i < captcha.length(); i++) { g.drawString(String.valueOf(captcha.charAt(i)), i * 25 + 10, 30); } // 绘制干扰线 for (int i = 0; i < 6; i++) { g.setColor(new Color(RANDOM.nextInt(256), RANDOM.nextInt(256), RANDOM.nextInt(256))); g.drawLine(RANDOM.nextInt(CAPTCHA_WIDTH), RANDOM.nextInt(CAPTCHA_HEIGHT), RANDOM.nextInt(CAPTCHA_WIDTH), RANDOM.nextInt(CAPTCHA_HEIGHT)); } // 输出验证码图片 response.setContentType("image/jpeg"); ImageIO.write(captchaImage, "jpeg", response.getOutputStream()); } } ``` 在 doGet 方法中,我们首先创建了一个 BufferedImage 对象,用于绘制验证码图片。然后,我们使用 Graphics 对象绘制了一个白色背景,并生成了一个随机验证码。接着,我们将验证码保存到 Session 中,以便后续验证。然后,我们使用 Graphics 对象绘制了验证码和干扰线,并最终将验证码图片输出到客户端。 接下来,在 JSP 页面中,我们可以通过以下代码来引用该验证码: ```html <img src="captcha" alt="验证码"> <input type="text" name="captcha"> ``` 其中,`captcha` 是 Servlet 的 URL Pattern,用于请求验证码图片;`captcha` 的值是用户输入的验证码,用于验证用户输入是否正确。 最后,在后台代码中,我们可以通过以下代码来验证用户输入的验证码是否正确: ```java String captcha = request.getParameter("captcha"); String expectedCaptcha = (String) request.getSession().getAttribute("captcha"); if (captcha == null || !captcha.equals(expectedCaptcha)) { response.sendRedirect("login.jsp?error=captcha"); return; } ``` 其中,`captcha` 是用户输入的验证码,`expectedCaptcha` 是从 Session 中获取的正确验证码。如果两者不相等,则说明用户输入的验证码不正确,我们可以将用户重定向回登录页面,并在 URL 中添加一个 `error=captcha` 的参数,用于提示用户输入的验证码错误。 希望以上内容能够对您有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值