MVC模式实现用户登录以及用户信息的增删改查(CRUD)

MVC模式简介

MVC模式实现用户登录以及用户信息的增删改查(CRUD)_第1张图片

实现的功能

MVC模式实现用户登录以及用户信息的增删改查(CRUD)_第2张图片

 

数据库表的设计

MVC模式实现用户登录以及用户信息的增删改查(CRUD)_第3张图片

JavaBean

User.java

package com.wm.domain;

public class User {
    private int id;
    private String name;
    private String gender;
    private int age;
    private String address;
    private String qq;
    private String email;
    private String username;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    private String password;
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getQq() {
        return qq;
    }

    public void setQq(String qq) {
        this.qq = qq;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", gender='" + gender + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                ", qq='" + qq + '\'' +
                ", email='" + email + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}
PageBean.java
package com.wm.domain;

import java.util.List;

//分页对象
public class PageBean {
    private int totalcount;//总记录数
    private int totalpage;//总页码
    private List list;//每页的数据
    private int currentpage;//当前页码
    private int rows;//每页显示的记录数

    public int getTotalcount() {
        return totalcount;
    }

    public void setTotalcount(int totalcount) {
        this.totalcount = totalcount;
    }

    public int getTotalpage() {
        return totalpage;
    }

    public void setTotalpage(int totalpage) {
        this.totalpage = totalpage;
    }

    public List getList() {
        return list;
    }

    public void setList(List list) {
        this.list = list;
    }

    public int getCurrentpage() {
        return currentpage;
    }

    public void setCurrentpage(int currentpage) {
        this.currentpage = currentpage;
    }

    public int getRows() {
        return rows;
    }

    public void setRows(int rows) {
        this.rows = rows;
    }

    @Override
    public String toString() {
        return "PageBean{" +
                "totalcount=" + totalcount +
                ", totalpage=" + totalpage +
                ", list=" + list +
                ", currentpage=" + currentpage +
                ", rows=" + rows +
                '}';
    }
}

连接数据库工具类

JDBCUtils .java

package com.wm.util;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import javax.xml.crypto.Data;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

/**
 * JDBC工具类 使用Durid连接池
 */
public class JDBCUtils {

    private static DataSource ds ;

