一登陆界面
二c3p0配置文件
10 30 100 10 200 com.mysql.jdbc.Driver jdbc:mysql://127.0.0.1:3306/bookdb?useUnicode=true&characterEncoding=utf8 root root 10 30 100 10 200
loin.html
```clike
享学图书管理系统
|
|
|
||||||||||
Copyright © 2011-2021 享学课堂科技信息有限公司 | |||||||||||
bean包User实体类User.java,取得属性,构造对象
package bean;
import java.io.Serializable;
public class User implements Serializable {
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + ''' +
", pwd='" + pwd + ''' +
", state=" + state +
'}';
}
private long id;
private String name;
private String pwd;
private long state;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public long getState() {
return state;
}
public void setState(long state) {
this.state = state;
}
}
dao包UserDao.java获取数据库连接,进行查询
异常抛出userBiz处理
package dao;
import java.sql.Connection;
import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import bean.User;
import util.DBHelper;
public class userDao {//UserDao出现异常应该抛出给biz
//创建QueryRunner对象getUser方法JDBC DBUtils
QueryRunner runner=new QueryRunner();
public User getUser(String name,String pwd) throws SQLException {
//1调用DBHelper对象获取连接
Connection conn=DBHelper.getConnection();
//2准备执行sql语句
String sql="Select * from user where name=? and pwd=? and state=1";
//3调用查询方法,将查询的数据封装成User对象 runner.query(conn,sql, new BeanHandler(User.class),name,pwd);
User user =runner.query(conn, sql,new BeanHandler(User.class),name,pwd);
//4关闭连接对象
DBHelper.close(conn);
//5返回User
return user;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
User user =null;
try {
user =new userDao().getUser("super", "1");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(user);
}
}
biz包 userBiz.java调用userDao的getUser方法,向UserServlet提供服务,有异常要处理try catch
package biz;
import java.sql.SQLException;
import bean.User;
import dao.userDao;
public class UserBiz {
userDao userDao =new userDao();
public User getUser(String name,String pwd) {
User user=null;
try {
user=userDao.getUser(name,pwd);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return user ;
}
}
action包是servlet
UserServlet.java和 ValCodeServlet.java验证码
package action;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import bean.User;
import biz.UserBiz;
@WebServlet("/user.let")
public class UserServlet extends HttpServlet {
//构建biz对象
UserBiz userBiz=new UserBiz();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session=req.getSession();
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter out=resp.getWriter();
//1.判断用户请求类型为login
String method=req.getParameter("type");
switch(method) {
case "login":
//2从login.html中获取用户名密码验证码
String name=req.getParameter("name");
String pwd=req.getParameter("pwd");
String userCode=req.getParameter("valcode");
//2.2 提取session中的验证码,进行判断
String code=req.getParameter("valcode");
//不区分大小写
if (!code.equalsIgnoreCase(userCode)) {
out.println("");
return;
}
//3调用UserBiz的getUser方法,根据用户名和密码获取对应的用户对象
User user =userBiz.getUser(name, pwd);
//4判断用户对象是否为空
if(user==null) {
out.println("");
}else {
//4.1如果null表示用户名或密码或验证码不正确,回到登陆页面
session.setAttribute("user",user);//user-->Objec
out.println("");
//4.2非空:表示登陆成功,跳转到index.jsp页面
}
break;
}
}
}
package action;
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.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet(urlPatterns="/code.let",loadOnStartup=1)//服务器启动时,验证码就已经准备好了
public class ValCodeServlet extends HttpServlet {
Random random=new Random();
private String getRandomStr() {
String str="23456789ABCDEFGHJKMNPQRSTUVWXYZabcdefghgkmnopqrstuvwxyz";//1 0 l o
StringBuilder sb=new StringBuilder();//生成的字符串是会变化的
for(int i=0;i<4;i++) {
int index=random.nextInt(str.length());//获取字符的下标
char letter=str.charAt(index);
sb.append(letter);//字符追加到sb的末尾
}
return sb.toString();
}
//获取背景颜色0-255
private Color getBackColor() {
int red=random.nextInt(256);
int green=random.nextInt(256);
int blue=random.nextInt(256);
return new Color(red, blue, green);//生成颜色对象
}
private Color getForeColor(Color bgColor) {
int red=255-bgColor.getRed();
int green=255-bgColor.getGreen();
int blue=255-bgColor.getBlue();
return new Color(red, green, blue);//生成颜色对象;
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.设置响应格式为图片:jpg
resp.setContentType("image/jpeg");
//2.图片对象 //缓冲区图片,在内存中,红绿蓝三原色
BufferedImage bufferedImage=new BufferedImage(80, 30, BufferedImage.TYPE_INT_RGB);
//3.获取画布对象
Graphics g=bufferedImage.getGraphics();
//4.设置背景颜色
Color bgColor=getBackColor();
g.setColor(bgColor);
//5.画背景
g.fillRect(0, 0, 80, 30);
g.setFont(new Font("黑体",Font.BOLD,26));
//6.设置前景颜色
Color foreColor=getForeColor(bgColor);
g.setColor(foreColor);
//7.将随机字符串存到session
String randomStr=getRandomStr();
HttpSession session=req.getSession();
session.setAttribute("code", randomStr);
g.drawString(randomStr, 10, 28);
//8.噪点(30个白色正方形)
for(int i=0;i<30;i++) {
g.setColor(Color.white);
int x=random.nextInt(80);
int y=random.nextInt(30);
g.fillRect(x, y, 1, 1);
}
//9.将这张内存的图片输出到响应流
ServletOutputStream sos=resp.getOutputStream();
ImageIO.write(bufferedImage, "jpeg", sos);
}
}
点击验证码更换
//1当文档加载完毕,调用jquery
$(function(){
//2执行图片点击事件
$("#code").click(function(){
//3设置图片的src属性,注意需要添加随机数
$(this).prop("src","code.let?id"+Math.random());
})
});




