文件结构
druidpool.properties
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mytest?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
username=root
password=123456
# 初始化连接数量
initialSize=10
# 最大的连接数量
maxActive=200
DBUtil.java
public class DBUtil {
static DruidDataSource dataSource;
static {
Properties properties = new Properties();
InputStream resourceAsStream = DBUtil.class.getClassLoader().getResourceAsStream("druidpool.properties");
try {
properties.load(resourceAsStream);
dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
try {
return dataSource.getConnection();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return null;
}
public static boolean executeDML(String sql,Object... params){
Connection connection = getConnection();
try {
PreparedStatement preparedStatement = connection.prepareStatement(sql);
if (null != params){
for (int i = 0; i < params.length; i++) {
preparedStatement.setObject(i+1,params[i]);
}
int i = preparedStatement.executeUpdate();
return i > 0;
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return false;
}
public static <T> T executeDQLGetOne(String sql, Class<T> cls , Object... params){
List<T> ts = executeDQL(sql, cls, params);
if(null != ts && ts.size() > 0){
return ts.get(0);
}
return null;
}
public static <T> List<T> executeDQL(String sql, Class<T> cls , Object... params) {
try {
Connection connection = getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(sql);
if(null != params){
for(int i = 0 ; i < params.length ; i++){
preparedStatement.setObject(i+1,params[i]);
}
}
ResultSet resultSet = preparedStatement.executeQuery();
ResultSetMetaData metaData = resultSet.getMetaData();
int columnCount = metaData.getColumnCount();
List<T> list = new ArrayList<T>();
T t;
while(resultSet.next()){
t = cls.newInstance();
for(int i = 1 ; i <= columnCount ; i++){
String columnLabel = metaData.getColumnLabel(i);
Object object = resultSet.getObject(columnLabel);
if(null != object){
try {
Field field = cls.getDeclaredField(columnLabel);
field.setAccessible(true);
field.set(t,object);
} catch (NoSuchFieldException e) {
}
}
}
list.add(t);
}
return list;
} catch (SQLException sqlException) {
sqlException.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
return null;
}
}
CodeServlet(验证码)
package com.biao.web.Servlet;
import cn.dsna.util.images.ValidateCode;
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 java.io.IOException;
@WebServlet("/demo/createCode")
public class CodeServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ValidateCode vc = new ValidateCode(180,40,6,55);
resp.setHeader("Pragma","no-cache");
resp.setHeader("Cache-Control","no-cache");
resp.setDateHeader("Expires",0);
String code = vc.getCode();
req.getSession().setAttribute("code",code);
System.out.println(code);
vc.write(resp.getOutputStream());
}
}
LoginServlet
@WebServlet("/demo/login")
public class LoginServlet extends HttpServlet {
LoginService loginService = new LoginService();
@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 {
req.setCharacterEncoding("utf-8");
String name = req.getParameter("name");
String pass = req.getParameter("pass");
String vcode = req.getParameter("vcode");
String code = String.valueOf(req.getSession().getAttribute("code"));
int result = loginService.login(name, pass);
resp.setHeader("Content-type","text/html;charset=UTF-8");
resp.setCharacterEncoding("utf-8");
String msg = "";
if (code.equals(vcode)) {
if (result == SystemCode.USER_LOGIN_SUCCESS) {
msg = "恭喜你登录成功";
req.getSession().setAttribute("name", name);
} else if (result == SystemCode.USER_LOGIN_PASS_WORNG) {
msg = "密码错误";
} else {
msg = "没有这个用户";
}
}else{
msg = "验证码错误";
}
req.setAttribute("msg",msg);
req.getRequestDispatcher("/demo/view").forward(req,resp);
}
}
UserServlet
@WebServlet("/demo/userList")
public class UserServlet extends HttpServlet {
UserService userService = new UserService();
@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 {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
Object name = req.getSession().getAttribute("name");
if (name == null){
out.println("<html>");
out.println("<head>");
out.println("<title> 登录结果 </title>");
out.println("<body>");
out.println("you not login <a href='/index.jsp'>跳转到登录页面</a>");
out.println("</body>");
out.println("</head>");
out.println("</html>");
}else{
List<User> allUser = userService.findAllUser();
out.println("<html>");
out.println("<head>");
out.println("<title> 登录结果 </title>");
out.println("<body>");
for(User ui : allUser){
out.println(ui);
out.println("<hr>");
}
out.println("</body>");
out.println("</head>");
out.println("</html>");
}
}
}
View
@WebServlet("/demo/view")
public class View extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
System.out.println("这个是别的地方跳转过来的");
PrintWriter out = response.getWriter();
Object msg = request.getAttribute("msg");
Object msg1 = request.getSession().getAttribute("msg");
out.println("<html>");
out.println("<head>");
out.println("<title> 登录结果 </title>");
out.println("<body><h1>");
out.println(msg);
out.println(msg1);
out.println("</h1></body>");
out.println("</head>");
out.println("</html>");
}
}
LoginService
public class LoginService {
LoginDao loginDao = new LoginDao();
public int login(String name, String pass) {
return loginDao.Login(name,pass);
}
}
UserService
public class UserService {
UserDao userDao = new UserDao();
public List<User> findAllUser(){
return userDao.findAllUser();
};
}
User
public class User {
private int uid;
private String uname;
private String upass;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpass() {
return upass;
}
public void setUpass(String upass) {
this.upass = upass;
}
@Override
public String toString() {
return
"uid=" + uid +
", uname='" + uname + '\'' +
", upass='" + upass + '\''
;
}
}
LoginDao
public class LoginDao {
public int Login(String name,String pass){
String sql = "select * from userinfo where uname = ?";
User user = DBUtil.executeDQLGetOne(sql, User.class,name);
if (user == null){
return SystemCode.USER_LOGIN_USER_NULL;
}
if (pass.equals(user.getUpass())){
return SystemCode.USER_LOGIN_SUCCESS;
}
return SystemCode.USER_LOGIN_PASS_WORNG;
}
}
UserDao
public class LoginDao {
public int Login(String name,String pass){
String sql = "select * from userinfo where uname = ?";
User user = DBUtil.executeDQLGetOne(sql, User.class,name);
if (user == null){
return SystemCode.USER_LOGIN_USER_NULL;
}
if (pass.equals(user.getUpass())){
return SystemCode.USER_LOGIN_SUCCESS;
}
return SystemCode.USER_LOGIN_PASS_WORNG;
}
}
SystemCode
public interface SystemCode {
int USER_LOGIN_SUCCESS = 90000;
int USER_LOGIN_PASS_WORNG= 90001;
int USER_LOGIN_USER_NULL= 90002;
}
index.jsp(验证码也需要在这里传入)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<form action="demo/login" method="post">
<label>姓名:</label><input type="text" name="name"><br/>
<label>密码:</label><input type="password" name="pass"><br/>
<label>验证码:</label> <img src="demo/createCode" /> <input type="text" name="vcode"><br/>
<input type="submit" value="提交">
</form>
</body>
</html>