编写jsp登陆界面用户名,密码(包含数字,字母),验证码,如果验证码正确,将这些信息封装在JavaBean中,并输出用户名
时间: 2023-09-14 11:09:27 浏览: 77
好的,我来回答你的问题。
首先,我们需要在JSP页面上设计登陆界面,包括输入用户名、密码和验证码的输入框,以及一个提交按钮。同时,我们需要生成一个随机的验证码,并将其显示在页面上。
以下是一个简单的JSP登陆界面的示例代码:
```jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title>登陆界面</title>
</head>
<body>
<h1>欢迎登陆</h1>
<form method="post" action="login.jsp">
<label>用户名:</label>
<input type="text" name="username" required/><br/><br/>
<label>密码:</label>
<input type="password" name="password" required/><br/><br/>
<label>验证码:</label>
<input type="text" name="verifyCode" required/>
<img src="VerifyCodeServlet" onclick="this.src='VerifyCodeServlet?'+Math.random()"/><br/><br/>
<input type="submit" value="登陆"/>
</form>
</body>
</html>
```
在上面的代码中,我们使用了一个名为“VerifyCodeServlet”的Servlet来生成验证码。这个Servlet的代码如下:
```java
package com.example.servlet;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
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 VerifyCodeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final int WIDTH = 120;
private static final int HEIGHT = 40;
private static final int CODE_COUNT = 4;
private static final int LINE_COUNT = 20;
private static final String VERIFY_CODES = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
private static Random random = new Random();
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
response.setContentType("image/jpeg");
BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
// 设置背景色
g.setColor(Color.WHITE);
g.fillRect(0, 0, WIDTH, HEIGHT);
// 画干扰线
for (int i = 0; i < LINE_COUNT; i++) {
int x1 = random.nextInt(WIDTH);
int y1 = random.nextInt(HEIGHT);
int x2 = random.nextInt(WIDTH);
int y2 = random.nextInt(HEIGHT);
g.setColor(getRandomColor());
g.drawLine(x1, y1, x2, y2);
}
// 画验证码
StringBuilder sb = new StringBuilder();
for (int i = 0; i < CODE_COUNT; i++) {
String code = String.valueOf(VERIFY_CODES.charAt(random.nextInt(VERIFY_CODES.length())));
sb.append(code);
g.setColor(getRandomColor());
g.setFont(new Font(null, Font.BOLD, 30));
g.drawString(code, 20 * i + 10, 30);
}
// 将验证码存入Session
HttpSession session = request.getSession();
session.setAttribute("verifyCode", sb.toString());
// 输出图片
ImageIO.write(image, "JPEG", response.getOutputStream());
}
private Color getRandomColor() {
return new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255));
}
}
```
这个Servlet会生成一个随机的验证码,并将其存入Session中,以便后面验证。在JSP页面中,我们使用一个<img>标签来显示验证码图片,并在用户单击图片时刷新验证码。
接下来,当用户提交登陆信息时,我们需要验证用户名、密码和验证码是否正确。如果正确,我们将这些信息封装在一个JavaBean中,并输出用户名。以下是一个简单的登陆处理Servlet的示例代码:
```java
package com.example.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.example.bean.UserBean;
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 verifyCode = request.getParameter("verifyCode");
String sessionVerifyCode = (String) request.getSession().getAttribute("verifyCode");
UserBean userBean = new UserBean();
userBean.setUsername(username);
userBean.setPassword(password);
if (verifyCode != null && verifyCode.equalsIgnoreCase(sessionVerifyCode)) {
response.getWriter().write("欢迎您," + userBean.getUsername() + "!");
} else {
response.getWriter().write("验证码错误!");
}
}
}
```
在上面的代码中,我们首先获取用户输入的用户名、密码和验证码。然后,我们从Session中获取之前生成的验证码,进行比较。如果验证码正确,我们将用户名封装在一个JavaBean中,并输出欢迎信息。否则,我们输出验证码错误的提示信息。
这就是一个简单的JSP登陆界面的实现方式。当然,这只是一个示例代码,你可以根据自己的需求进行修改和扩展。
阅读全文