• Struts2+DAO层实现实例02——搭建DAO基本框架并与Struts2组合


    实例内容

    •   创建DAO(Data Access Oject)接口:BaseDAO
    •   创建其实例化类:UserDAO  用于获取数据库struts中的userinfo表中的内容
    •   创建User的Java Bean类,含有username和password,以及其get和set方法
    •   修改Action中的验证用户名机制,将验证通过DAO层与数据库进行通信判别。

    实例代码

      BaseDAO:

    package UserBlock;
    
    import java.util.ArrayList;
    import java.util.Collection;
    
    /**
     * DAO(Data Access Oject)接口
     * Created by Richard on 2017/6/16.
     */
    public interface BaseDAO {
    
        public boolean insert(String username,String password) throws  Exception;
    
        public Collection select() throws  Exception;
    
        public boolean delete(String username) throws  Exception;
    
        public ArrayList up_select(String username) throws  Exception;
    
        public boolean update(String username,String password) throws  Exception;
    }

      UserDAO:

    package UserBlock;
    
    import javax.xml.transform.Result;
    import java.sql.*;
    import java.util.ArrayList;
    import java.util.Collection;
    
    /**
     * Created by Richard on 2017/6/16.
     */
    public class UserDao implements BaseDAO {
        private String url = "jdbc:mysql://localhost:3306/struts";
        private String user = "root";
        private String password = "root";
    
    
        @Override
        public boolean insert(String username,String upassword) throws Exception {
            Class.forName("com.mysql.jdbc.Driver");
            String sql = "insert into userinfo(username,password)Values(?,?)";
            Connection conn = DriverManager.getConnection(url, user, password);
            PreparedStatement pst = conn.prepareStatement(sql);
            pst.setString(1, username);
            pst.setString(2, upassword);
            int i = pst.executeUpdate();
            if (i >= 1) {
                return true;
            } else {
                return false;
            }
        }
    
        @Override
        public Collection select() throws Exception {
            ArrayList al = new ArrayList();
            Class.forName("com.mysql.jdbc.Driver");
            String sql = "select * from userinfo";
            Connection conn = DriverManager.getConnection(url, user, password);
            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery(sql);
            if (rs.next()) {
                User Get = new User();
                Get.setUsername(rs.getString("username"));
                Get.setPassword(rs.getString("password"));
                al.add(Get);
            }
            return al;
        }
    
        @Override
        public boolean delete(String username) throws Exception {
            Class.forName("com.mysql.jdbc.Driver");
            String sql = "delete from userinfo where username=?";
            Connection conn = DriverManager.getConnection(url, user, password);
            PreparedStatement pst = conn.prepareStatement(sql);
            pst.setString(1, username);
            int i = pst.executeUpdate();
            if (i >= 1) {
                return true;
            } else {
                return false;
            }
    
        }
    
        @Override
        public ArrayList up_select(String username) throws Exception {
            ArrayList al = new ArrayList();
            Class.forName("com.mysql.jdbc.Driver");
            String sql = "select * from userinfo where username=?";
            Connection conn = DriverManager.getConnection(url, user, password);
            PreparedStatement pst = conn.prepareStatement(sql);
            pst.setString(1,username);
            ResultSet rs = pst.executeQuery();
            if (rs.next()) {
                User Get = new User();
                Get.setUsername(rs.getString("username"));
                Get.setPassword(rs.getString("password"));
                al.add(Get);
            }
            return al;
        }
    
        @Override
        public boolean update(String username,String upassword) throws Exception {
            Class.forName("com.mysql.jdbc.Driver");
            String sql = "update userinfo set password=? where username=?";
            Connection conn = DriverManager.getConnection(url, user, password);
            PreparedStatement pst = conn.prepareStatement(sql);
            pst.setString(1,upassword);
            pst.setString(2,username);
            int i = pst.executeUpdate();
            if (i >= 1) {
                return true;
            } else {
                return false;
    
            }
        }
    }

      新修改的Action:

    package UserBlock;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    
    import java.util.ArrayList;
    import java.util.Map;
    import java.util.logging.LogManager;
    
    /**
     * Created by Richard on 2017/6/16.
     * 继承ActionSupport实现一个Action
     * 登陆界面通过loginuser.action调用login()方法来处理数据
     *          login()方法中通过ActionContext调用Session对象,存入输入错误的数据
     *          通过addActionMessage()方法向页面输出相关信息
     * 注册页面通过reguser.action调用reg()方法来处理数据
     */
    public class UserAction extends ActionSupport {
        private String INDEX="index";
        private String LOGIN="login";
        private  String REG="register";
        private String username;
        private String password;
    
        public String getCompassword() {
            return compassword;
        }
    
        public void setCompassword(String compassword) {
            this.compassword = compassword;
        }
    
        private String compassword;
        private UserDao user;
    
        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;
        }
    
    
        public String login(){
            try{
                user=new UserDao();
                ArrayList result=user.up_select(username);
                if(result.size()>0){
                    User aim= (User) result.get(0);
                    if(aim.getPassword().equals(password)){
                        /*登陆成功*/
                        return INDEX;
                    }else{
                        ActionContext applicton=ActionContext.getContext();
                        Map session=applicton.getSession();
                        int count;
                        if(session.get("count")==null){
                            count=0;
                        }else{
                            count= (int) session.get("count");
                        }
                        if(count>=3){
                            addActionMessage("错误次数过多");
                            count=0;
                            session.put("count",count);
                            return LOGIN;
                        }else{
                            count++;
                            addActionMessage("您输入的用户名或密码错误"+count);
                            session.put("count",count);
                            return LOGIN;
                        }
    
                    }
                }else{
                    addActionMessage("该用户不存在,已经跳转到注册页面");
                    return REG;
                }
            }catch (Exception e){
                addActionError(e.getMessage());
                System.out.println(e.getMessage());
                e.printStackTrace();
                return LOGIN;
            }
        }
    
    
        public String reg(){
            try{
                user=new UserDao();
                ArrayList result=user.up_select(username);
                if(result.size()>0)
                {
                    addActionMessage("该用户已经存在");
                    return REG;
                }
                else{
                    if(user.insert(username,password)){
                        return INDEX;
                    }else{
                        addActionMessage("发生未知错误,请重试!");
                        return REG;
                    }
    
                }
            }catch (Exception e){
                    addActionError(e.getMessage());
                    return REG;
            }
        }
    }

    项目代码

    Git项目源代码,持续更新

    作者:Rekent
    出处:http://www.cnblogs.com/rekent/
    本文版权归作者和博客园共有,欢迎转载、点赞,但未经作者同意必须保留此段申明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

  • 相关阅读:
    Android开发总结
    LeakCanary原理分析
    机器学习
    Kivy 中文教程 实例入门 简易画板 (Simple Paint App):2. 实现绘图功能
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 3. 循环
    Kivy 中文教程 实例入门 简易画板 (Simple Paint App):1. 自定义窗口部件 (widget)
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 2. 变量
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 1. 神秘朋友
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 0. 准备工作
    远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm)
  • 原文地址:https://www.cnblogs.com/rekent/p/7066086.html
Copyright © 2020-2023  润新知