乐虎游戏|乐虎国际登录|欢迎你

ag视讯直播spring mvc生成注册验证码,springmvc

日期:2019-11-02编辑作者:计算机资讯

bbin手机客户端,spring mvc生成注册验证码,springmvc

通过Spring MVC为系统添加验证码

1:布局登陆页面,用户名,密码,填写验证码的文本框,及验证码的图片及点击换图

bbin手机客户端 1

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>

    <form id="loginform"  method="post">
            <table>
                <tr>
                    <td>用户名:</td>
                    <td><input type="text" name="loginname"/></td>
                </tr>
                <tr>
                    <td>密&nbsp;&nbsp;码:</td>
                    <td><input  type="password" name="password"/></td>
                </tr>
                <tr> 
                    <td>验证码:</td>
                    <td><input  type="text" name="code"></td>
                    <td><img id="codeImg" alt="验证码" src="${ctx}/admin/code" onclick="changeImg()"/></td>          
                </tr> 
            </table>
       </form>

bbin手机客户端 2

 

2:设置换一张图的js

bbin手机客户端 3

  function changeImg() {
        var imgSrc = $("#codeImg");
        var src = imgSrc.attr("src");
        imgSrc.attr("src", chgUrl(src));
    }  

   //加入时间戳,去缓存机制   
    function chgUrl(url) {
        var timestamp = (new Date()).valueOf();if ((url.indexOf("&") >= 0)) {
            url = url + "&timestamp=" + timestamp;
        } else {
            url = url + "?timestamp=" + timestamp;
        }
        return url;
    }

bbin手机客户端 4

mg老虎机注册网址, 

3:通过spring请求方式,生成验证码,并且通过流的方式返回至页面

bbin手机客户端 5

package com.gcs.controller;

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

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/admin")
public class CodeController {
    private int width = 90;// 定义图片的width
    private int height = 20;// 定义图片的height
    private int codeCount = 4;// 定义图片上显示验证码的个数
    private int xx = 15;
    private int fontHeight = 18;
    private int codeY = 16;
    char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
            'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };

    @RequestMapping("/code")
    public void getCode(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        // 定义图像buffer
        BufferedImage buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics gd = buffImg.getGraphics();
        // 创建一个随机数生成器类
        Random random = new Random();
        // 将图像填充为白色
        gd.setColor(Color.WHITE);
        gd.fillRect(0, 0, width, height);
        // 创建字体,字体的大小应该根据图片的高度来定。
        Font font = new Font("Fixedsys", Font.BOLD, fontHeight);
        // 设置字体。
        gd.setFont(font);
        // 画边框。
        gd.setColor(Color.BLACK);
        gd.drawRect(0, 0, width - 1, height - 1);
        // 随机产生40条干扰线,使图象中的认证码不易被其它程序探测到。
        gd.setColor(Color.BLACK);
        for (int i = 0; i < 40; i++) {
            int x = random.nextInt(width);
            int y = random.nextInt(height);
            int xl = random.nextInt(12);
            int yl = random.nextInt(12);
            gd.drawLine(x, y, x + xl, y + yl);
        }
        // randomCode用于保存随机产生的验证码,以便用户登录后进行验证。
        StringBuffer randomCode = new StringBuffer();
        int red = 0, green = 0, blue = 0;
        // 随机产生codeCount数字的验证码。
        for (int i = 0; i < codeCount; i++) {
            // 得到随机产生的验证码数字。
            String code = String.valueOf(codeSequence[random.nextInt(codeSequence.length-1)]);
            // 产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。
            red = random.nextInt(255);
            green = random.nextInt(255);
            blue = random.nextInt(255);
            // 用随机产生的颜色将验证码绘制到图像中。
            gd.setColor(new Color(red, green, blue));
            gd.drawString(code, (i + 1) * xx, codeY);
            // 将产生的四个随机数组合在一起。
            randomCode.append(code);
        }
        // 将四位数字的验证码保存到Session中。
        HttpSession session = req.getSession();
        System.out.print(randomCode);
        session.setAttribute("code", randomCode.toString());
        // 禁止图像缓存。
        resp.setHeader("Pragma", "no-cache");
        resp.setHeader("Cache-Control", "no-cache");
        resp.setDateHeader("Expires", 0);
        resp.setContentType("image/jpeg");
        // 将图像输出到Servlet输出流中。
        ServletOutputStream sos = resp.getOutputStream();
        ImageIO.write(buffImg, "jpeg", sos);
        sos.close();
    }

}

