① 用jsp实现一个简单的登录界面,主要是验证码
<html>
<head>
<title>简单页面</title>
<script>
function yzm(){
var Num="";
for(var i=0;i<4;i++)
{
Num+=Math.floor(Math.random()*10);
}
document.getElementById("yzphoto").value=Num;
document.getElementById("yzm").value=Num;
}
function userLogin(){
var userName = document.getElementById("userName").value;
var password = document.getElementById("password").value;
var yztext = document.getElementById("yztext").value;
var yzm = document.getElementById("yzm").value;
if(userName != "jq"){
alert("用户名错误");
}else if(password != "123"){
alert("密码错误");
}else if(yztext != yzm){
alert("验证码错误");
}else{
alert("登陆成功");
}
location.reload();
}
</script>
</head>
<body onLoad="yzm()">
<div style="width:100%;text-align:center">
<h1>用户登录</h1>
<table>
<tr>
<td>用户名:</td>
<td><input id="userName" type="text" value=""/></td>
</tr>
<tr>
<td>密码:</td>
<td><input id="password" type="password" value=""/></td>
<tr>
<tr><td>
验证码:
</td>
<td><input id="yztext" type="text" value=""/><input style="width:50px;background-
color:red;color:blue" type="text" id="yzphoto" value=""/><input type="hidden" id="yzm"
value=""></td></tr>
<tr>
<td colspan="2" align="center"><input onclick="userLogin()" type="button" value="登陆"/></td>
</tr>
</table>
</div>
</body>
</html>
② 关于HTML和JSP登陆界面验证码的问题
验证码原理:验证码即为你应用中的一个servlet地址,该地址的响应是一个图片输出流,把你生成的验证码以图片的形式响应给页面即可,下面是一个生成验证码的代码,参考:
java">packagecom.ec.common.util;
importjava.awt.Color;
importjava.awt.Font;
importjava.awt.Graphics;
importjava.awt.image.BufferedImage;
importjava.io.IOException;
importjava.util.Random;
importjavax.imageio.ImageIO;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
{
//设置字母的大小,大小
privatestaticFontmFont=newFont("TimesNewRoman",Font.BOLD,20);
staticColorgetRandColor(intfc,intbc){
Randomrandom=newRandom();
if(fc>255)fc=255;
if(bc>255)bc=255;
intr=fc+random.nextInt(bc-fc);
intg=fc+random.nextInt(bc-fc);
intb=fc+random.nextInt(bc-fc);
returnnewColor(r,g,b);
}
/**
*<p>方法名称:generateImage|描述:生成验证码</p>
*@paramrequest
*@paramresponse
*@paramcodeName验证码session中的属性名称
*@paramwidth验证码宽度-不能小于60px
*@paramheight验证码高度-不能小于20px
*@throwsIOException
*/
publicstaticvoidgenerateImage(HttpServletRequestrequest,HttpServletResponseresponse,StringcodeName,intwidth,intheight)throwsIOException{
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires",0);
//表明生成的响应是图片
response.setContentType("image/jpeg");
BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphicsg=image.getGraphics();
Randomrandom=newRandom();
g.setColor(getRandColor(200,250));
g.fillRect(1,1,width-1,height-1);
g.setColor(newColor(102,102,102));
g.drawRect(0,0,width-1,height-1);
g.setFont(mFont);
g.setColor(getRandColor(160,200));
//画随机线
for(inti=0;i<155;i++){
intx=random.nextInt(width-1);
inty=random.nextInt(height-1);
intxl=random.nextInt(6)+1;
intyl=random.nextInt(12)+1;
g.drawLine(x,y,x+xl,y+yl);
}
//从另一方向画随机线
for(inti=0;i<70;i++){
intx=random.nextInt(width-1);
inty=random.nextInt(height-1);
intxl=random.nextInt(12)+1;
intyl=random.nextInt(6)+1;
g.drawLine(x,y,x-xl,y-yl);
}
//生成随机数,并将随机数字转换为字母
StringsRand="";
for(inti=0;i<4;i++){
intitmp=random.nextInt(26)+65;
charctmp=(char)itmp;
sRand+=String.valueOf(ctmp);
g.setColor(newColor(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
g.drawString(String.valueOf(ctmp),15*i+((width-60)/3),random.nextInt(height-20)+20);
}
HttpSessionsession=request.getSession(true);
session.setAttribute(codeName,sRand);
g.dispose();
ImageIO.write(image,"JPEG",response.getOutputStream());
}
}
③ jsp中如何在当前页面进行数据验证(如简单的登录界面)
struts学过么来,struts框架 很容易就能源实现,不过即使不用struts,前台获取到用户名和密码之后传到后台servlet里,利用request.getParameter(" ");后台在调用验证方法,验证后返回前台一个innertext显示在后面就行了,如果验证通过直接后台跳转到成功页面。
用ajax就更方便了。
④ JSP身份证号码的正则表达式验证
这个简单,在jsp页面上写个脚本,首先第一步(你的字符串这里设为str):
用str.length来做参数判断是否为18位
2.截取字符串前十七个,用正则判断
3.最后一个再用正则判断
正则的脚本如下:(首先申明,未经测试)
function isNumber(str){
var rege=/[\d]/g;
var a=str.match(rege);
if(a==null)
alert('必须是数字');
}
function isNumberOrAlpha(str){
var rege=/[\da-zA-Z]/g;
var a=str.match(rege);
if(a==null)
alert('必须是数字或字母');
}
对于正则表达式,你可以在csdn网上找一本《精通正则表达式看》
⑤ jsp中,如何判断验证码正确
这个功能通常一共3个页面:x0dx0a index.jsp是用来登录用的,在其中显示验证码,即x0dx0a image.jsp是用来生成验证码的,有注释,很详细,如再不行,你复制到网络就有详解了。x0dx0a result.jsp 是用来判断输入是否正确的。x0dx0a相信你一定能看明白...别忘了采纳哦,谢谢。。。x0dx0ax0dx0a【1.index.jsp】x0dx0a<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> x0dx0a
x0dx0a x0dx0ax0dx0a【2.image.jsp】x0dx0a<%@ page contentType="image/JPEG" x0dx0a import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" x0dx0a pageEncoding="GBK"%> x0dx0a<%!Color getRandColor(int fc, int bc) {//给定范围获得随机颜色 x0dx0a Random random = new Random(); x0dx0a if (fc > 255) x0dx0a fc = 255; x0dx0a if (bc > 255) x0dx0a bc = 255; x0dx0a int r = fc + random.nextInt(bc - fc); x0dx0a int g = fc + random.nextInt(bc - fc); x0dx0a int b = fc + random.nextInt(bc - fc); x0dx0a return new Color(r, g, b); x0dx0a }%> x0dx0a<% x0dx0a //设置页面不缓存 x0dx0a response.setHeader("Pragma", "No-cache"); x0dx0a response.setHeader("Cache-Control", "no-cache"); x0dx0a response.setDateHeader("Expires", 0); x0dx0a x0dx0a // 在内存中创建图象 x0dx0a int width = 60, height = 20; x0dx0a BufferedImage image = new BufferedImage(width, height, x0dx0a BufferedImage.TYPE_INT_RGB); x0dx0a x0dx0a // 获取图形上下文 x0dx0a Graphics g = image.getGraphics(); x0dx0a x0dx0a //生成随机类 x0dx0a Random random = new Random(); x0dx0a x0dx0a // 设定背景色 x0dx0a g.setColor(getRandColor(200, 250)); x0dx0a g.fillRect(0, 0, width, height); x0dx0a x0dx0a //设定字体 x0dx0a g.setFont(new Font("Times New Roman", Font.PLAIN, 18)); x0dx0a x0dx0a //画边框 x0dx0a //g.setColor(new Color()); x0dx0a //g.drawRect(0,0,width-1,height-1); x0dx0a x0dx0a // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到 x0dx0a g.setColor(getRandColor(160, 200)); x0dx0a for (int i = 0; i < 100; i++) { x0dx0a int x = random.nextInt(width); x0dx0a int y = random.nextInt(height); x0dx0a int xl = random.nextInt(12); x0dx0a int yl = random.nextInt(12); x0dx0a g.drawLine(x, y, x + xl, y + yl); x0dx0a } x0dx0a x0dx0a // 取随机产生的认证码(4位数字) x0dx0a String sRand = ""; x0dx0a for (int i = 0; i < 4; i++) { x0dx0a String rand = String.valueOf(random.nextInt(10)); x0dx0a sRand += rand; x0dx0a // 将认证码显示到图象中 x0dx0a g.setColor(new Color(20 + random.nextInt(110), 20 + random x0dx0a .nextInt(110), 20 + random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成 x0dx0a g.drawString(rand, 13 * i + 6, 16); x0dx0a } x0dx0a x0dx0a // 将认证码存入SESSION x0dx0a session.setAttribute("code", sRand); x0dx0a x0dx0a // 图象生效 x0dx0a g.dispose(); x0dx0a x0dx0a // 输出图象到页面 x0dx0a ImageIO.write(image, "JPEG", response.getOutputStream()); x0dx0a%>x0dx0a x0dx0a【3.result.jsp】x0dx0a <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> x0dx0a x0dx0a<% x0dx0a String input=request.getParameter("input"); x0dx0a String code=(String)session.getAttribute("code"); x0dx0a if(input.equals(code)){ x0dx0a out.println("验证成功!"); x0dx0a }else{ x0dx0a out.println("验证失败!"); x0dx0a } x0dx0a%> x0dx0abody>html>