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项目源代码,持续更新

转载于:https://www.cnblogs.com/rekent/p/7066086.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值