util
package com.qf.exam.util;
import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
/**
* 根据包名,获取该包下面所有的类全名
* @author Administrator
*
*/
public class PackageUtil {
/**
* 获取某包下(包括该包的所有子包)所有类
* @param packageName 包名
* @return 类的完整名称
*/
public static List<String> getClassName(String packageName) {
return getClassName(packageName, true);
}
/**
* 获取某包下所有类
* @param packageName 包名
* @param childPackage 是否遍历子包
* @return 类的完整名称
*/
public static List<String> getClassName(String packageName, boolean childPackage) {
List<String> fileNames = null;
ClassLoader loader = Thread.currentThread().getContextClassLoader();
String packagePath = packageName.replace(".", "/");
URL url = loader.getResource(packagePath);
if (url != null) {
String type = url.getProtocol();
if (type.equals("file")) {
fileNames = getClassNameByFile(url.getPath(), null, childPackage);
} else if (type.equals("jar")) {
fileNames = getClassNameByJar(url.getPath(), childPackage);
}
} else {
fileNames = getClassNameByJars(((URLClassLoader) loader).getURLs(), packagePath, childPackage);
}
return fileNames;
}
/**
* 从项目文件获取某包下所有类
* @param filePath 文件路径
* @param className 类名集合
* @param childPackage 是否遍历子包
* @return 类的完整名称
*/
private static List<String> getClassNameByFile(String filePath, List<String> className, boolean childPackage) {
List<String> myClassName = new ArrayList<String>();
filePath = filePath.replaceAll("%20", " ");
// System.out.println(filePath);
File file = new File(filePath);
// System.out.println(file);
File[] childFiles = file.listFiles();
for (File childFile : childFiles) {
if (childFile.isDirectory()) {
if (childPackage) {
myClassName.addAll(getClassNameByFile(childFile.getPath(), myClassName, childPackage));
}
} else {
String childFilePath = childFile.getPath();
if (childFilePath.endsWith(".class")) {
childFilePath = childFilePath.substring(childFilePath.indexOf("\\classes") + 9, childFilePath.lastIndexOf("."));
childFilePath = childFilePath.replace("\\", ".");
myClassName.add(childFilePath);
}
}
}
return myClassName;
}
/**
* 从jar获取某包下所有类
* @param jarPath jar文件路径
* @param childPackage 是否遍历子包
* @return 类的完整名称
*/
private static List<String> getClassNameByJar(String jarPath, boolean childPackage) {
List<String> myClassName = new ArrayList<String>();
String[] jarInfo = jarPath.split("!");
String jarFilePath = jarInfo[0].substring(jarInfo[0].indexOf("/"));
String packagePath = jarInfo[1].substring(1);
try {
JarFile jarFile = new JarFile(jarFilePath);
Enumeration<JarEntry> entrys = jarFile.entries();
while (entrys.hasMoreElements()) {
JarEntry jarEntry = entrys.nextElement();
String entryName = jarEntry.getName();
if (entryName.endsWith(".class")) {
if (childPackage) {
if (entryName.startsWith(packagePath)) {
entryName = entryName.replace("/", ".").substring(0, entryName.lastIndexOf("."));
myClassName.add(entryName);
}
} else {
int index = entryName.lastIndexOf("/");
String myPackagePath;
if (index != -1) {
myPackagePath = entryName.substring(0, index);
} else {
myPackagePath = entryName;
}
if (myPackagePath.equals(packagePath)) {
entryName = entryName.replace("/", ".").substring(0, entryName.lastIndexOf("."));
myClassName.add(entryName);
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return myClassName;
}
/**
* 从所有jar中搜索该包,并获取该包下所有类
* @param urls URL集合
* @param packagePath 包路径
* @param childPackage 是否遍历子包
* @return 类的完整名称
*/
private static List<String> getClassNameByJars(URL[] urls, String packagePath, boolean childPackage) {
List<String> myClassName = new ArrayList<String>();
if (urls != null) {
for (int i = 0; i < urls.length; i++) {
URL url = urls[i];
String urlPath = url.getPath();
// 不必搜索classes文件夹
if (urlPath.endsWith("classes/")) {
continue;
}
String jarPath = urlPath + "!/" + packagePath;
myClassName.addAll(getClassNameByJar(jarPath, childPackage));
}
}
return myClassName;
}
}
package com.qf.exam.util;
import java.awt.Color;
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.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/pic.do")
public class ImageCodeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
static int WIDTH=100;
static int HEIGHT=50;
static Random random = new Random();
static int size = 4;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取一个画布
BufferedImage bi = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_BGR);
//获取画笔
Graphics graphics = bi.getGraphics();
//给画笔设置颜色 画笔的颜色是随机的
graphics.setColor(getColor());
//code库
String code = "abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ123456798";
char str[] = code.toCharArray();
//用于接收生成的每一个随机字符 用于之后验证
StringBuffer sb = new StringBuffer();
//作画
//画一个框 长宽 给画布填充颜色
graphics.fillRect(0, 0, WIDTH, HEIGHT);
//往框里面写字 写N次
for (int i = 0; i < size; i++) {
int index = random.nextInt(str.length);
graphics.setColor(getFontColor());
//写字时 纵坐标的位置
graphics.drawString(str[index]+"", (i+1)*20+random.nextInt(5),random.nextInt(15)+25 );
sb.append(str[index]);
}
//添加干扰 1 添加点 2 干扰线
for (int i = 0; i < 300; i++) {
graphics.setColor(getColor());
graphics.drawOval(random.nextInt(WIDTH+1), random.nextInt(HEIGHT+1), 1, 1);
}
graphics.setColor(getColor());
graphics.drawRect(random.nextInt(WIDTH), random.nextInt(HEIGHT), random.nextInt(WIDTH/2), 1);
//把验证码的字符存起来
request.getSession().setAttribute("vcode", sb);
//将画好的图片使用流输出到前端
ImageIO.write(bi, "png", response.getOutputStream());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
//给画布设置浅色
private Color getColor(){
int x;
int y;
int z;
do{
x = random.nextInt(250);
y = random.nextInt(250);
z = random.nextInt(250);
}while(!isDark(x, y, z));
return new Color(x,y,z);
}
//判断颜色深浅
private boolean isDark(int r,int g,int b){
if(r*0.299 + g*0.578 + b*0.114 >= 192){ //浅色
return false;
}else{ //深色
return true;
}
}
//给字体设置深色
private Color getFontColor(){
int x;
int y;
int z;
do{
x = random.nextInt(250);
y = random.nextInt(250);
z = random.nextInt(250);
}while(isDark(x, y, z));
return new Color(x,y,z);
}
}
package com.qf.exam.util;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class DBUtil {
public static Connection getConnection() {
try {
return DataSourceUtil.getDataSource().getConnection();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void close(Connection con, PreparedStatement ps, ResultSet rs) {
if (null != rs) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (null != ps) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (null != con) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static int executeDML(String sql, Object... params) throws Exception {
Connection con = DBUtil.getConnection();
PreparedStatement ps = con.prepareStatement(sql);
if (null != params && params.length > 0) {
for (int i = 0; i < params.length; i++) {
ps.setObject(i + 1, params[i]);
}
}
int result = ps.executeUpdate();
close(con, ps, null);
return result;
}
public static int dml(String sql, Object[] params) throws Exception {
PreparedStatement ps = DBUtil.getConnection().prepareStatement(sql);
if (null != params && params.length > 0) {
for (int i = 0; i < params.length; i++) {
ps.setObject(i + 1, params[i]);
}
}
return ps.executeUpdate();
}
public static <T> T executeDQLByOne(Class cls, String sql, Object... params) throws Exception{
List<T> list = executeDQL(cls,sql,params);
if(null != list && list.size() >0){
return list.get(0);
}
return null;
}
public static int executeCount(String sql) throws Exception{
Connection con = DBUtil.getConnection();
PreparedStatement ps = con.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
if(rs.next()){
return rs.getInt(1);
}
close(con, ps, rs);
return 0;
}
public static <T> List<T> executeDQL(Class cls, String sql, Object... params) throws Exception {
List<T> list = new ArrayList<T>();
Connection con = DBUtil.getConnection();
PreparedStatement ps = con.prepareStatement(sql);
if (null != params && params.length > 0) {
for (int i = 1; i <= params.length; i++) {
ps.setObject(i, params[i - 1]);
}
}
ResultSet rs = ps.executeQuery();
ResultSetMetaData metaData = rs.getMetaData();
int count = metaData.getColumnCount();
T obj;
while (rs.next()) {
obj = (T) cls.newInstance();
for (int i = 1; i <= count; i++) {
String columnName = metaData.getColumnLabel(i);
Object columnValue = rs.getObject(columnName);
Field field = cls.getDeclaredField(columnName);
if(columnValue != null){
field.setAccessible(true);
field.set(obj, columnValue);
}
}
list.add(obj);
}
close(con, ps, rs);
return list;
}
}
package com.qf.exam.util;
import java.io.IOException;
import java.util.Properties;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSource;
public class DataSourceUtil {
private static DataSource dataSource = null;
public synchronized static DataSource getDataSource(){
if (null==dataSource) {
DruidDataSource dSource = new DruidDataSource();
Properties properties = new Properties();
try {
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));
dSource.configFromPropety(properties);
dataSource = dSource;
} catch (IOException e) {
e.printStackTrace();
}
}
return dataSource;
}
}
servlet
package com.qf.exam.web;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.google.gson.Gson;
import com.qf.exam.anno.MyAjax;
import com.qf.exam.anno.RequestPath;
import com.qf.exam.entity.ResultEntity;
import com.qf.exam.entity.UserEntity;
import com.qf.exam.service.UserService;
import com.qf.exam.service.impl.UserServiceImpl;
public class UserServlet {
ResultEntity rs=new ResultEntity();
UserService us=new UserServiceImpl();
Gson gson=new Gson();
@RequestPath("login.do")
@MyAjax
public String login(HttpServletRequest req){
String userName = req.getParameter("userName");
String userPass = req.getParameter("userPass");
req.getSession().setAttribute("falsename", userName);
String vcode = req.getSession().getAttribute("vcode").toString();
String code = req.getParameter("code");
System.out.println(userName+" " +userPass +" " +vcode+" " +code );
if (isNull(userName) || isNull(userPass) ||isNull(code)) {
rs.setResMsg("username or password or code is null");
rs.setResCode("0000");
return gson.toJson(rs);
}else{
if (!code.equalsIgnoreCase(vcode)) {
rs.setResMsg("wrong code");
rs.setResCode("0001");
return gson.toJson(rs);
}else{
UserEntity user = us.selOne(userName, userPass);
if (null!=user) {
req.getSession().setAttribute("rightname", user.getAname());
rs.setResMsg("login success");
rs.setResCode("0002");
return gson.toJson(rs);
}else{
rs.setResMsg("wrong username or password");
rs.setResCode("0003");
return gson.toJson(rs);
}
}
}
}
@RequestPath("selall.do")
public String selAll(HttpServletRequest req){
//定死 从第一页展示 每页展示5条
String page = req.getParameter("page");
String size = req.getParameter("size");
int currentPage = 0;
int pageSize = 0;
if (isNull(page)) {
currentPage = 1;
}else{
currentPage =Integer.valueOf(page.toString()) ;
}
if (isNull(size)) {
pageSize = 5;
}else{
pageSize =Integer.valueOf(page.toString()) ;
}
//获取总记录数
int count = us.getCount();
//总页数
int totalPage = count/pageSize;
if (count%pageSize!=0) {
totalPage = totalPage+1;
}
if (currentPage>=totalPage) {
currentPage=totalPage;
}
if (currentPage<=1) {
currentPage=1;
}
//获取分页的列表
List<UserEntity> list = us.selAllByPage((currentPage-1)*pageSize, pageSize);
req.getSession().setAttribute("currentPage", currentPage);
req.getSession().setAttribute("pageSize", pageSize);
req.getSession().setAttribute("list", list);
req.getSession().setAttribute("totalPage", totalPage);
return "f:index.jsp";
}
@RequestPath("add.do")
@MyAjax
public String add(HttpServletRequest req){
String name = req.getParameter("name");
String pass = req.getParameter("pass");
String phone = req.getParameter("phone");
String email = req.getParameter("email");
String desc = req.getParameter("desc");
if (isNull(name)||isNull(pass)) {
rs.setResCode("1111");
rs.setResMsg("username or password is null");
return gson.toJson(rs);
}else {
UserEntity user = us.selOneByName(name);
System.out.println(user);
if (null==user) {
//说明用户不存在 可以添加
UserEntity u=new UserEntity();
u.setAname(name);
u.setApass(pass);
u.setAphone(phone);
u.setAemail(email);
u.setAdesc(desc);
boolean status = us.addOne(u);
if (status) {
rs.setResCode("1114");
rs.setResMsg("add success");
return gson.toJson(rs);
}else {
rs.setResCode("1115");
rs.setResMsg("add failed");
return gson.toJson(rs);
}
}else {
//用户已存在 不允许注册
rs.setResCode("1113");
rs.setResMsg("user already exist");
return gson.toJson(rs);
}
}
}
@RequestPath("del.do")
@MyAjax
public String del(HttpServletRequest req){
int id = Integer.valueOf(req.getParameter("aid"));
boolean status = us.delOne(id);
if (status) {
rs.setResCode("0000");
rs.setResMsg("del success");
return gson.toJson(rs);
}else{
rs.setResCode("1111");
rs.setResMsg("del failed");
return gson.toJson(rs);
}
}
@RequestPath("upd.do")
@MyAjax
public String udp(HttpServletRequest req){
//这是需要修改的用户的id
String name = req.getParameter("name");
String type = req.getParameter("type");
System.out.println(name+" " + type);
//type为空做查询回填数据
if (null==type || "".equals(type)) {
//根据用户名查询到该用户的信息
UserEntity user = us.selOneByName(name);
//将用户存储到session
req.getSession().setAttribute("user", user);
rs.setResCode("2222");
rs.setResMsg("find it");
return gson.toJson(rs);
}else{
//默认用户名和id是不允许修改的
Integer id = Integer.valueOf(req.getParameter("id"));
String phone = req.getParameter("phone");
String email = req.getParameter("email");
String desc = req.getParameter("desc");
String password = req.getParameter("pass");
//需要对用户修改的密码进行判空 默认修改的密码不能为空 其它可为空
if (isNull(password)) {
rs.setResCode("2222");
rs.setResMsg("password can not be null!");
return gson.toJson(rs);
}else{
UserEntity user = new UserEntity();
user.setAid(id);
user.setAemail(email);
user.setAname(name);
user.setApass(password);
user.setAphone(phone);
user.setAdesc(desc);
boolean status = us.udpOne(user);
if (status) {
rs.setResCode("0000");
rs.setResMsg("update success");
return gson.toJson(rs);
}else {
rs.setResCode("1111");
rs.setResMsg("update failed");
return gson.toJson(rs);
}
}
}
}
private boolean isNull(String str){
return null==str || "".equals(str);
}
}
filter
package com.qf.exam.filter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebFilter("/*")
public class UserFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp= (HttpServletResponse) response;
List<String> ignore = new ArrayList<>();
//存入不需要过滤的请求路径
ignore.add("login.jsp");
ignore.add("/login.do");
ignore.add("/pic.do");
//定义一个是否忽略的标志,初始为false不放行
boolean isIgnore = false;
//2.遍历忽略白名单,并放行
for (String path: ignore){
//req.getRequestURL()是StringBuffer类型的,转换成String类型
String reqPath = req.getRequestURL().toString();
//判断get得到的reqPath请求路径是否在白名单内
if (reqPath.contains(path)){
//在白名单内,isIgnore标志赋值true
isIgnore=true;
//过滤链执行放行,放行请求和响应
chain.doFilter(req,resp);
}
}
//3.如果请求不在白名单内,就要判断session域内有没有登录时存入的用户名uName
if (!isIgnore){
//判断session域中是否存在用户名uName
if (req.getSession().getAttribute("rightname")==null){
//如果为空就是没登录,就要重定向到登录页面
resp.sendRedirect("login.jsp");
}else {
//域中有用户名,说明登陆过了,可以放行
chain.doFilter(req,resp);
}
}
}
public void init(FilterConfig fConfig) throws ServletException {
}
}
dispatcherServlet
package com.qf.exam.comm;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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 com.qf.exam.anno.MyAjax;
import com.qf.exam.anno.RequestPath;
import com.qf.exam.util.PackageUtil;
@WebServlet(value="*.do",loadOnStartup=1)
public class DispatcherServlet extends HttpServlet {
//请求地址 类全名+方法名
static Map<String, String> config = new HashMap<>();
@Override
public void init() throws ServletException {
//要把所有的请求对应的实体类和方法名 加载到config里面
//获取所有类
//获取某个包下 的所有类
String packagePath = "com.qf.exam.web";
//根据指定包名 获取下面所有类的全名
List<String> list = PackageUtil.getClassName(packagePath);
//获取所有类里面的方法(带RequestPath注解的方法)
for (String cpath : list) {
try {
Class cls = getClass().forName(cpath);
Method[] methods = cls.getMethods();
//查找所有方法的注解
for (Method method : methods) {
RequestPath pt = method.getAnnotation(RequestPath.class);
if (null!=pt) {
config.put(pt.value(), cls.getName()+"#"+method.getName());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取目标类 使用反射获取目标类
//获取请求地址
//根据请求地址 去目标config里面获取执行的servlet类
String key = req.getServletPath().substring(1);
System.out.println(key);
System.out.println(config);
String path = config.get(key);
String [] sp = path.split("#");
String className = sp[0]; //类全名
String methodName = sp[1]; //方法名
try {
//根据类全名 获取字节码对象以及类对象
Class cls = Class.forName(className);
Object obj = cls.newInstance();
//根据方法名 获取方法 执行目标方法得到返回值
Method method = cls.getMethod(methodName, HttpServletRequest.class);
String result = method.invoke(obj, req).toString();
//根据返回值做不同的处理
MyAjax mj = method.getAnnotation(MyAjax.class);
//代表我们当前的方法是专门来处理ajax请求
if (null!=mj) {
resp.getWriter().write(result);
}else { //代表页面跳转的请求
if (result.contains(":")) {
resp.sendRedirect(result.substring(result.indexOf(":")+1)); //重定向
}else {
req.getRequestDispatcher(result).forward(req, resp);//转发
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
anno
package com.qf.exam.anno;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Documented
@Inherited
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAjax {
}
package com.qf.exam.anno;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Documented
@Inherited //锟斤拷锟斤拷锟角凤拷锟斤拷约坛懈锟斤拷锟斤拷注锟斤拷
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RequestPath {
String value() default "";
}
dao
package com.qf.exam.dao;
import java.util.List;
public interface IBaseDao {
//添加
public boolean add(String sql , Object... params);
//删除
public boolean del(String sql , Object... params);
//修改
public boolean upd(String sql , Object... params);
//查询多个
public <T> List<T> sel(Class cls,String sql , Object... params);
//查询一个
public <T> T selOne(Class cls,String sql , Object... params);
}
package com.qf.exam.dao;
import java.util.List;
import com.qf.exam.entity.UserEntity;
public interface IUserDao extends IBaseDao {
//根据用户名 密码查询一个用户是否存在
public UserEntity selOne(String name,String password);
//根据用户名 查询一个用户是否存在
public UserEntity selOneByName(String name);
//添加一个用户
public boolean addOne(UserEntity user);
//根据id删除一个用户
public boolean delOne(int id);
//查询所有用户
public List<UserEntity> selAll();
//修改一个用户的信息
public boolean udpOne(UserEntity user);
//分页查询所有的用户信息
public List<UserEntity> selAllByPage(int start,int size);
//查询总用户数
public int getCount();
}
package com.qf.exam.dao.impl;
import java.util.List;
import com.qf.exam.dao.IBaseDao;
import com.qf.exam.util.DBUtil;
public class BaseDaoImpl implements IBaseDao{
@Override
public boolean add(String sql , Object... params) {
try {
return DBUtil.executeDML(sql, params) > 0;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
@Override
public boolean del(String sql, Object... params) {
try {
return DBUtil.executeDML(sql, params) > 0;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
@Override
public boolean upd(String sql, Object... params) {
try {
return DBUtil.executeDML(sql, params) > 0;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
@Override
public <T> List<T> sel(Class cls, String sql, Object... params) {
try {
return DBUtil.executeDQL(cls, sql, params);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
public <T> T selOne(Class cls, String sql, Object... params) {
try {
return DBUtil.executeDQLByOne(cls, sql, params);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//获取总记录数
public int selCount(String sql){
try {
return DBUtil.executeCount(sql);
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
}
package com.qf.exam.dao.impl;
import java.util.List;
import com.qf.exam.dao.IUserDao;
import com.qf.exam.entity.UserEntity;
import com.qf.exam.util.DBUtil;
public class UserDaoImpl extends BaseDaoImpl implements IUserDao{
String tsql = "select aid,aname,apass,aphone,aemail,adesc from t_admin where 1=1";
@Override
public UserEntity selOne(String name,String password) {
String sql = tsql+" and aname=? and apass=? " ;
return selOne(UserEntity.class, sql, name,password);
}
@Override
public boolean addOne(UserEntity user) {
String sql = "insert into t_admin(aname,apass,aphone,aemail,adesc) values(?,?,?,?,?)";
return add(sql, user.getAname(),user.getApass(),user.getAphone(),user.getAemail(),user.getAdesc());
}
@Override
public boolean delOne(int id) {
String sql = "delete from t_admin where aid=?";
return del(sql, id);
}
@Override
public List<UserEntity> selAll() {
return sel(UserEntity.class, tsql);
}
@Override
public boolean udpOne(UserEntity user) {
String sql = "update t_admin set apass=?,aphone=?,aemail=?,adesc=? where aid=?";
return upd(sql, user.getApass(),user.getAphone(),user.getAemail(),user.getAdesc(),user.getAid());
}
@Override
public List<UserEntity> selAllByPage(int start, int size) {
String sql = tsql + " limit ?,?";
try {
return DBUtil.executeDQL(UserEntity.class, sql, start,size);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
public int getCount() {
String sql = "select count(aid) from t_admin";
try {
return DBUtil.executeCount(sql);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}
@Override
public UserEntity selOneByName(String name) {
String sql = tsql + " and aname=?";
return selOne(UserEntity.class, sql, name);
}
}
db.properties
druid.username=root
druid.password=123456
druid.driverClassName=com.mysql.jdbc.Driver
druid.url=jdbc:mysql://localhost:3306/week8?useUnicode=true&characterEncoding=utf-8&useSSL=false
druid.initialSize=4
druid.maxActive=6000
gson jstl druid mysql-connector-java standard.jar
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>