怎么就不能在数据库中写入验证码啊?头疼

a_qwe789qwe789 2011-10-21 04:32:38
一共有3个程序
1.登陆页面:
package cn.edu.zzu.authorcodes;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class login extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

ServletContext context = getServletContext();
String name = request.getParameter("username");
String pwd = request.getParameter("password");
String auth = request.getParameter("authcodes");

response.setContentType("text/html;charset=gb2312");

PrintWriter out = response.getWriter();

if ("liying".equals(name) && "1234".equals(pwd)
&& context.getAttribute("getImg").equals(auth)) {
out.println("登录成功<br>");
out.println("<a href=login>点此返回登陆界面</a>");
} else {
if ((request.getMethod() != "GET")
&& (!("".equals(name)) || !("".equals(pwd)) || !(""
.equals(auth)))) {
out.println("所输入的内容不对!<br>");
}
out.println("<form method=post action=login>");

out.println("<table>");

out.println("<tr>");
out.println("<td>请输入用户名</td>");
out.println("<td><input type=text name=username></td>");
out.println("</tr>");

out.println("<tr>");
out.println("<td>请输入密码</td>");
out.println("<td><input type=password name=password></td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td>请输入右图的验证码</td>");
out
.println("<td><input type=text name=authcodes><img src=authservlet /></td>");
out.println("</tr>");

out.println("<tr>");
out.println("<td></td>");
out
.println("<td><input type=reset value=重填><input type=submit value=登录></td>");
out.println("</tr>");

out.println("</table>");
out.println("</form>");
}

}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}

}
2.验证码程序
import java.io.*;
import java.util.*;

import com.sun.image.codec.jpeg.*;

import javax.servlet.*;
import javax.servlet.http.*;

import java.awt.*;
import java.awt.image.*;

public class AuthServlet extends HttpServlet {
private Font mFont = new Font("Times New Roman", Font.PLAIN, 18);// 设置字体

// static String AuthCode="";

// 处理post
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 取得一个1000-9999的随机数

response.setContentType("image/gif");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
int width = 60;
int height = 20;
if (request.getParameter("width") != null
&& !request.getParameter("width").equals(""))
width = Integer.parseInt(request.getParameter("width"));
if (request.getParameter("height") != null
&& !request.getParameter("height").equals(""))
height = Integer.parseInt(request.getParameter("height"));

ServletOutputStream out = response.getOutputStream();
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB); // 设置图片大小的
Graphics gra = image.getGraphics();
Random random = new Random();

gra.setColor(getRandColor(200, 250)); // 设置背景色
gra.fillRect(0, 0, width, height);

gra.setColor(Color.black); // 设置字体色
gra.setFont(mFont);

// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
gra.setColor(getRandColor(160, 200));
for (int i = 0; i < 155; i++) {
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
gra.drawLine(x, y, x + xl, y + yl);
}

// 取随机产生的认证码(4位数字)
String sRand = "";
for (int i = 0; i < 4; i++) {
String rand = String.valueOf(random.nextInt(10));
sRand += rand;
PrintWriter out=resp.getWriter();
// 将认证码显示到图象中
gra.setColor(new Color(20 + random.nextInt(110), 20 + random
.nextInt(110), 20 + random.nextInt(110)));// 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
gra.drawString(rand, 13 * i + 6, 16);
}
ServletContext context = getServletContext();
context.setAttribute("getImg", new String(sRand));
BufferedImage m = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);

}

static 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);
}

}
3.连接数据库程序(最无奈的错误程序)
package cn.edu.zzu.authorcodes;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class li extends HttpServlet {
ServletContext context = getServletContext();
Connection conn=null;
Statement stmt=null;
ResultSet rs;
private String url;
private String user;
private String password;

public void init() throws ServletException
{
String driverClass=getInitParameter("driverClass");
url=getInitParameter("url");
user=getInitParameter("user");
password=getInitParameter("password");
try
{
Class.forName(driverClass);
}
catch(ClassNotFoundException ce)
{
throw new ServletException("加载数据库驱动失败!");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws

ServletException, IOException {
doGet(request, response);
}

public void doGet(HttpServletRequest request, HttpServletResponse response) throws

ServletException, IOException {
try
{ Graphics gra = image.getGraphics();
Random random = new Random();

String sRand = "";
for (int i = 0; i < 4; i++) {
String rand = String.valueOf(random.nextInt(10));
sRand += rand;

// 将认证码显示到图象中
gra.setColor(new Color(20 + random.nextInt(110), 20 + random
.nextInt(110), 20 + random.nextInt(110)));// 调用函

数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
gra.drawString(rand, 13 * i + 6, 16);
}
ServletContext context = getServletContext();
context.setAttribute("getImg", new String(sRand));
conn=DriverManager.getConnection(url,user,password);
stmt=conn.createStatement();
stmt.executeUpdate("drop database if exists RANDOM");
stmt.executeUpdate("create database RANDOM");
stmt.executeUpdate("use RANDOM");
stmt.executeUpdate("create table rand(number varchar(4) not null primary

key)");
stmt.executeUpdate("insert into rand values('"+sRand+"')");
stmt.executeBatch();


}

catch(SQLException se)
{
throw new ServletException(se);
}
finally
{
if(stmt!=null)
{
try
{
stmt.close();
}
catch(SQLException se)
{
se.printStackTrace();
}
stmt=null;
}
if(conn!=null)
{
try
{
conn.close();
}
catch(SQLException se)
{
se.printStackTrace();
}
conn=null;
}
}
}
}
第3个程序,老是不让插入sRrand的值,有哪位懂得大虾赐教啊
...全文
97 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,408

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