zoukankan      html  css  js  c++  java
  • 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/
    本文版权归作者和博客园共有,欢迎转载、点赞,但未经作者同意必须保留此段申明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

  • 相关阅读:
    tips for Flask
    REST
    数据结构与算法分析 in C语言
    大学环境对大学生学习心态的影响
    Qpython_文本读写_工作目录
    The Zen of Python
    SQL SERVER数据库中DDL语句
    sql server创建序列sequence
    macbook 安装redis流程及问题总结
    mac系统chrome浏览器快捷键
  • 原文地址:https://www.cnblogs.com/rekent/p/7066086.html
Copyright © 2011-2022 走看看