jsp实现验证码登录form提交数据
时间: 2023-10-03 16:11:04 浏览: 42
首先,你需要在 JSP 页面上添加一个验证码输入框和一个提交按钮,代码如下:
```html
<form action="login.jsp" method="post">
<label for="username">用户名:</label>
<input type="text" id="username" name="username"><br><br>
<label for="password">密码:</label>
<input type="password" id="password" name="password"><br><br>
<label for="captcha">验证码:</label>
<input type="text" id="captcha" name="captcha"><br>
<img src="captcha.jsp"><br>
<input type="submit" value="登录">
</form>
```
其中,`captcha.jsp` 是生成验证码的 JSP 页面,下面会介绍如何编写。
接下来,你需要编写 `login.jsp` 页面,用于验证用户输入的验证码是否正确,代码如下:
```jsp
<%@ page contentType="text/html;charset=UTF-8" %>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
String captcha = request.getParameter("captcha");
String sessionCaptcha = (String) session.getAttribute("captcha");
if (captcha != null && captcha.equalsIgnoreCase(sessionCaptcha)) {
// 验证码正确,可以进行登录操作
// TODO: 在这里编写登录逻辑
out.println("登录成功!");
} else {
// 验证码错误,返回登录页面
out.println("验证码错误,请重新输入!");
}
%>
```
在这段代码中,首先获取用户输入的用户名、密码和验证码,然后从 Session 中获取之前生成的验证码,进行比较。如果验证码正确,则可以进行登录操作,否则返回登录页面。
最后,你需要编写 `captcha.jsp` 页面,用于生成验证码图片,代码如下:
```jsp
<%@ page contentType="image/jpeg" %>
<%
// 生成随机字符串
String captcha = "";
Random random = new Random();
for (int i = 0; i < 4; i++) {
int value = random.nextInt(10);
captcha += String.valueOf(value);
}
// 将验证码保存到 Session 中
session.setAttribute("captcha", captcha);
// 生成验证码图片
BufferedImage image = new BufferedImage(80, 30, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, 80, 30);
g.setColor(Color.BLACK);
g.setFont(new Font("Arial", Font.BOLD, 20));
g.drawString(captcha, 10, 20);
g.dispose();
// 输出图片
ServletOutputStream out = response.getOutputStream();
ImageIO.write(image, "JPEG", out);
out.close();
%>
```
在这段代码中,首先生成一个随机的四位数字字符串作为验证码,并将其保存到 Session 中。然后,使用 Java 的图形库 `BufferedImage` 生成验证码图片,并将其输出。这样,用户每次刷新页面都会生成一个新的验证码。