在jsp中驗證代碼怎麼寫和調用,jsp實現驗證碼

本文目錄一覽:

java jsp頁面怎麼寫java類?怎麼調用java代碼?

jsp中寫java代碼成為scriptlet,寫在%%之間就可以了。

Scriptlet是包含在%和%之間的Java代碼,在Web容器處理JSP頁面時執行,通常會產生輸出,並將輸出發送到客戶的輸出流里。Scriptlet除了不能定義類和方法、不能用import引入類外,可以包含任何有效的Java代碼。(Java類在Jsp外部定義,可用page指令的import屬性引入,也可以Java Bean的形式使用。Java中的方法必須在類內定義,但Jsp允許使用聲明定義方法。窗體(GUI)設計代碼在Jsp中無效)。

Scriptlet例程:

%@ page contentType=”text/html; charset=gb2312″ %

html

head

titleJSP基本語法/title

/head

body

h1Scriptlet示例頁面/h1

table border=”1″

caption乘法口訣表/caption

%– 在網頁中嵌入Java代碼的主要方法 –%

%

for(int i=1; i=9; i++) {

int j=1;

//out是JSP的一個內部對象,print方法用於向客戶端輸出數據

out.println(“tr”);

for(; j=i; j++) {

out.print(“td” + j + “*” + i + “=” + j*i + “/td”);

}

for(;j=9;j++) {

out.print(“td /td”);

}

out.println(“/tr”);

}

%

/table

/body

/html

jsp如何設置驗證碼,我需要完成詳細的代碼和過程

A 生成驗證碼的java文件

package cn.com.data100.web.servlet;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.io.OutputStream;

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;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

/**

* Title: 生成驗證碼

* Description: data100 website

* Copyright: Copyright (c) 2011

* Company: km100

* @author anshufa

* @version 1.0

*/

public class RandomCodeServlet extends HttpServlet {

private static final Log log = LogFactory.getLog(RandomCodeServlet.class);

private Color getRandColor(int fc, int bc) {

Random random = new Random();

if (fc 255)

fc = 255;

if (bc 255)

bc = 255;

int r = fc + random.nextInt(bc – fc);

int g = fc + random.nextInt(bc – fc);

int b = fc + random.nextInt(bc – fc);

return new Color(r, g, b);

}

protected void doGet(

HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

doPost(request, response);

}

protected void doPost(

HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

//設置頁面不緩存

response.setHeader(“Pragma”, “No-cache”);

response.setHeader(“Cache-Control”, “no-cache”);

response.setDateHeader(“Expires”, 0);

Random random = new Random();

// 定義數組存放加減乘除四個運算符

// char[] arr = { ‘+’, ‘-‘,’*’, ‘/’ };

char[] arr = { ‘+’, ‘-‘,’*’};

// 生成10以內的隨機整數num1

int num1 = random.nextInt(10);

// 生成一個0-4之間的隨機整數operate

int operate = random.nextInt(3);

// 生成10以內的隨機整數num1

int num2 = random.nextInt(10);

//避免出現負數情況

if(operate == 1){//減法運算

//如果減數小於被減數 再次生成num1

while(num1num2){

num1 = random.nextInt(10);

}

}

// // 避免出現除數為0的情況

// if (operate == 3) {

// // 如果是除法,那除數必須不能為0,如果為0,再次生成num2

// while (num2 == 0) {

// num2 = random.nextInt(10);

// }

// }

// 運算結果

int result = 0;

// 假定position值0/1/2/3分別代表”+”,”-“,”*”,”/”,計算前面操作數的運算結果

switch (operate) {

case 0:

result = num1 + num2;

break;

case 1:

result = num1 – num2;

break;

case 2:

result = num1 * num2;

break;

// case 3:

// result = num1 / num2;

// break;

}

log.info(“驗證碼:”+num1 + “,” + num2 + “,” + operate + “,” + result);

// 將生成的驗證碼值(即運算結果的值)放到session中,以便於後台做驗證。

HttpSession session = request.getSession();

session.setAttribute(“rand”, String.valueOf(result));

int width = 60, height = 20;

//創建BufferedImage對象,設置圖片的長度寬度和色彩。

BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);

OutputStream os = response.getOutputStream();

//取得Graphics對象,用來繪製圖片

Graphics g = image.getGraphics();

//繪製圖片背景和文字,釋放Graphics對象所佔用的資源。

g.setColor(getRandColor(199, 250));

//設置內容生成的位置

g.fillRect(0, 0, width, height);

//設置內容的字體和大小

g.setFont(new Font(“Times New Roman”, Font.PLAIN, 18));

//設置內容的顏色:主要為生成圖片背景的線條

g.setColor(getRandColor(160, 200));

//圖片背景上隨機生成155條線條,避免通過圖片識別破解驗證碼

for (int i = 0; i 355; i++) {

int x = random.nextInt(width);

int y = random.nextInt(height);

int xl = random.nextInt(12);

int yl = random.nextInt(12);

g.drawLine(x, y, x + xl, y + yl);

}

//構造運算表達式

String content = num1+” “+ arr[operate]+” “+num2+” = “;

//設置寫運算表達的顏色

g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));

//在指定位置繪製指定內容(即運算表達式)

g.drawString(content,5,16);

//釋放此圖形的上下文以及它使用的所有系統資源,類似於關閉流

g.dispose();

//通過ImageIO對象的write靜態方法將圖片輸出。