    static {

        try {
            //1.加载配置文件
            Properties pro = new Properties();
            //使用ClassLoader加载配置文件,获取字节输入流
            InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            pro.load(is);

            //2.初始化连接池对象
            ds = DruidDataSourceFactory.createDataSource(pro);

        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取连接池对象
     */
    public static DataSource getDataSource(){
        return ds;
    }


    /**
     * 获取连接Connection对象
     */
    public static Connection getConnection() throws SQLException {
        return  ds.getConnection();
    }
}

Dao层

package com.wm.dao;

import com.wm.domain.User;

import java.util.List;
import java.util.Map;

public interface UserDao {
    public List findAll();

    void add(User user);

    void delete(int parseInt);

    User findById(int parseInt);

    void updateUser(User user);
    //查询总记录数
    int findTotalCount(Map condition);
    //分页查询每页记录
    List findByPage(int start, int rows, Map condition);
}

UserDaoImpl.java

package com.wm.dao.impl;

import com.wm.dao.UserDao;
import com.wm.domain.User;
import com.wm.util.JDBCUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class UserDaoImpl implements UserDao {

private JdbcTemplate template=new JdbcTemplate(JDBCUtils.getDataSource());
    @Override
    public List findAll() {
        //使用jdbc操作数据库
        //定义sql
        String sql="select * from user";
        List users = template.query(sql, new BeanPropertyRowMapper(User.class));
        return users;
    }

    @Override
    public void add(User user) {
        String sql="insert into user values(null,?,?,?,?,?,?,null,null)";
        template.update(sql,user.getName(),user.getGender(),user.getAge(),user.getAddress(),user.getQq(),user.getEmail());
    }

    @Override
    public void delete(int id) {
        //定义sql
        String sql="delete from user where id=?";
        template.update(sql,id);
    }

    @Override
    public User findById(int id) {
        String sql="select * from user where id =?";
        User user = template.queryForObject(sql, new BeanPropertyRowMapper<>(User.class),id);
        return user;
    }

    @Override
    public void updateUser(User user) {
        String sql="update user set name=?,gender=?,age=?,address=?,qq=?,email=? where id =?";
        template.update(sql,user.getName(),user.getGender(),user.getAge(),user.getAddress(),user.getQq(),user.getEmail(),user.getId());
    }

    @Override
    public int findTotalCount(Map condition) {
        //定义模板初始化sql
        String sql="select count(*) from user where 1=1";
        StringBuilder sb = new StringBuilder(sql);
        //遍历map集合
        Set keySet = condition.keySet();
        //定义参数的集合
        List params = new ArrayList();
        for (String key : keySet) {
            //排除分页条件参数
            if ("currentpage".equals(key)||"rows".equals(key))
            {
                continue;
            }
            //获取value
            String value = condition.get(key)[0];
            //判断value是否有值
            if (!"".equals(value)&&value!=null)
            {
            //有值
                sb.append("  and "+key+" like ?");
                params.add("%"+value+"%");//加条件的参数
            }

        }
        System.out.println(sb.toString());
        System.out.println(params);
        return template.queryForObject(sb.toString(),Integer.class,params.toArray());
    }

    @Override
    public List findByPage(int start, int rows, Map condition) {
        String sql="select * from user where 1=1";
        StringBuilder sb = new StringBuilder(sql);
        //遍历map集合
        Set keySet = condition.keySet();
        //定义参数的集合
        List params = new ArrayList();
        for (String key : keySet) {
            //排除分页条件参数
            if ("currentpage".equals(key)||"rows".equals(key))
            {
                continue;
            }
            //获取value
            String value = condition.get(key)[0];
            //判断value是否有值
            if (!"".equals(value)&&value!=null)
            {
                //有值
                sb.append("  and "+key+" like ?");
                params.add("%"+value+"%");//加条件的参数
            }

        }
        //添加分页查询
        sb.append(" limit ?,?");
        //添加分页查询参数值
        params.add(start);
        params.add(rows);
        System.out.println(params);
        sql=sb.toString();
        System.out.println(sql);
        List list = template.query(sql, new BeanPropertyRowMapper<>(User.class), params.toArray());
        return list;
    }

    public User findUserByUsernameAndPassword(String username,String password){
        String sql="select * from user where username=? and password=?";
        User user = template.queryForObject(sql, new BeanPropertyRowMapper<>(User.class),username,password);
        return user;


    }
}

Service层

package com.wm.service;

import com.wm.domain.PageBean;
import com.wm.domain.User;

import java.util.List;
import java.util.Map;

public interface UserService {
    public List findAll();

    User login(User user);

    void addUser(User user);
    //根据id删除
    void deleteUser(String id);
    //根据id查询
    User finUserById(String id);
    //修改用户信息
    void updateUser(User user);
    //删除选中用户
    void deleteSelectedUser(String[] uids);
    //分页条件查询
    PageBean findUserByPage(String currentpage1, String rows1, Map condition);
}

UserServiceImpl .java

package com.wm.service.impl;

import com.wm.dao.impl.UserDaoImpl;
import com.wm.domain.PageBean;
import com.wm.domain.User;
import com.wm.service.UserService;

import java.util.List;
import java.util.Map;

public class UserServiceImpl implements UserService {
    private UserDaoImpl dao=new UserDaoImpl();
    @Override
    public List findAll() {
        //调用dao
        return dao.findAll();
    }

    @Override
    public void addUser(User user) {
        dao.add(user);
    }

    @Override
    public void deleteUser(String id) {
        dao.delete(Integer.parseInt(id));
    }

    @Override
    public User finUserById(String id) {
        return dao.findById(Integer.parseInt(id));
    }

    @Override
    public void updateUser(User user) {
        dao.updateUser(user);
    }

    @Override
    public void deleteSelectedUser(String[] uids) {
        //遍历数组
        for (String uid : uids) {
            //调用dao删除
            dao.delete(Integer.parseInt(uid));


        }
    }

    @Override
    public PageBean findUserByPage(String currentpage1, String rows1, Map condition) {
        int currentpage = Integer.parseInt(currentpage1);
        int rows = Integer.parseInt(rows1);

        if (currentpage<=0){
            currentpage=1;
        }

        //创建空的PageBean对象
        PageBean pb = new PageBean<>();
        //设置参数

        pb.setRows(rows);
        //调用dao查询总记录数
        int totalcount=dao.findTotalCount(condition);
        pb.setTotalcount(totalcount);


        //计算总页码数
        int totalpage=totalcount%rows==0 ? totalcount/rows:((totalcount/rows)+1);
        System.out.println(totalpage);
        pb.setTotalpage(totalpage);
        if (currentpage>=totalpage){
            currentpage=totalpage;
        }
        System.out.println(currentpage);
        pb.setCurrentpage(currentpage);

        //调用dao查询list集合
        //计算开始的索引
        int start=(currentpage-1)*rows;
        List list=dao.findByPage(start,rows,condition);
        pb.setList(list);

        return pb;
    }

    public User login(User user){

        return dao.findUserByUsernameAndPassword(user.getUsername(),user.getPassword()) ;
    }
}

用户登录验证数据库

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>



    
    
    
    管理员登录

    
    
    
    
    
    
    


管理员登录


LoginServlet .java

package com.wm.web.servlet;

import com.wm.domain.User;
import com.wm.service.impl.UserServiceImpl;
import org.apache.commons.beanutils.BeanUtils;

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 java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;

@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("utf-8");
        //获取数据
        String verifycode = request.getParameter("verifycode");
        //校验验证码
        HttpSession session = request.getSession();
        String checkcode = (String) session.getAttribute("CHECKCODE_SERVER");
        session.removeAttribute("CHECKCODE_SERVER");//确保验证码一次性
        //忽略大小写
        if(!checkcode.equalsIgnoreCase(verifycode)){
            //验证码不正确
            //提示信息
            request.setAttribute("login_msg","验证码错误");
            //跳转登录界面
            request.getRequestDispatcher("/login.jsp").forward(request,response);
            return;
        }
        Map map = request.getParameterMap();
        //封装user对象
        User user = new User();
        try {
            BeanUtils.populate(user,map);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        //调用service查询
        UserServiceImpl service = new UserServiceImpl();
        User loginuser=service.login(user);
        if(loginuser!=null)
        {
            //成功
            session.setAttribute("user",loginuser);
            response.sendRedirect(request.getContextPath()+"/index.jsp");
        }else{
            //失败
            request.setAttribute("login_msg","用户名或者密码错误");
            //跳转登录界面
            request.getRequestDispatcher("/login.jsp").forward(request,response);
        }

    }

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

MVC模式实现用户登录以及用户信息的增删改查(CRUD)_第4张图片

 

 添加功能

add.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>





    
    
    
    
    
    
    
    添加用户

    
    
    
    
    
    


添加联系人页面

<%--@declare id="address"--%>
<%--@declare id="qq"--%>
<%--@declare id="email"--%>

 AddUserServlet .java

package com.wm.web.servlet;

import com.wm.domain.User;
import com.wm.service.impl.UserServiceImpl;
import org.apache.commons.beanutils.BeanUtils;

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.lang.reflect.InvocationTargetException;
import java.util.Map;

@WebServlet("/addUserServlet")
public class AddUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置编码
        request.setCharacterEncoding("utf-8");
        //获取参数
        Map map = request.getParameterMap();
        //封装对象
        User user = new User();
        try {
            BeanUtils.populate(user,map);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        //调用Service保存
        UserServiceImpl service = new UserServiceImpl();
        service.addUser(user);
        //跳转到userListServlet
        response.sendRedirect(request.getContextPath()+"/userListServlet");

    }

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

 MVC模式实现用户登录以及用户信息的增删改查(CRUD)_第5张图片

删除功能

DelUserServlet .java

package com.wm.web.servlet;
import com.wm.service.impl.UserServiceImpl;
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("/delUserServlet")
public class DelUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取id
        String id = request.getParameter("id");
        //调用service删除
        UserServiceImpl service = new UserServiceImpl();
        service.deleteUser(id);
        //跳转到查询所有的servlet
        response.sendRedirect(request.getContextPath()+"/userListServlet");

    }

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

