编写jsp登录页面(用户名,密码,验证码),如果验证码正确,将这些信息封装在javaBean中,并输出用户名
时间: 2024-03-10 08:45:43 浏览: 31
好的,以下是一个简单的示例代码:
login.jsp:
```html
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="com.example.bean.User"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<form action="loginServlet" method="post">
<p>
<label>Username:</label>
<input type="text" name="username" />
</p>
<p>
<label>Password:</label>
<input type="password" name="password" />
</p>
<p>
<label>Verification Code:</label>
<input type="text" name="captcha" />
<img src="captcha" />
</p>
<p>
<input type="submit" value="Login" />
</p>
</form>
</body>
</html>
```
loginServlet.java:
```java
package com.example.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.example.bean.User;
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取表单数据
String username = request.getParameter("username");
String password = request.getParameter("password");
String captcha = request.getParameter("captcha");
// 验证码校验
HttpSession session = request.getSession();
String expectedCaptcha = (String) session.getAttribute("captcha");
if (!captcha.equalsIgnoreCase(expectedCaptcha)) {
response.getWriter().println("Invalid verification code!");
return;
}
// 封装数据到JavaBean
User user = new User();
user.setUsername(username);
user.setPassword(password);
// 输出用户名
response.getWriter().println("Welcome, " + user.getUsername() + "!");
}
}
```
CaptchaServlet.java:
```java
package com.example.servlet;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/captcha")
public class CaptchaServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int width = 120;
int height = 30;
// 生成随机字符串
String chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
StringBuilder sb = new StringBuilder();
Random random = new Random();
for (int i = 0; i < 4; i++) {
sb.append(chars.charAt(random.nextInt(chars.length())));
}
String captcha = sb.toString();
// 将验证码保存到Session中
HttpSession session = request.getSession();
session.setAttribute("captcha", captcha);
// 创建画布
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = image.createGraphics();
// 绘制背景
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, width, height);
// 绘制干扰线
g2d.setColor(Color.BLACK);
for (int i = 0; i < 10; i++) {
int x1 = random.nextInt(width);
int y1 = random.nextInt(height);
int x2 = random.nextInt(width);
int y2 = random.nextInt(height);
g2d.drawLine(x1, y1, x2, y2);
}
// 绘制验证码
g2d.setColor(Color.BLACK);
g2d.setFont(new Font("Arial", Font.BOLD, 20));
g2d.drawString(captcha, 30, 20);
// 输出图片
response.setContentType("image/png");
ImageIO.write(image, "png", response.getOutputStream());
}
}
```
以上代码实现了一个简单的登录页面,包括用户名、密码和验证码的输入,以及验证码的生成和校验。如果验证码正确,则将用户名和密码封装在JavaBean中,并输出用户名。注意在生成验证码时需要将验证码保存在Session中,以便于后续的校验。