工具类:
1.自己封装的BaseDao
2.一个计算分页的工具类
Dao层处理sql语句
1.准备一个接口:
前端页面展示:
接口实现:
(注意,查询结果必须以while循环遍历)
数据库表:
实体类:
中间Service过渡层:
这里Service层和dao层接口的方法一致
一个多态的使用
Servlet完成前后端交互
Servlet层新建一个Servlet 起名字叫做LoginServlet
在doPost方法内调用doGet方法传参request 和 response
(重点)然后在doGet方法内这样写:
前两行在设置编码集
request.getParameter在获取前端传回来的值
以Service层调用login方法,Service层又调用了Dao层的方法,通过查询数据库的数据判断账号和密码是否与数据库内储存的值相同,()
这些被标记的代码可不用写,是过滤器
判断调用方法查询结果是否为true, 如果为true以response重定向到下一个页面
否则继续留在登录页面
登录成功后进入主界面
数据库数据:
Dao层:
该方法将数据库的数据取出后保存到实体类,然后list集合保存实体类,拿Result结果集获取每一个字段的内容,然后while循环遍历每一行数据,实体类通过set保存通过结果集取到的字段数据,取完后以list集合保存实体类,然后return这个集合
下面这个方法是获取分页所需要的值;
Service层和login的写法一致,这里就不列出来了,
注:这里使用StringBuffer为了拼接模糊查询的条件
通过request把集合和分页所需的值传递到前端
实体类注意要和数据库的字段数据类型一致
登录界面判断的Servlet原码:
package com.mhj.servlet;
import com.mhj.entity.Admin;
import com.mhj.service.AdminService;
import com.mhj.service.impl.AdminServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println(username + password);
Admin ad = new Admin();
ad.setUsername(username);
ad.setPassword(password);
AdminService aa = new AdminServiceImpl();
boolean rs = aa.login(ad);
System.out.println(username);
System.out.println(password);
if (rs) {
HttpSession session = request.getSession(true);
String id = session.getId();
Cookie cookie = new Cookie("JSESSIONID", id);
cookie.setMaxAge(3600);
response.addCookie(cookie);
session.setAttribute("username", username);
session.setAttribute("password", password);
// request.getSession().setAttribute("username", username);
response.sendRedirect(getServletContext().getContextPath() + "/UserFuzzyServlet");
} else {
System.out.println("失败");
response.sendRedirect("after/login.jsp");
}
}
}
展示user数据的Servlet原码:
package com.mhj.servlet;
import com.mhj.entity.User;
import com.mhj.service.UserService;
import com.mhj.service.impl.UserServiceImpl;
import com.mhj.util.PageUtil;
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;
import java.util.List;
@WebServlet("/UserFuzzyServlet")
public class UserFuzzyServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
StringBuffer condtion = new StringBuffer();
PageUtil pu = new PageUtil();
User user = new User();
UserService us = new UserServiceImpl();
String username1 = request.getParameter("username");
String pNo = request.getParameter("pageNo");
if (pNo == null) {
pNo = "1";
}
String sex = request.getParameter("sex");
if (username1 != null && !"".equals(username1)) {
condtion.append("and username like '%" + username1 + "%'");
}
System.out.println(sex);
if (sex != null && !"".equals(sex)) {
condtion.append("and sex like '%" + sex + "%'");
}
int i = us.userFuzzySelectCount(condtion.toString());
int pageNo = Integer.parseInt(pNo);
int pageSize = 3;
pu.setPageNo(pageNo);
pu.setPageSize(pageSize);
pu.setDataCount(i);
int pageCount = pu.getPageCount();
List<User> list = us.fuzzySelectUser(pageNo, pageSize, condtion.toString());
request.setAttribute("pageNo", pageNo);
request.setAttribute("pageSize", pageSize);
request.setAttribute("pageCount", pageCount);
request.setAttribute("list", list);
request.setAttribute("username1",username1);
request.getRequestDispatcher("/after/user.jsp").forward(request, response);
}
}
为了良好的阅读体验 最后把BaseDao和UserDao的原码也补上吧:
BaseDao:
注意:conn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/db_fengmi?useSSL=true”, “root”, “5324”);这是我的数据库, 具体要改什么库名和密码要你们自己修改
package com.mhj.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class BaseDao {
public static Connection getConn() {
Connection conn=null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/db_fengmi?useSSL=true", "root", "5324");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
//增删改
public int setUpdate(String sql,Object[] obj) {
int result=0;
PreparedStatement ps;
try {
ps = getConn().prepareStatement(sql);
for (int i = 0; i < obj.length; i++) {
ps.setObject(i+1, obj[i]);
}
result=ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
//查询
public ResultSet select(String sql,Object[] obj) throws Exception {
ResultSet result=null;
Connection conn=getConn();
PreparedStatement ps = conn.prepareStatement(sql);
for (int i = 0; i < obj.length; i++) {
ps.setObject(i+1, obj[i]);
}
//result=ps.executeQuery();
result=ps.executeQuery();
return result;
}
}
UserDaoImpl:
package com.mhj.dao.impl;
import com.mhj.dao.UserDao;
import com.mhj.entity.User;
import com.mhj.util.BaseDao;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class UserDaoImpl extends BaseDao implements UserDao {
@Override
public List<User> fuzzySelectUser(int pageNo, int pageSize, String condition) {
String sql = "select * from t_user where 1=1 " + condition + "limit ?, ?";
Object[] obj = {(pageNo - 1) * pageSize, pageSize};
List list = new ArrayList();
try {
ResultSet rs = this.select(sql, obj);
while (rs.next()) {
User user = new User();
user.setId(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
user.setPhone(rs.getString(4));
user.setSex(rs.getString(6));
user.setMail(rs.getString(7));
list.add(user);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
@Override
public int userFuzzySelectCount(String condition) {
String sql = "select count(1) from t_user where 1=1 " + condition;
Object[] obj = {};
int count = 0;
try {
ResultSet select = this.select(sql, obj);
while (select.next()) {
count = select.getInt(1);
}
} catch (Exception e) {
e.printStackTrace();
}
return count;
}
@Override
public int userAdd(User user) {
String sql = "insert into t_user(username, password, phone, mail) values (?, ?, ?, ?)";
Object[] obj = {user.getUsername(), user.getPassword(), user.getPhone(), user.getMail()};
return this.setUpdate(sql, obj);
}
@Override
public int userDelete(int id) {
String sql = "delete from t_user where id = ?";
Object[] obj = {id};
return this.setUpdate(sql, obj);
}
@Override
public int userUpdata(User user, int id) {
String sql = "update t_user set username=?, password=?, phone=?, mail=? where id=?";
Object[] obj = {user.getUsername(), user.getPassword(), user.getPhone(), user.getMail(), id};
return this.setUpdate(sql, obj);
}
}