- 浏览: 2552170 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
nation:
你好,在部署Mesos+Spark的运行环境时,出现一个现象, ...
Spark(4)Deal with Mesos -
sillycat:
AMAZON Relatedhttps://www.godad ...
AMAZON API Gateway(2)Client Side SSL with NGINX -
sillycat:
sudo usermod -aG docker ec2-use ...
Docker and VirtualBox(1)Set up Shared Disk for Virtual Box -
sillycat:
Every Half an Hour30 * * * * /u ...
Build Home NAS(3)Data Redundancy -
sillycat:
3 List the Cron Job I Have>c ...
Build Home NAS(3)Data Redundancy
同事找的代码,关键是如下的这个CheckCodeServlet.java文件:
package com.megaeyes.web.util;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@SuppressWarnings("serial")
public class CheckCodeServlet extends HttpServlet{
private static int WIDTH=56;
private static int HEIGHT=18;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
HttpSession session = request.getSession();
response.setContentType("image/jpeg");
ServletOutputStream sos = response.getOutputStream();
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setHeader("P3P", "CP=CAO PSA OUR");
BufferedImage image = new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);
Graphics g=image.getGraphics();
char[] rands = generateCheckCode();
drawBackground(g);
drawRands(g,rands);
g.dispose();
ByteArrayOutputStream bos= new ByteArrayOutputStream();
ImageIO.write(image,"JPEG",bos);
byte[] buf = bos.toByteArray();
response.setContentLength(buf.length);
sos.write(buf);
bos.close();
sos.close();
session.setAttribute("check_code", new String(rands));
}
private void drawBackground(Graphics g){
g.setColor(new Color(0xDCDCDC));
g.fillRect(0, 0, WIDTH, HEIGHT);
for(int i=0;i<120;i++){
int x = (int)(Math.random()*WIDTH);
int y = (int)(Math.random()*HEIGHT);
int red = (int)(Math.random()*255);
int green = (int)(Math.random()*255);
int blue = (int)(Math.random()*255);
g.setColor(new Color(red,green,blue));
g.drawOval(x, y, 1, 0);
}
}
private void drawRands(Graphics g, char[] rands) {
g.setColor(Color.BLACK);
g.setFont(new Font(null,Font.ITALIC|Font.BOLD,17));
g.drawString(""+rands[0], 1, 15);
g.drawString(""+rands[1], 16, 15);
g.drawString(""+rands[2], 31, 18);
g.drawString(""+rands[3], 45, 16);
}
private char[] generateCheckCode(){
String chars = "0123456789";
char[] rands = new char[4];
for(int i=0;i<4;i++){
int rand = (int)(Math.random()*10);
rands[i]=chars.charAt(rand);
}
return rands;
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
在web.xml上要配置一下:
<servlet>
<servlet-name>CheckCodeServlet</servlet-name>
<servlet-class>com.megaeyes.web.util.CheckCodeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CheckCodeServlet</servlet-name>
<url-pattern>/check</url-pattern>
</servlet-mapping>
页面上调用这个servlet:
<li id="yzm">验证码:<input name="" type="text" class="inputstyle2" />
<img id="validcode" src="check" onClick="refresh(this)" title="<fmt:message key='login.userCodeTip'/>" /></li>
src="check"就会去调用那个servlet了。另外点击refresh(this);的时候:
function refresh(obj){
obj.src="check";
}
再调用一次servlet,重新生成一个图片
登录的时候,校验一下这个CODE
呵呵。从session中取:
if (!checkCode.equals((String) session.getAttribute("check_code"))
package com.megaeyes.web.util;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@SuppressWarnings("serial")
public class CheckCodeServlet extends HttpServlet{
private static int WIDTH=56;
private static int HEIGHT=18;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
HttpSession session = request.getSession();
response.setContentType("image/jpeg");
ServletOutputStream sos = response.getOutputStream();
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setHeader("P3P", "CP=CAO PSA OUR");
BufferedImage image = new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);
Graphics g=image.getGraphics();
char[] rands = generateCheckCode();
drawBackground(g);
drawRands(g,rands);
g.dispose();
ByteArrayOutputStream bos= new ByteArrayOutputStream();
ImageIO.write(image,"JPEG",bos);
byte[] buf = bos.toByteArray();
response.setContentLength(buf.length);
sos.write(buf);
bos.close();
sos.close();
session.setAttribute("check_code", new String(rands));
}
private void drawBackground(Graphics g){
g.setColor(new Color(0xDCDCDC));
g.fillRect(0, 0, WIDTH, HEIGHT);
for(int i=0;i<120;i++){
int x = (int)(Math.random()*WIDTH);
int y = (int)(Math.random()*HEIGHT);
int red = (int)(Math.random()*255);
int green = (int)(Math.random()*255);
int blue = (int)(Math.random()*255);
g.setColor(new Color(red,green,blue));
g.drawOval(x, y, 1, 0);
}
}
private void drawRands(Graphics g, char[] rands) {
g.setColor(Color.BLACK);
g.setFont(new Font(null,Font.ITALIC|Font.BOLD,17));
g.drawString(""+rands[0], 1, 15);
g.drawString(""+rands[1], 16, 15);
g.drawString(""+rands[2], 31, 18);
g.drawString(""+rands[3], 45, 16);
}
private char[] generateCheckCode(){
String chars = "0123456789";
char[] rands = new char[4];
for(int i=0;i<4;i++){
int rand = (int)(Math.random()*10);
rands[i]=chars.charAt(rand);
}
return rands;
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
在web.xml上要配置一下:
<servlet>
<servlet-name>CheckCodeServlet</servlet-name>
<servlet-class>com.megaeyes.web.util.CheckCodeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CheckCodeServlet</servlet-name>
<url-pattern>/check</url-pattern>
</servlet-mapping>
页面上调用这个servlet:
<li id="yzm">验证码:<input name="" type="text" class="inputstyle2" />
<img id="validcode" src="check" onClick="refresh(this)" title="<fmt:message key='login.userCodeTip'/>" /></li>
src="check"就会去调用那个servlet了。另外点击refresh(this);的时候:
function refresh(obj){
obj.src="check";
}
再调用一次servlet,重新生成一个图片
登录的时候,校验一下这个CODE
呵呵。从session中取:
if (!checkCode.equals((String) session.getAttribute("check_code"))
发表评论
-
Update Site will come soon
2021-06-02 04:10 1679I am still keep notes my tech n ... -
Portainer 2020(4)Deploy Nginx and Others
2020-03-20 12:06 431Portainer 2020(4)Deploy Nginx a ... -
Private Registry 2020(1)No auth in registry Nginx AUTH for UI
2020-03-18 00:56 436Private Registry 2020(1)No auth ... -
Docker Compose 2020(1)Installation and Basic
2020-03-15 08:10 374Docker Compose 2020(1)Installat ... -
VPN Server 2020(2)Docker on CentOS in Ubuntu
2020-03-02 08:04 455VPN Server 2020(2)Docker on Cen ... -
Nginx Deal with OPTIONS in HTTP Protocol
2020-02-15 01:33 356Nginx Deal with OPTIONS in HTTP ... -
PDF to HTML 2020(1)pdftohtml Linux tool or PDFBox
2020-01-29 07:37 405PDF to HTML 2020(1)pdftohtml Li ... -
Elasticsearch Cluster 2019(2)Kibana Issue or Upgrade
2020-01-12 03:25 720Elasticsearch Cluster 2019(2)Ki ... -
Spark Streaming 2020(1)Investigation
2020-01-08 07:19 295Spark Streaming 2020(1)Investig ... -
Hadoop Docker 2019 Version 3.2.1
2019-12-10 07:39 295Hadoop Docker 2019 Version 3.2. ... -
MongoDB 2019(3)Security and Auth
2019-11-16 06:48 241MongoDB 2019(3)Security and Aut ... -
MongoDB 2019(1)Install 4.2.1 Single and Cluster
2019-11-11 05:07 294MongoDB 2019(1) Follow this ht ... -
Monitor Tool 2019(1)Monit Installation and Usage
2019-10-17 08:22 325Monitor Tool 2019(1)Monit Insta ... -
Ansible 2019(1)Introduction and Installation on Ubuntu and CentOS
2019-10-12 06:15 312Ansible 2019(1)Introduction and ... -
Timezone and Time on All Servers and Docker Containers
2019-10-10 11:18 332Timezone and Time on All Server ... -
Kafka Cluster 2019(6) 3 Nodes Cluster on CentOS7
2019-10-05 23:28 283Kafka Cluster 2019(6) 3 Nodes C ... -
K8S Helm(1)Understand YAML and Kubectl Pod and Deployment
2019-10-01 01:21 326K8S Helm(1)Understand YAML and ... -
Rancher and k8s 2019(5)Private Registry
2019-09-27 03:25 362Rancher and k8s 2019(5)Private ... -
Jenkins 2019 Cluster(1)Version 2.194
2019-09-12 02:53 444Jenkins 2019 Cluster(1)Version ... -
Redis Cluster 2019(3)Redis Cluster on CentOS
2019-08-17 04:07 373Redis Cluster 2019(3)Redis Clus ...
相关推荐
二、Servlet实现验证码 1. **生成随机字符串** 使用`java.util.Random`类和`java.security.SecureRandom`类可以生成随机字符串。例如,我们可以选择大小写字母、数字组成一个字符集,然后随机选取一定数量的字符...
在本教程中,我们将探讨如何使用Servlet实现一个简单的登录验证系统。 首先,理解Servlet的生命周期是关键。Servlet在服务器启动时并不自动加载,而是当首次接收到请求时被创建。然后,它会经历初始化、服务和销毁...
在提供的压缩包文件"Customer-Support-v3"中,可能包含了实现这个简单登录功能的源代码,包括Servlet和JSP文件。解压并查看这些文件可以提供更具体的实现细节,如数据库连接、错误处理、安全性考虑等。 总的来说,...
在本项目中,"Servlet实现增删改查功能"意味着我们将探讨如何使用Servlet来处理网页上的数据操作,包括添加(Add)、删除(Delete)、修改(Update)和查询(Query)数据。这里我们将主要涉及以下几个知识点: 1. *...
在“Servlet实现登录验证”这个主题中,我们将深入探讨如何利用Servlet进行用户身份验证,确保只有合法用户能够访问受保护的资源。 首先,我们需要了解Servlet的基本生命周期。Servlet在首次接收到请求时被实例化,...
本文将详细讲解如何在Servlet中实现请求转发以及用户登录验证。 首先,我们来理解请求转发(Request Forward)。在Servlet中,请求转发是一种在服务器内部将一个请求从一个资源传递到另一个资源的技术。这种方式是...
【标题】"mybatis+servlet实现web登陆界面"涉及到的核心技术是MyBatis和Servlet,它们在Web开发中扮演着重要角色。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,而Servlet则是Java Web...
在IT行业中,Servlet和JSP(JavaServer Pages)是Java Web开发中的重要组成部分,常用于构建动态网页应用。本项目“servlet+jsp+验证注册功能”旨在教授如何使用这两种技术来实现用户注册功能,这对于刚入行的IT从业...
本项目“jsp+servlet 简单实现注册,登录,购物车功能”提供了一个基础的Web应用实例,非常适合初学者了解和学习这些技术。以下是关于这个项目及其涉及知识点的详细说明: **1. JSP (JavaServer Pages)** JSP是一...
在这个用户注册和登录的示例中,JSP用于前端展示和用户交互,JavaBean用于数据封装和业务逻辑,而Servlet则作为后端处理中心,负责处理HTTP请求和响应,共同协作实现功能的完整流程。通过深入理解和掌握这些技术,...
在本项目"Servlet+MySQL实现登录功能.zip"中,开发者使用了Servlet技术与MySQL数据库来构建一个基础的用户登录系统。这是一个经典的Web开发场景,它涵盖了服务器端编程和数据库交互的关键概念。以下是对这个项目中...
参考链接提供的博客文章(http://www.cnblogs.com/biehongli/p/6424406.html),可以详细学习如何结合JSP和Servlet实现注册登录功能的具体步骤和代码示例。在实际项目中,通常还会涉及到MVC设计模式、会话管理、安全...
除了使用AJAX和Servlet实现服务器端的校验外,前端也可以使用JavaScript进行基本的客户端校验,例如检查邮箱格式、密码长度等,这可以减少无效请求,提高系统效率。 具体实现步骤可能包括以下几点: 1. 创建HTML...
【标题】:基于jsp+servlet实现的教材征订与发放管理系统 这个系统是Web应用程序开发的一个实例,主要利用JavaServer Pages (JSP) 和Servlet技术来构建一个完整的教材征订与发放管理流程。JSP是一种动态网页技术,...
在本项目中,"MyBatis+Servlet实现简单的登陆和注册案例"是一个基础的Web应用程序,它结合了MyBatis框架、Servlet技术以及前端页面来完成用户登录和注册功能。以下将详细介绍涉及的关键知识点。 首先,MyBatis是一...
3. Servlet接收到数据后,首先校验验证码,如果验证码正确,则继续。 4. 接着,Servlet使用MD5算法对用户输入的密码进行加密,然后与数据库中存储的MD5密码进行比对。 5. 如果密码匹配,用户成功登录;如果不匹配,...
1. 安全性:确保用户输入的数据经过过滤和校验,防止SQL注入和跨站脚本攻击。 2. 性能优化:合理使用缓存技术,如Redis,减少对数据库的频繁访问;启用HTTP缓存,减轻服务器压力。 3. 响应式设计:使博客系统适应...
3. Servlet接收到请求,对数据进行校验。 4. 如果是登录,Servlet会查询数据库,比对用户名和密码。 5. 如果是注册,Servlet会检查用户名是否已存在,如果不存在则将新用户信息存入数据库。 6. 根据处理结果,...
通过实现Filter接口并配置在web.xml中,可以实现数据校验、日志记录、字符编码转换等功能。 9. **监听器Listener**:Listener是Servlet API中的事件监听接口,如ServletContextListener、ServletRequestListener等...