ImageIO.write(image, “JPEG”, os);

os.close();

}

}

B 頁面調用

span class=”tabboder” id=”rands”img

src=”../RandomCodeServlet” id=”auth” name=”auth” border=0/span

jsp中顯示驗證碼的代碼怎麼寫?

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.io.OutputStream;

import java.util.Random;

import javax.imageio.ImageIO;

/*生成驗證碼圖片

*/

public class MakeCertPic {

 //驗證碼圖片中可以出現的字符集,可以根據需要修改

 private char mapTable[]={

   ‘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′

 };

/* 功能:生成彩色驗證碼圖片

 參數wedth為生成圖片的寬度,參數height為生成圖片的高度,參數os為頁面的輸出流

*/

 public String getCertPic(int width,int height,OutputStream os){

  if(width=0)

   width=60;

  if(height=0)

   height=20;

  BufferedImage image= new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);

  //獲取圖形上下文

  Graphics g = image.getGraphics();

  //設定背景顏色

  g.setColor(new Color(0xDCDCDC));

  g.fillRect(0,0,width,height);

  //畫邊框

  g.setColor(Color.black);

  g.drawRect(0,0,width-1,height-1);

  //隨機產生的驗證碼

  String strEnsure = “”;

  //4代表4為驗證碼,如果要產生更多位的驗證碼,則加大數值

  for(int i = 0;i4;++i){

   strEnsure += mapTable[(int) (mapTable.length*Math.random())];

  }

  //將認證碼顯示到圖像中,如果要生成更多位的驗證碼,增加drawString語句

  g.setColor(Color.black);

  g.setFont(new Font(“Atlantic Inline”,Font.PLAIN,18));

  String str = strEnsure.substring(0,1);

  g.drawString(str,8,17);

  str = strEnsure.substring(1,2);

  g.drawString(str, 20, 15);

  str = strEnsure.substring(2,3);

  g.drawString(str, 35, 18);

  str = strEnsure.substring(3,4);

  g.drawString(str, 45, 15);

  //隨機產生15個干擾點

  Random rand = new Random();

  for(int i=0; i10; i++){

   int x = rand.nextInt(width);

   int y = rand.nextInt(height);

   g.drawOval(x,y,1,1);

  }

  //釋放圖形上下文

  g.dispose();

  try{

   //輸出圖形到頁面

   ImageIO.write(image, “JPEG”, os);

   

  }catch (IOException e){

   return “”;

  }

  return strEnsure;

 }

}

makeCertPic.jsp頁面用於調用生成驗證碼圖片的JavaBean,並在客戶端顯示,源代碼如下:

%@page contentType=”image/jpeg” %%@page language=”java” pageEncoding=”utf-8″%jsp:useBean id=”image” scope=”page” class=”securityCode.pic.MakeCertPic”/%

 String str = image.getCertPic(0,0,response.getOutputStream());

 //將驗證碼存入session中

 session.setAttribute(“certCode”,str);

%

下邊是登錄頁面:

%@ page language=”java” contentType=”text/html; charset=UTF-8″

    pageEncoding=”UTF-8″%

!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “”

html

head

meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″

title驗證碼測試登錄頁面/title

  script type=”text/javascript”

function changeimg()

{

var myimg = document.getElementById(“code”); 

now = new Date(); 

myimg.src=”makeCertPic.jsp?code=”+now.getTime();

/script

/head

body

center

 form action=”loginCheck.jsp” method=”post” /

 用戶名:input type=”text” name=”username” /br

 密nbsp;nbsp;碼:input type=”password” name=”password”/br

 nbsp;驗證碼:input type=”text” name=”certCode”/

 img id=”code” src=”makeCertPic.jsp”a href=”javascript:changeimg()”看不清,換一張 /abr

 input type=”submit” value=”登錄”/

 /form

/center

/body

/html

在jsp中驗證代碼怎麼寫和調用

jsp中的驗證一般都用javascript來驗證的。如果不對的話可能你的問題表達不清楚,是指表單驗證還是邏輯驗證。把問題描述的更清楚點。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/301378.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-30 16:08
下一篇 2024-12-30 16:08

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python字符串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字符串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字符串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變量和數…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在着手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python實現簡易心形代碼

    在這個文章中,我們將會介紹如何用Python語言編寫一個非常簡單的代碼來生成一個心形圖案。我們將會從安裝Python開始介紹,逐步深入了解如何實現這一任務。 一、安裝Python …

    編程 2025-04-29
  • 怎麼寫不影響Python運行的長段代碼

    在Python編程的過程中,我們不可避免地需要編寫一些長段代碼,包括函數、類、複雜的控制語句等等。在編寫這些代碼時,我們需要考慮代碼可讀性、易用性以及對Python運行性能的影響。…

    編程 2025-04-29
  • Python愛心代碼動態

    本文將從多個方面詳細闡述Python愛心代碼動態,包括實現基本原理、應用場景、代碼示例等。 一、實現基本原理 Python愛心代碼動態使用turtle模塊實現。在繪製一個心形的基礎…

    編程 2025-04-29
  • 北化教務管理系統介紹及開發代碼示例

    本文將從多個方面對北化教務管理系統進行介紹及開發代碼示例,幫助開發者更好地理解和應用該系統。 一、項目介紹 北化教務管理系統是一款針對高校學生和教職工的綜合信息管理系統。系統實現的…

    編程 2025-04-29

發表回復

登錄後才能評論