 修改功能(数据回显)

 FindUserServlet.java

package com.wm.web.servlet;
import com.wm.domain.User;
import com.wm.service.impl.UserServiceImpl;
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("/findUserServlet")
public class FindUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取id
        String id = request.getParameter("id");
        //调用service查询
        UserServiceImpl service = new UserServiceImpl();
        User user=service.finUserById(id);
        //将user对象存入request
        request.setAttribute("user",user);
        //转发update.jsp
        request.getRequestDispatcher("/update.jsp").forward(request,response);

    }

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

update.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>




    
    
    
    
    修改用户

    
    
    



修改联系人

<%--@declare id="address"--%>
<%--@declare id="qq"--%>
<%--@declare id="email"--%>
UpdateUserServlet.java
package com.wm.web.servlet;
import com.wm.domain.User;
import com.wm.service.impl.UserServiceImpl;
import org.apache.commons.beanutils.BeanUtils;
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.lang.reflect.InvocationTargetException;
import java.util.Map;

@WebServlet("/updateUserServlet")
public class UpdateUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         //设置编码
        request.setCharacterEncoding("utf-8");
        //获取map
        Map map = request.getParameterMap();
        //封装对象
        User user = new User();
        try {
            BeanUtils.populate(user,map);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        //调用service方法
        UserServiceImpl service = new UserServiceImpl();
        service.updateUser(user);
        //跳转到查询所有的servlet
        response.sendRedirect(request.getContextPath()+"/userListServlet");

    }

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

MVC模式实现用户登录以及用户信息的增删改查(CRUD)_第6张图片

删除选中

