`

登陆验证码(Servlet实现)

阅读更多
登陆验证码(Servlet实现)


1.前台登陆界面:
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>
<%
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/";
%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<base href="<%=basePath%>">
<title>实训管理系统</title>
<link rel="stylesheet" type="text/css" href="css/team.css" />
<script type="text/javascript">    
function changeValidateCode(obj) {    
/***
  *   获取当前的时间作为参数,无具体意义   
  *   每次请求需要一个不同的参数,否则可能会返回同样的验证码    
  *   这和浏览器的缓存机制有关系,也可以把页面设置为不缓存,这样就不用这个参数了。  
  */
var timenow = new Date().getTime();    
   
obj.src="LoginCode.servlet?d="+timenow;    
}    
</script> 
</head>
<body>
<div id="top">
<h1>实训管理系统</h1>
</div>
<div id="content">
<form action="admin/Login" method="post">
<p>用&nbsp;&nbsp;户:<input type="text" name="admin.name">
<p>密&nbsp;&nbsp;码:<input type="password" name="admin.password">
<p>验证码:<input type="text" name="code" size="11"><img src="LoginCode.servlet" onclick="changeValidateCode(this)" title="点击图片刷新验证码"/>
<p><input type="submit" value="登录"><input type="reset" value="重置"/></p>
</form>
</div>
</body>
</html>


2.web.xml配置文件配置servlet映射路径:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>training</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
    <filter>
    <filter-name>LoginFilter</filter-name>
    <filter-class>com.org.momo.filter.LoginFilter</filter-class>
  </filter> 
  <filter-mapping>
    <filter-name>LoginFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>

  
  <servlet>
    <servlet-name>LoginCodeServlet</servlet-name>
    <servlet-class>com.org.momo.servlet.LoginCodeServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>LoginCodeServlet</servlet-name>
    <url-pattern>/LoginCode.servlet</url-pattern>
  </servlet-mapping>
  
  
  <listener>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
</web-app>



3.LoginCodeServlet.java处理类
package com.org.momo.servlet;

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.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class LoginCodeServlet extends HttpServlet {

	public LoginCodeServlet() {
		super();
	}

	public void destroy() {
		super.destroy();
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {	
	     //设置输出类型和浏览器不保存缓存
		 response.setContentType("image/jpeg") ;
	     response.setHeader("Cache-Control", "no-cache") ;
	     
	     //创建图片对象
	     int width = 60,height = 20 ;
	     BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB) ;
	     
	     Graphics g = image.getGraphics() ;
	     
	     //生成随机数
	     Random random = new Random() ;
	     String s = "" ;
	     for(int i=0;i<4;i++){
	    	 s += random.nextInt(10) ;
	     }
	     
	     //把随机数存到Session里面,便于等下比较
	     HttpSession session = request.getSession() ;
	     session.setAttribute("code",s) ;
	     
	     //随机生成颜色  Color color =  new Color(255,255,255) ;     random.nextInt(256)的值范围是0~255
	     Color color = new Color(random.nextInt(256),random.nextInt(256),random.nextInt(256)) ;
	     
	     //把随机数写到图片上
	     String a = null ;
	     Font font = new Font(a,Font.ITALIC,18) ;
	     g.setColor(color) ;
	     g.setFont(font);
	     g.drawString(s,10,height-5) ;
	     g.dispose() ;    //关闭画笔
	     
         //把图片送到客户端
	     ServletOutputStream output = response.getOutputStream() ;
	     ImageIO.write(image,"JPEG",output) ;
	     output.flush();   //关闭输出流
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
         this.doGet(request,response) ;
	}
	
	public void init() throws ServletException {
	}
}
  • 大小: 14.1 KB
分享到:
评论

相关推荐

    java用servlet实现登陆验证码

    Java使用Servlet实现登录验证码涉及到的是Web开发中的安全性与用户体验部分。验证码是一种常用的安全机制,用于防止自动化的机器人或恶意程序进行非法操作,如批量注册、恶意登录等。在这个例子中,我们将探讨两种...

    JSP+servlet验证码登陆

    在这个"JSP+servlet验证码登陆"的场景中,我们主要讨论的是如何在MVC(Model-View-Controller)架构下实现一个安全的登录系统,特别是涉及到验证码的生成和验证。 验证码是一种防止恶意自动程序(如机器人)进行...

    登陆验证+servlet动态生成图片验证码

    在实现登陆验证时,Servlet可以接收用户的登录请求,验证提交的凭证,并根据结果决定是否允许访问。Servlet生命周期包括初始化、服务、销毁等阶段,其中“服务”方法用于处理客户端的请求。 图片验证码,又称为...

    jsp 登陆页面验证码的实现

    以上就是基于JSP和Servlet实现简单验证码的基本流程。实际应用中,为了增强安全性,还可以考虑以下几点: - 使用更复杂的图像扭曲算法,增加自动化识别的难度。 - 设置验证码过期时间,防止长时间未使用的验证码被...

    基于servlet的登陆验证并实现增删改查、验证码等功能

    在本文中,我们将深入探讨如何基于Servlet技术实现一个完整的用户登录验证系统,同时涵盖增、删、改、查以及验证码功能。Servlet是Java Web开发中的重要组成部分,它为服务器端提供了处理HTTP请求的能力,使得我们...

    servlet+jsp实现的有验证码和MD5加密的登陆

    本项目"Servlet+jsp实现的有验证码和MD5加密的登陆"是一个典型的Web登录系统,它结合了数据库操作、前端展示和安全机制,具体涉及以下几个关键知识点: 1. **Servlet**:Servlet是Java编写服务器端应用程序的接口,...

    实现验证码功能的登陆界面.rar

    本项目“实现验证码功能的登陆界面”是基于Java技术,利用Servlet实现的一个简单的验证码登录界面,旨在帮助学习者理解验证码的工作原理和实现方法。 验证码的主要目的是增加一个验证步骤,确保用户是真实的、有...

    Java Web开发过程中登陆模块的验证码的实现方式总结

    在servlet中随机生成一个指定位置的验证码,一般为四位,然后把该验证码保存到session中.在通过Java的绘图类以图片的形式输出该验证码。为了增加验证码的安全级别,可以输出图片的同时输出干扰线,最后在用户提交数据的...

    jsp+servlet验证码

    结合“验证码登陆”这一文件名,我们可以推测这是一个实现了基于JSP和Servlet的登录页面,其中包含了验证码功能,帮助确保只有合法的用户能够成功登录。在这个项目中,可能包括了HTML/CSS/JavaScript的前端页面,...

    MyBatis+Servlet+JSP实现登陆、注册、验证码、数据的操作

    本项目" MyBatis+Servlet+JSP实现登陆、注册、验证码、数据的操作 "旨在演示如何利用这些技术实现用户管理的基本功能,包括用户登录、注册、验证码验证以及对数据的增删改查操作。以下是这些技术的具体解释和它们在...

    jsp,Mysql,servlet,验证码为一体的简单的用户登陆验证

    【标题】:“jsp,Mysql,servlet,验证码为一体的简单的用户登陆验证” 在这个项目中,开发者结合了四个关键的技术:JSP(JavaServer Pages)、MySQL数据库、Servlet以及验证码技术,来实现一个基础的用户登录验证...

    web之动态生成图片-登陆验证码

    本文将深入探讨动态生成图片的登陆验证码技术,包括其原理、实现方法以及与Java和Web开发的结合。 验证码(CAPTCHA)是“全自动区分计算机和人类的图灵测试”(Completely Automated Public Turing test to tell ...

    jsp+servlet+javabean客房管理系统

    在Web应用中,这些资源文件通常存放在特定的目录下,供JSP页面引用,以实现动态网页的视觉效果。 综上所述,"jsp+servlet+javabean客房管理系统"是一个利用Java技术栈构建的Web应用,它整合了前端展示、后端处理和...

    httpsession实现验证码登录小实例

    在本文中,我们将深入探讨如何使用Java编程语言和HttpSession接口来实现一个简单的验证码登录系统。验证码(CAPTCHA)是一种防止恶意机器人或自动化程序非法访问网站的安全机制,它要求用户输入图片上显示的一组随机...

    生成java登陆验证码的小程序

    这通常通过`Servlet`实现,使用`HttpServletResponse`的`setContentType`和`getOutputStream`方法。 - 验证码的值也应存储在服务器的会话(`HttpSession`)中,以便后续的表单提交时进行验证。 5. 用户交互: - ...

    jsp+servlet实现最基本的注册登陆功能

    【标题】"jsp+servlet实现最基本的注册登陆功能"所涉及的知识点主要集中在Web开发领域,尤其是Java服务器页面(JSP)和Servlet技术的应用。这两者是Java Web开发中用于构建动态网页的重要工具。 **JSP(JavaServer ...

    Servlet+JDBC实现登陆功能的小例子(带验证码)

    Servlet+JDBC实现登陆功能的小例子(带验证码) 以下是对给定文件信息的详细解释和知识点总结: 标题解释 Servlet+JDBC实现登陆功能的小例子(带验证码),这个标题表明了这篇文章将要介绍如何使用Servlet和JDBC技术来...

    jsp+servlet+mvc实现登陆、查询新、删除

    【标题】"jsp+servlet+mvc实现登陆、查询新、删除"的知识点解析: 在Web开发领域,JSP(JavaServer Pages)、Servlet和MVC(Model-View-Controller)模式是构建动态网站的重要技术。本项目结合这三者,实现了用户...

    javaweb_验证码登陆源码

    综上所述,这个"javaweb_验证码登陆源码"项目涉及了Servlet技术的使用、会话管理、验证码生成与验证,以及Web应用程序的基本安全实践。通过理解和学习这些核心概念,开发者可以构建更安全、更健壮的JavaWeb应用程序...

    验证码 登陆 注册工程

    综上所述,这个压缩包中的内容涵盖了验证码技术、Web页面开发、数据库连接、Servlet编程以及可能的JavaScript和Java后端开发。这些技术组合在一起,构建了一个完整的用户登录和注册系统,确保了用户认证的安全性和...

Global site tag (gtag.js) - Google Analytics