bbin手机客户端 6

 

4:在登陆时验证验证码是否正确

  String code=request.getParameter("code");
   if (!(code.equalsIgnoreCase(session.getAttribute("code").toString()))) {  //忽略验证码大小写  
            j.setMsg("验证码不正确!");
            return j;  
   }

 

此为大略简写,若有问题,还请包涵

ag线上娱乐, 

mvc生成注册验证码,springmvc 通过Spring MVC为系统添加验证码 1:布局登陆页面,用户名,密码,填写验证码的文本框,及验证码的图片...

项目背景

mg电子游艺,该项目是通信软件开发实训课程的一门作业,要求完成一个聊天系统,但要求有至少一个亮点,无论是功能上的还是技术上的。我们小组比较擅长Java Web开发,因此决定在技术上做一个亮点,使用WebSocket

ag线上开户,文档说明

ag视讯直播,该文档按照如下顺序进行介绍

  1. 技术背景介绍该项目要用到的一些背景知识
  2. ISB电子游艺,项目目录结构该项目使用myeclipse的Java EE项目,大体上可分为前台与后台
  3. 项目框架搭建介绍前台用到的技术,以及后台框架的搭建
  4. 项目成果展示
  5. 代码分享

1.WebSocket

WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket通讯协议于2011年被IETF定为标准RFC 6455,WebSocketAPI被W3C定为标准。在WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

2.Spring

Spring是一个开源轻量级的框架,使用控制反转和面向切面,它可以让开发变得简单、轻便、快速与更加灵活。

3.Spring WebSocket

Spring从4.0开始加入了spring-websocket这个模块,并能够全面支持WebSocket,它与Java WebSocket API标准保持一致,同时提供了额外的服务。

4.Spring MVC

Spring MVC是一个model-view-controller框架,能很好地将数据、业务与展现进行分离。Spring MVC的设计是围绕DispatcherServlet展开的,DispatcherServlet负责将请求派发到特定的handler。

5.MyBatis

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

在本项目中,我们使用了以上几个框架进行搭建。

  • Com.tx.Config websocket配置文件Controller spring mvc 控制层DAO 数据库连接操作Handler websocket操作Model 数据实体Service 服务器处理Tool 工具类

  • Webroot前台代码目录Js javascript代码Style css代码Test 前台测试代码

  • WEN-INF 配置文件夹Jsp jsp文件夹Lib 项目所需的外部jar包As-servlet.xml spring mvc 配置文件Web.xml web项目配置文件

bbin手机客户端 7目录结构

web服务前端

var socket = new Socket;//url必须为ws://开头的相关协议socket.onopen = function{ //连接初始化代码};sokcet.onmessage = function{ var text = event.data; //处理接受到的消息};socket.onclose = function{ //连接关闭时触发};socket.onerror = function{ //连接过程中出错时触发}
  1. 消息封装函数,用于生成能直接添加到html的dom节点的文档类型
function messagePackage { /* message{ userName : xx, timeSign : 22:12:44, content : abc } */ var element_section = $("<section></section>"); var element_section_p1 = $("<p></p>"); var element_section_p1_user = $(""); var element_section_p1_time = $("<time></time>"); var element_section_p2_content = $("<p></p>"); element_section.addClass("message"); element_section_p1.addClass; element_section_p2_content.addClass("content"); element_section_p1_user.text(message.username); element_section_p1_time.text(message.timeSign); element_section_p2_content.text(message.content); element_section_p1.append(element_section_p1_user); element_section_p1.append(element_section_p1_time); element_section.append(element_section_p1); element_section.append(element_section_p2_content); return element_section;}
  1. 消息处理函数,用于处理onmessage中由服务器发送到客户端的消息,并规定了消息类型与相关的处理方式