 DelSelectedServlet.java

package com.wm.web.servlet;
import com.wm.service.impl.UserServiceImpl;
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("/delSelectedServlet")
public class DelSelectedServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //获取所有id
        String[] uids = request.getParameterValues("uid");
        //调用service
        UserServiceImpl service = new UserServiceImpl();
        service.deleteSelectedUser(uids);
        //跳转查询所有的Servlet
        response.sendRedirect(request.getContextPath()+"/userListServlet");
    }

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

MVC模式实现用户登录以及用户信息的增删改查(CRUD)_第7张图片

 分页查询

FindUserByPageServlet .java

package com.wm.web.servlet;
import com.wm.domain.PageBean;
import com.wm.domain.User;
import com.wm.service.impl.UserServiceImpl;
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.Map;

@WebServlet("/findUserByPageServlet")
public class FindUserByPageServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        //获取参数
        String currentpage = request.getParameter("currentpage");//当前页码
        String rows = request.getParameter("rows");//每页显示条数
        if (currentpage==null||"".equals(currentpage)){
            currentpage="1";
        }
        if (rows==null||"".equals(rows)){
            rows="5";
        }
        //获取条件查询的参数
        Map condition = request.getParameterMap();

        //调用service
        UserServiceImpl service = new UserServiceImpl();
        PageBean  pb=service.findUserByPage(currentpage,rows,condition);
        System.out.println(pb);
        //将PageBean存入request
        request.setAttribute("pb",pb);
        request.setAttribute("condition",condition);//将查询条件存入request
        //转发list.jsp
        request.getRequestDispatcher("/list.jsp").forward(request,response);
    }

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

复杂条件查询

 MVC模式实现用户登录以及用户信息的增删改查(CRUD)_第8张图片

 

你可能感兴趣的:(笔记,mvc)