/*jsonData : { type:1||2, username:xx, timeSign:xx:xx:xx, content:xxxxxxxxxxxxx,} */function messageHandle { var jsonStr = event.data; var data = JSON.parse; var $message = null; switch(data.type) { //更新聊天显示框 case 1: if(data.username == currentUser) return; $message = messagePackage({ username : data.username, timeSign : data.timeSign, content : data.content }); $show.append; //让滚动条自动滚到底 $show.get.scrollTop = $show.get.scrollHeight; break; //向已经在线的用户发送用户列表更新信息 case 2: var $userName = $("<p></p>"); $userName.text(data.username); $("#usersInfo").append($userName); break; //将所有已经在线的用户信息发送给刚加入的用户 case 3: var usernames = data.usernames; var $usersInfo = $("#usersInfo"); $usersInfo.empty(); for(var i= 0,len=usernames.length;i<len;i++) { var $userName = $("<p></p>"); $userName.text(usernames[i]); $usersInfo.append($userName); } break; //删除用户信息 case 4: var $usersInfo = $("#usersInfo"); $usersInfo.find(":contains("+data.username+")").remove(); }}

Spring & Spring MVC配置

配置spring 过滤器 并设置UTF-8编码

<filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param></filter><filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>

配置servlet spring mvc拦截器 设置匹配后缀名为.do

 <display-name>as</display-name> <servlet> <servlet-name>as</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>as</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>

使用Spring注解的方式

<mvc:annotation-driven /><context:annotation-config /><context:component-scan base-package="com.tx.*" /><bean />

返回json模板

<bean > <property name="messageConverters"> <list> <bean /> </list> </property></bean>

设置spring mvc视图

<bean > <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /></bean>

controller用于接收和发送前后台的请求与响应前后台定义用来传送的json字符串

聊天消息:'{"type":1,"username":"xxxx","timeSign":"15:21:02","content":"消息内容"}'用户列表更新消息:'{"type":2,"username":"xxxx"}'用户列表全部消息:'{"type":3,"usernames":["a","b","c"]}'用户列表某用户信息删除 :{"type":4,"username":"xx"}

本例以用户登录、注册为例,其余部分请参考页面最下方提供的源代码这里使用了Spring MVC注解来进行请求的处理

例:

@RequestMapping里面填写的是请求的地址return 根据返回值的不同进行页面跳转等操作,这里返回 login 表示跳转到 login.jsp 这个页面

@RequestMapping("login.do")public String gtLogin() {return "login";}

```java@Controllerpublic class MainController { @RequestMapping("register.do") public String gtRegister() { return "register"; } @RequestMapping("login.do") public String gtLogin() { return "login"; } @RequestMapping("loginServer.do") public ModelAndView login(@RequestParam("username") String username, @RequestParam("password") String password) { ModelAndView modelAndView = new ModelAndView(); StudentService ss = new StudentService(); boolean r = ss.login(username, password); if  { modelAndView.addObject("name", username); modelAndView.setViewName; } else { modelAndView.setViewName; } return modelAndView; } @RequestMapping(value = "registerServer.do", method = RequestMethod.POST) public ModelAndView gtRegister(@RequestParam("username") String username, @RequestParam("password") String password) { StudentService ss = new StudentService(); ModelAndView modelAndView = new ModelAndView(); boolean r = ss.register(username, password); if  { modelAndView.addObject("name", username); modelAndView.setViewName; } else { modelAndView.setViewName; } return modelAndView; }}

本文由乐虎游戏发布于计算机资讯,转载请注明出处:ag视讯直播spring mvc生成注册验证码,springmvc

关键词:

Spring中的Bean配置方式

Spring基础——在Spring Config 文件中配置 Bean,springbean 一、基于 XML 的 Bean 的配置 1.通过属性注入 即通过 setXxx() 方法注...

详细>>

java虚拟机总结,java虚拟机

Jvm 内存浅析 及 GC个人学习总计,jvmgc 从出生到现在,20多年过去,Java到现在仍为选取最为不感到奇的言语。那仰赖于...

详细>>

GA电子游戏:非GUI格局下Window下推行jmeter质量测验(登陆)

引言:互连网服务压测是这几个关键的评论和介绍格局,ab,webbench,jmeter等都是产业界流行的测量检验工具,ab和w...

详细>>

Java高级软件工程师面试考纲,java考纲

【java技术栈】总序,java 技术栈(technologystack)常被用来指代某项工作或某个职位需要掌握的一系列技能的总和。一...

详细>>