Servlet实例项目,完成登录注册展示所有批量删除

Servlet 开发一个项目 实例 (概述)

利用 jdbc 与 servlet 技术 开发 一个 项目 实现 登录、注册、修改、删除单个、批量删除
所用软件为 idea,oracle数据库

1.搭建环境 导入以下jar包

1

2.创建项目结构

导入配置文件 

标题2

3. 创建表

将创建好的表格 sql 语句 放到 sql包下

--创建表
create table t_Account(
   id number(10) primary key,
   cardNum varchar2(19) unique not null check(length(cardNum)=19) ,--卡号
   username varchar2(20) not null,--用户名
   password varchar2(6) check(length(password)=6) not null,--密码
   balance number(8,3),--账户余额
   crTime date,--开户日期
   mobile varchar2(11)check(length(mobile)=11),--电话号码
   ldentifyNumber varchar2(18)unique not null check(length(ldentifyNumber)=18) --身份证号
   );  
   --删除表格
  drop table t_Account 
  --删除序列
  drop sequence account_seq  
 --生成序列
 create sequence account_seq start with 1 increment by 1  
--添加一条数据  加入指定时间
insert into t_Account values
(account_seq.nextval,'7411477411477411411','甄嬛','123456',600.221,to_date('2018-12-12','yyyy-mm-dd'),'12332112333','610427199925205454');   
-- 添加一条数据  加入系统时间
insert into t_Account values
(account_seq.nextval,'7411477411477411005','小红','123456',600.221,sysdate,'11232112305','610427199925205005');   
--根据卡号修改余额
update t_account set balance = 800.888 where cardNum = '7411477411477411474';
--根据卡号查询
select * from t_account where cardNum='7411477411477411474';
--根据卡号和密码查询
select * from t_account where cardNum = '7411477411477411474'and password = '123456';
--根据卡号删除
delete t_account where cardNum = '7411477411477411474';
--根据手机号前 三 四 位 查询
select * from t_account where mobile like '___%' or mobile like '____%'
select * from t_account where mobile like '123%' or mobile like '1233%'
--根据卡号修改个人信息
update t_account set username = 'gggggss',password='999999',balance = 55.2,mobile ='13609294775' where cardNum = '7411477411477411000';

4.创建实体类

创建 对应 数据库表格 的实体类 并实现 序列化接口,放到 entity包下

package com.entity;
import java.io.Serializable;
import java.util.Date;
// 创建 表 t_account 实体类
public class T_Account implements Serializable {
    private Integer id;
    //卡号
    private String cardNum;
    private String username;
    private String password;
    //账户余额
    private double balabce;
    //开户日期
    private Date ctTime;
    //电话号码
    private String mobile;
    //身份证号
    private String ldentifyNumber;
    public T_Account() {
    }
    public T_Account(Integer id, String cardNum, String username, String password, double balabce, Date ctTime, String mobile, String ldentifyNumber) {
        this.id = id;
        this.cardNum = cardNum;
        this.username = username;
        this.password = password;
        this.balabce = balabce;
        this.ctTime = ctTime;
        this.mobile = mobile;
        this.ldentifyNumber = ldentifyNumber;
    }

    public Integer getId() {
        return id;
    }

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

    public String getCardNum() {
        return cardNum;
    }

    public void setCardNum(String cardNum) {
        this.cardNum = cardNum;
    }

    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 double getBalabce() {
        return balabce;
    }

    public void setBalabce(double balabce) {
        this.balabce = balabce;
    }

    public Date getCtTime() {
        return ctTime;
    }

    public void setCtTime(Date ctTime) {
        this.ctTime = ctTime;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getLdentifyNumber() {
        return ldentifyNumber;
    }

    public void setLdentifyNumber(String ldentifyNumber) {
        this.ldentifyNumber = ldentifyNumber;
    }

    @Override
    public String toString() {
        return "T_Account{" +
                "id=" + id +
                ", cardNum='" + cardNum + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", balabce=" + balabce +
                ", ctTime=" + ctTime +
                ", mobile='" + mobile + '\'' +
                ", ldentifyNumber='" + ldentifyNumber + '\'' +
                '}';
    }
}

5 创建 Dao层

将对应的 Dao 接口 与 其对应 的实现类 DaoImpl 放到 dao 包下
1.创建 dao 对应 的接口
package com.dao;
import com.entity.T_Account;
import java.util.List;
public interface T_AccountDao {
    //添加一条数据
    public void insert(T_Account account);
    //根据卡号修改余额
    public void updateBalance(String cardNum,double balance);
    //根据卡号查询
    public T_Account findByCardNum(String cardNum);
    //根据卡号和密码查询
    public T_Account findByCardNumAndPass(T_Account account);
    //根据卡号删除
    public void deleteByCardNum(String cardNum);
    //根据手机号前 三 四 位 查询
    public List<T_Account> findByLikeCardNum(String mobile);
    //展示所有
    public List<T_Account> FinadAllDao();
    //根据卡号修改个人信息
    public void updateAll(T_Account account);
}

2.实现 dao 接口 中 的方法
package com.dao;
import com.entity.T_Account;
import com.util.JDBCUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class T_AccoutDaoImpl implements T_AccountDao {
    @Override
    public void insert(T_Account account) {
        Connection conn = null;
        PreparedStatement patmt = null;
        try {
            conn = JDBCUtil.getConnection ();
            String sql = "insert into t_Account values(account_seq.nextval,?,?,?,?,?,?,?)";
            patmt = conn.prepareStatement (sql);
            //动态 绑定参数
            patmt.setString (1,account.getCardNum ());
            patmt.setString (2,account.getUsername ());
            patmt.setString (3,account.getPassword ());
            patmt.setDouble (4,account.getBalabce ());
            //获得系统时间
            Date date1 = new Date ();
            //Date ctTime = account.getCtTime ();
            java.sql.Date date = JDBCUtil.toSqlDate (date1)                                                                                                                                                                                   ;
            patmt.setDate (5,date);
            patmt.setString (6,account.getMobile ());
            patmt.setString (7,account.getLdentifyNumber ());
            //发送 sql 语句 返回受影响的行数
            long l = patmt.executeUpdate ();
            System.out.println ("受影响的行数="+l);

        } catch (SQLException e) {
            e.printStackTrace ();
        }finally {
            JDBCUtil.close (null,patmt);
        }
    }
    //根据卡号修改余额
    @Override
    public void updateBalance(String cardNum,double balance) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
           conn = JDBCUtil.getConnection ();
           String sql = "update t_account set balance = ? where cardNum = ?";
           pstmt = conn.prepareStatement (sql);
           //动态绑定参数
            pstmt.setDouble(1,balance);
            pstmt.setString (2,cardNum);
            //发送sql 语句 返回受影响的行数
            int i = pstmt.executeUpdate ();
            System.out.println ("受影响的行数="+i);
        } catch (SQLException e) {
            e.printStackTrace ();
        }finally {
            JDBCUtil.close (null,pstmt);
        }
    }
  //根据卡号查询
    @Override
    public T_Account findByCardNum(String cardNum) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet resultSet = null;
        try {
            conn = JDBCUtil.getConnection ();
            String sql = "select * from t_account where cardNum = ?";
             pstmt = conn.prepareStatement (sql);
             pstmt.setString (1,cardNum);
             resultSet = pstmt.executeQuery ();
             //处理结果集
            if (resultSet.next ()){
                T_Account account = new T_Account ();
                account.setId (resultSet.getInt (1));
                account.setCardNum (resultSet.getString (2));
                account.setUsername (resultSet.getString (3));
                account.setPassword (resultSet.getString (4));
                account.setBalabce (resultSet.getDouble (5));
                account.setCtTime(resultSet.getDate (6));
                account.setMobile (resultSet.getString (7));
                account.setLdentifyNumber (resultSet.getString (8));
                return account;
            }
        } catch (SQLException e) {
            e.printStackTrace ();
        }finally {
            JDBCUtil.close (null,pstmt,resultSet);
        }
        return null;
    }
    //根据卡号和密码查询   登录
    @Override
    public T_Account findByCardNumAndPass(T_Account acc) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet resultSet = null;
        try {
            conn = JDBCUtil.getConnection ();
            String sql = "select * from t_account where cardNum =? and password = ?";
            pstmt = conn.prepareStatement (sql);
            //动态绑定参数
            String cardNum = acc.getCardNum ();
           // System.out.println ("卡号"+cardNum);
            pstmt.setString (1,cardNum);
            String password = acc.getPassword ();
           // System.out.println ("密码"+password);
            pstmt.setString (2,password);
            resultSet = pstmt.executeQuery ();
            //处理结果集
            if (resultSet.next ()){
                T_Account account = new T_Account ();
                account.setId (resultSet.getInt (1));
                account.setCardNum (resultSet.getString (2));
                account.setUsername (resultSet.getString (3));
                account.setPassword (resultSet.getString (4));
                account.setBalabce (resultSet.getDouble (5));
                account.setCtTime(resultSet.getDate (6));
                account.setMobile (resultSet.getString (7));
                account.setLdentifyNumber (resultSet.getString (8));
                return account;
            }
        } catch (SQLException e) {
            e.printStackTrace ();
        }finally {
            JDBCUtil.close (null,pstmt,resultSet);
        }
        return null;
    }

    @Override
    public void deleteByCardNum(String cardNum) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
            conn = JDBCUtil.getConnection ();
            String sql = "delete t_account where cardNum =?";
            pstmt = conn.prepareStatement (sql);
            //动态绑定参数
            pstmt.setString (1,cardNum);
            //发送sql 语句 返回受影响的行数
            int i = pstmt.executeUpdate ();
            System.out.println ("受影响的行数="+i);
        } catch (SQLException e) {
            e.printStackTrace ();
        }finally {
            JDBCUtil.close (null,pstmt);
        }
    }
    //模糊查询
    @Override
    public List<T_Account> findByLikeCardNum(String mobile) {

        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet resultSet = null;
        List<T_Account> t_accountArrayList = null;
        T_Account account = null;
        try {
            conn = JDBCUtil.getConnection ();
            String sql = "select * from t_account where mobile like ? or mobile like ?";
            pstmt = conn.prepareStatement (sql);
            System.out.println ("接收的参数="+mobile);
            pstmt.setString (1,mobile+"%");
            pstmt.setString (2,mobile+"%");
            resultSet = pstmt.executeQuery ();
            System.out.println (resultSet);
            t_accountArrayList = new ArrayList<T_Account> ();

            //处理结果集
            while (resultSet.next()){
                account = new T_Account ();
                account.setId (resultSet.getInt (1));
                account.setCardNum (resultSet.getString (2));
                account.setUsername (resultSet.getString (3));
                account.setPassword (resultSet.getString (4));
                account.setBalabce (resultSet.getDouble (5));
                account.setCtTime(resultSet.getDate (6));
                account.setMobile (resultSet.getString (7));
                account.setLdentifyNumber (resultSet.getString (8));
                t_accountArrayList.add (account);
            }
            return t_accountArrayList;

        } catch (SQLException e) {
            e.printStackTrace ();
        }finally {
            JDBCUtil.close (null,pstmt,resultSet);
        }
        return null;
    }
    //展示所有
    @Override
    public List<T_Account> FinadAllDao() {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet resultSet = null;
        List<T_Account> t_accountArrayList = null;
        T_Account account = null;
        try {
            conn = JDBCUtil.getConnection ();
            String sql = "select * from t_account";
            pstmt = conn.prepareStatement (sql);

            resultSet = pstmt.executeQuery ();
            System.out.println (resultSet);
            t_accountArrayList = new ArrayList<T_Account> ();

            //处理结果集
            while (resultSet.next()){
                account = new T_Account ();
                account.setId (resultSet.getInt (1));
                account.setCardNum (resultSet.getString (2));
                account.setUsername (resultSet.getString (3));
                account.setPassword (resultSet.getString (4));
                account.setBalabce (resultSet.getDouble (5));
                account.setCtTime(resultSet.getDate (6));
                account.setMobile (resultSet.getString (7));
                account.setLdentifyNumber (resultSet.getString (8));
                t_accountArrayList.add (account);
            }
            return t_accountArrayList;

        } catch (SQLException e) {
            e.printStackTrace ();
        }finally {
            JDBCUtil.close (null,pstmt,resultSet);
        }

        return null;
    }
    //根据卡号修改个人信息
    @Override
    public void updateAll(T_Account account) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
            conn = JDBCUtil.getConnection ();
            String sql = "update t_account set username = ?,password=?,balance = ?,mobile = ? where cardNum = ?";
            pstmt = conn.prepareStatement (sql);
            //动态绑定参数

            pstmt.setString (1,account.getUsername ());
            pstmt.setString (2,account.getPassword ());
            pstmt.setDouble (3,account.getBalabce ());
            pstmt.setString (4,account.getMobile ());
            pstmt.setString (5,account.getCardNum ());

            //发送sql 语句 返回受影响的行数
            int i = pstmt.executeUpdate ();
            System.out.println ("受影响的行数="+i);
        } catch (SQLException e) {
            e.printStackTrace ();
        }finally {
            JDBCUtil.close (null,pstmt);
        }
    }

}

6 创建 Service 层

将对应的 Service 接口 与 其对应 的实现类 ServiceImpl 放到 service 包下

1.创建 Service 对应 的接口
package com.service;
import com.entity.T_Account;
import java.util.List;
public interface T_AccountService {
    //注册
    public void registerService(T_Account t_account);
    //登录
    public T_Account loginService(T_Account t_account);
    //转账  传入参数为?:本人卡号,本人密码,(其中本人卡号和密码 封装为对象);对方卡号,转账金额
    public void transfer_accounts(T_Account t_account,String toCardNum,double money );
    //展示所有
    public List<T_Account> FindAllService();
    //根据 卡号 删除 一条数据
    public void deleteByIdService(String cardNum);

    //根据卡号查询 返回一个对象  用于回显
    public T_Account findByIdService(String cardNum);
    //根据卡号修改个人信息
    public void UpdateAllService(T_Account t_account);
}

2.实现 service 接口 中 的方法

package com.service;
import com.dao.T_AccountDao;
import com.dao.T_AccoutDaoImpl;
import com.entity.T_Account;
import com.util.JDBCUtil;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Scanner;

public class T_AccountServiceImpl implements T_AccountService {
    T_AccountDao t_accountDao = new T_AccoutDaoImpl ();

    //注册
    @Override
    public void registerService(T_Account t_account) {
        //注册之前查询数据库中是否有该用户
        T_Account byCardNum = t_accountDao.findByCardNum (t_account.getCardNum ());
        if (byCardNum == null) {
            //添加一条数据
            t_accountDao.insert (t_account);
        } else {
            System.out.println ("该用户已经注册,请直接登录!!!!");
        }
    }

    //登录
    @Override
    public T_Account loginService(T_Account t_account) {
        T_Account byCardNumAndPass = t_accountDao.findByCardNumAndPass (t_account);
        if (byCardNumAndPass != null) {
            System.out.println ("欢迎使用本银行操作系统!!!");
            return byCardNumAndPass;
        } else {
            System.out.println ("用户名和密码不正确,请核实后重新登录!!!");
            return null;
        }
    }

    //转账
    @Override
    public void transfer_accounts(T_Account t_account, String toCardNum, double money) {
        //连接数据库
        Connection conn = JDBCUtil.getConnection ();
        try {
            //设置手动提交事务
            conn.setAutoCommit (false);
            //获得转账方对象
            T_Account user = t_accountDao.findByCardNumAndPass (t_account);
            //判断登录是否成功
            if (user != null) {
                //查询对方用户是否存在
                T_Account touser = t_accountDao.findByCardNum (toCardNum);
                if (touser != null) {
                    //检验转账方的余额是否充足
                    double balabce1 = user.getBalabce ();
                    System.out.println ("账户余额=" + balabce1);
                    //z转账方账户余额与转账的金额比较
                    if (balabce1 > money) {
                        //计算转账金额的手续费
                        double poundageMoney = money * 0.05;
                        //修改本人转账后账户余额
                        double changeBalabcel = balabce1 - money - poundageMoney;
                        //将本人的新的账户余额存入到对象中
                        user.setBalabce (changeBalabcel);
                        //调用修改余额的方法
                        t_accountDao.updateBalance (user.getCardNum (), user.getBalabce ());
                        //获取对方账户余额
                        double tobalabce = touser.getBalabce ();
                        //修改收款方账户余额
                        double changeToBalabce = tobalabce + money;
                        touser.setBalabce (changeToBalabce);
                        //调用修改余额方法
                        t_accountDao.updateBalance (touser.getCardNum (), touser.getBalabce ());
                    } else if (balabce1 == money) {
                    /* 包装类不能用双等于进行比较  因此 账户余额 的数据类型 应设置为 基本数据类型 double.
                      如果数据类型是包装类,需要比较时 则应该用 eques 方法 进行比较
                      */
                        Scanner scanner = new Scanner (System.in);
                        System.out.println ("您的转账金额等于您的账户余额,手续费将在转账金额中扣除,是否同意转账?");
                        System.out.println ("同意选1,不同意选2");
                        int i = scanner.nextInt ();
                        System.out.println ("接收到的参数i=" + i);
                        //同意
                        if (i == 1) {
                            //计算转账金额的手续费
                            double poundageMoney = money * 0.05;
                            double changeBalabcel = balabce1 - money;
                            //将本人的新的账户余额存入到对象中
                            user.setBalabce (changeBalabcel);
                            //调用修改余额的方法
                            t_accountDao.updateBalance (user.getCardNum (), user.getBalabce ());
                            //获取对方账户余额
                            double tobalabce = touser.getBalabce ();
                            //修改收款方账户余额
                            double changeToBalabce = tobalabce + money - poundageMoney;
                            touser.setBalabce (changeToBalabce);
                            //调用修改余额方法
                            t_accountDao.updateBalance (touser.getCardNum (), touser.getBalabce ());
                        } else {
                            System.out.println ("请更改转账金额之后,在操作!!!");
                        }
                    } else {
                        //手动抛出异常
                        throw new RuntimeException ("您的余额不足,请更改转账金额");
                    }
                } else {
                    throw new RuntimeException ("收款用户不存在,请核实后在操作 ");
                }
            } else {
                throw new RuntimeException ("用户名或密码不正确");
            }
            //手动提交
            conn.commit ();
        } catch (Exception e) {
            e.printStackTrace ();
            try {
                //设置回滚
                conn.rollback ();
            } catch (SQLException e1) {
                e1.printStackTrace ();
            }
        } finally {
            System.out.println ("感谢您的使用,欢迎下次光临!!!!");
            JDBCUtil.close (conn, null);
        }
    }
    //展示所有
    @Override
    public List<T_Account> FindAllService() {
        List<T_Account> t_accountsAll = t_accountDao.FinadAllDao ();
        return t_accountsAll;
    }
   //根据卡号删除一条数据
    @Override
    public void deleteByIdService(String cardNum) {
        t_accountDao.deleteByCardNum (cardNum);
    }
    //根据卡号查询 返回一个对象
    @Override
    public T_Account findByIdService(String cardNum) {
        T_Account t_account = t_accountDao.findByCardNum (cardNum);
        return t_account;
    }
    //根据卡号修改个人信息
    @Override
    public void UpdateAllService(T_Account t_account) {
        t_accountDao.updateAll (t_account);
    }
}

7 创建 Servlet 层 (servlet 相应的功能 写在 Servlet 包下)

第一个类 登录

servlet 相应的功能 写在 Servlet 包下
1.//  第一个类   实现 登录功能
package com.servlet;
import com.entity.T_Account;
import com.service.T_AccountService;
import com.service.T_AccountServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
//登录
public class T_AccountServletLogin extends HttpServlet {
    @Override
    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  //1.设置应答类型
        response.setContentType ("text/html");
        //设置 请求 与 响应 的编码格式
        request.setCharacterEncoding ("UTF-8");
        response.setCharacterEncoding ("UTF-8");
        String name = request.getParameter ("name");
        System.out.println ("接收的参数name="+name);
        String password1 = request.getParameter ("password");
        System.out.println ("接收的参数password="+password1);
        //调用业务
        T_AccountService t_accountService = new T_AccountServiceImpl ();
        //将所接收的值存到对象中
        T_Account a = new T_Account ();
        a.setCardNum (name);
        a.setPassword (password1);
        T_Account t_account = t_accountService.loginService (a);
        System.out.println ("登录的用户是"+t_account);
        //2.获得输出流 输出数据
        PrintWriter out = response.getWriter ();
        //3.通过输出流 输出网页
        out.println ("<html>");
        out.println ("<body>");
        //登录成功之后
        if (t_account!=null){
            //创建 cookie 设置登录标记
            Cookie cookie = new Cookie ("cookieName", "123456");

            //设置cookie存活时间
            cookie.setMaxAge (24*60*60);
            //设置 cookie 到浏览器
            response.addCookie (cookie);
            // 展示所有   不带参数  用 redirect
            response.sendRedirect ("/t_Account/ServletFinaAll");
        }else {
            out.println ("<center><h1>time is"+"用户名或密码不正确"+"</h1></center>");
        }
        out.println ("</body>");
        out.println ("</html>");
        //4.清空缓冲区
        out.flush ();
    }
}

对应的登录 页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录页面</title>
</head>
<body>
<h1>欢迎访问本网站</h1>

<form action="/t_Account/h" method="post">
 <center>
        <table width="500" height="160" bgcolor="#6495ed">
            <tr>
                <td align="right" width="50">卡号</td>
                <td>
                    <input type="text" name="name"/>
                </td>
            </tr>
            <tr>
                <td align="right" width="160">密码</td>
                <td>
                    <input type="password" name="password"/>
                </td>
            </tr>
            <tr>
                <td align="right" width="160"></td>
                <td>
                    <input type="submit" value="提交"/>
                    <input type="reset" value="重置"/>
                </td>
            </tr>
        </table>
    </center>
    <center><a href="/t_Account/f">发起请求</a></center>

</form>
</body>
</html>

第二个类 注册

//第二个类   实现 注册功能

package com.servlet;
import com.entity.T_Account;
import com.service.T_AccountService;
import com.service.T_AccountServiceImpl;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
    //注册   添加
public class ServletRegister extends HttpServlet {
    @Override
    public void service(HttpServletRequest request, HttpServletResponse response)throws SecurityException, IOException {
        // 设置应答类型
        response.setContentType ("text/html");
        // 设置请求 与 响应的编码格式
        request.setCharacterEncoding ("UTF-8");
        response.setCharacterEncoding ("Utf-8");
        //接收参数
        String cardNum = request.getParameter ("cardNum");
        String username = request.getParameter ("username");
        String password = request.getParameter ("password");
        String balabce = request.getParameter ("balabce");
        System.out.println ("账户余额"+balabce);
        //将字符串 转换为 double 类型
        //将 String  类型 转换 为 double 类型
        double balabce1 = Double.parseDouble (balabce);
        String mobile = request.getParameter ("mobile");
        String ldentifyNumber = request.getParameter ("ldentifyNumber");
        // 将处理好的参数 封装到 对象 中
        T_Account t_account = new T_Account ();
        t_account.setCardNum (cardNum);
        t_account.setUsername (username);
        t_account.setPassword (password);
        t_account.setBalabce (balabce1);
        t_account.setMobile (mobile);
        t_account.setLdentifyNumber (ldentifyNumber);
        //调用service 层 的方法
        T_AccountService t_accountService = new T_AccountServiceImpl ();
        t_accountService.registerService (t_account);
        //流程跳转  跳到展示所有界面  不带参数  用 rediirect
        response.sendRedirect ("/t_Account/ServletFinaAll");
    }
}

对应的注册页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注册</title>
    <style type="text/css">
       #1{
           color: red;
       }
    </style>
</head>
<body>
    <h1>欢迎注册本银行操作系统</h1>
    <form action="/t_Account/add" method="post">
       <center>
           <table  width="60%"  height="60%" align="conter" bgcolor="#00ffff">
               <tr>
                   <td align="right" width="300px" id="1">
                       卡号
                   </td>
                   <td>
                       <input type="text" name="cardNum" id="2"/>
                   </td>
               </tr></br>
               <tr>
                   <td align="right" width="300px">
                       用户名
                   </td>
                   <td>
                       <input type="text" name="username" />
                   </td>
               </tr></br>
               <tr>
                   <td align="right" width="300px">
                       密码
                   </td>
                   <td>
                       <input type="password" name="password" />
                   </td>
               </tr></br>
               <tr>
                   <td align="right" width="300px">
                       账户余额
                   </td>
                   <td>
                       <input type="text" name="balabce" />
                   </td>
               </tr></br>
               <tr>
                   <td align="right" width="300px">
                       电话号码
                   <td>
                       <input type="text" name="mobile" />
                   </td>
               </tr></br>
               <tr>
                   <td align="right" width="300px">
                       身份证号
                   <td>
                       <input type="text" name="ldentifyNumber" />
                   </td>
               </tr></br>
               <tr>
                   <td align="right" width="300px">
                   <td>
                       <input type="submit" value="提交" />
                       <input type="reset" value="提交" />
                   </td>
               </tr></br>
           </table>
       </center>
    </form>
</body>
</html>

第三个类 展示所有(此展示所有 用 servlet 流 技术 输出网页 )

package com.servlet;
import com.entity.T_Account;
import com.service.T_AccountService;
import com.service.T_AccountServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
/**
 * 展示所有·
 * */
public class ServletFinaAll extends HttpServlet {
    @Override
    public void service(HttpServletRequest request, HttpServletResponse response)throws ServletException,IOException{
        //设置应答类型
        response.setContentType ("text/html");
        //设置请求与响应的编码格式
        response.setCharacterEncoding ("UTF-8");
        request.setCharacterEncoding ("UTF-8");
        //获取 cookie 多个浏览器访问  返回数组
        Cookie[] cookies = request.getCookies ();
        //获得输出流
        PrintWriter out = response.getWriter ();
        //获取 cookie 的名称
        //取出第一个值
        String name = cookies[0].getName ();
        //获取 cookies 的值
        String value = cookies[0].getValue ();
        System.out.println ("登录标记="+name);
            System.out.println ("登录标记="+value);
        //调用业务层
        T_AccountService t_accountService = new T_AccountServiceImpl ();
        List<T_Account> t_accounts = t_accountService.FindAllService ();
        if ("123456".equals (value)){
            
        //输出网页
        out.println ("<html>");
        out.println ("<body>");
        out.println ("<form action='/t_Account/deleteServlet' method='post'>");

        out.println ("<table  border='0' align='center' width='100%' cellpadding='0' cellpacing='0' bgcolor='yellow'> ");
        //设置表头
        out.println ("<tr><td>"+"id"+"</td>"+
                "<td>"+"选项"+"</td>"+ //此列 对应批量删除的复选框
                "<td>"+"卡号"+"</td>"+
                "<td>"+"用户名"+"</td>"+
                "<td>"+"密码"+"</td>"+
                "<td>"+"账户余额"+"</td>"+
                "<td>"+"开户日期"+"</td>"+
                "<td>"+"联系电话"+"</td>"+
                "<td>"+"身份证号"+"</td>"+
                "<td>功能</td></tr>"
        );
        //遍历输出每一行的内容
        for (T_Account t_account : t_accounts) {
            out.println ("<tr>" +"<td><input type='checkbox' name='cardNums' value='"+t_account.getCardNum ()+"'/></td>"+
                    "<td>"+t_account.getId ()+"</td>"+
                    "<td size='3px'>"+t_account.getCardNum ()+"</td>"+
                    "<td>"+t_account.getUsername ()+"</td>"+
                    "<td>"+t_account.getPassword ()+"</td>"+
                    "<td>"+t_account.getBalabce ()+"</td>"+
                    "<td>"+t_account.getCtTime ()+"</td>"+
                    "<td>"+t_account.getMobile ()+"</td>"+
                    "<td>"+t_account.getLdentifyNumber ()+"</td>"+

                    "<td><a href='/t_Account/deleteServlet?cardNum="+t_account.getCardNum ()+"'>删除</a><a href='/t_Account/ServletFinaOne?cardNum="+t_account.getCardNum ()+"'>修改</a></td></tr>"
            );
        }
        out.println ("<tr><td><a href='/t_Account/register.jsp'>添加</a></td></tr>");
        out.println ("</table>");
        out.println ("<center><input type='submit' value='批量删除'/></center>");
        out.println ("</form>");
        out.println ("</body>");
        out.println ("</html>");
        }else{
            response.sendRedirect ("/t_account/login.jsp");
        }
        //流程跳转
        //清空缓冲区
        out.flush ();
    }
}

第四个类 删除单个与批量删除

package com.servlet;
import com.service.T_AccountService;
import com.service.T_AccountServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//根据卡号删除  和 批量删除
public class ServletDeleteOne extends HttpServlet {
    @Override
    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置应答类型
        response.setContentType ("text/html");
        //设置应答与请求的编码格式
        response.setCharacterEncoding ("utf-8");
        request.setCharacterEncoding ("utf-8");
        //接收参数
        String cardNum = request.getParameter ("cardNum");
        //获取复选框的值
        String[] cardNums = request.getParameterValues ("cardNums");
        //调用业务
       T_AccountService t_accountService = new T_AccountServiceImpl ();
       //判断 卡号是否为空  因为 delete 删除一个值,复选框是删除多个值
        if (cardNum!=null){
            //执行删除一个
            t_accountService.deleteByIdService (cardNum);
        }else{
            //遍历删除
            for (String num : cardNums) {
                t_accountService.deleteByIdService (num);
            }
        }
       //流程跳转  不带参数 用 redirect  调到展示所有界面
        response.sendRedirect ("/t_Account/ServletFinaAll");
    }
}

第五个类 修改(修改需要两步)

第一步 回显

package com.servlet;
import com.entity.T_Account;
import com.service.T_AccountService;
import com.service.T_AccountServiceImpl;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//回显
public class ServletFinaOne extends HttpServlet {
    @Override
    public void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        //设置应答类型
        response.setContentType ("text/html");
        //设置 响应与请求 的编码格式
        response.setCharacterEncoding ("utf-8");
        request.setCharacterEncoding ("utf-8");
        //接收参数
        String cardNum = request.getParameter ("cardNum");
        // 调用业务
        T_AccountService t_accountService = new T_AccountServiceImpl ();
        T_Account t_account = t_accountService.findByIdService (cardNum);
        //利用request 作用域
        request.setAttribute ("t_account",t_account);
        //流程跳转 需要带参数  调到 修改的 页面
        RequestDispatcher requestDispatcher = request.getRequestDispatcher ("/UpdatetT_Account.jsp");
        requestDispatcher.forward (request,response);
    }
}

与 修改和回显 对应的页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
    <title>注册</title>
    <style type="text/css">
       #1{
           color: red;
       }
    </style>
</head>
<body>
    <h1>修改个人信息</h1>
    <%--${requestScope.t_account.carNum}
    <%= request.getAttribute(t_account.carNum)%>--%>
    <form action="/t_Account/ServletUpdate" method="post">
       <center>
           <table  width="60%"  height="60%" align="conter" bgcolor="#00ffff">

               <tr>
                   <td align="right" width="300px">
                       卡号
                   </td>
                   <td>
               <!--readonly="readonly" 将文本框的内容设置为只读模式,不可修改,但是可以传到后台-->
                       <input type="text" readonly="readonly"  name="cardNum" value="${requestScope.t_account.cardNum}"/>

                   </td>

               </tr></br>
               <tr>
                   <td align="right" width="300px">
                       用户名
                   </td>
                   <td>
                       <input type="text" name="username" value="${requestScope.t_account.username}"/>

                   </td>
               </tr></br>
               <tr>
                   <td align="right" width="300px">
                       密码
                   </td>
                   <td>
                       <input type="password" name="password"  value="${requestScope.t_account.password}"/>
                   </td>
               </tr></br>
               <tr>
                   <td align="right" width="300px">
                       账户余额
                   </td>
                   <td>
                       <input type="text" name="balabce" value="${requestScope.t_account.balabce}" />
                   </td>
               </tr></br>
               <tr>
                   <td align="right" width="300px">
                       电话号码
                   <td>
                       <input type="text" name="mobile" value="${requestScope.t_account.mobile}" />
                   </td>
               </tr></br>

               <tr>
                   <td align="right" width="300px">
                   <td>
                       <input type="submit" value="提交" />
                       <input type="reset" value="提交" />
                   </td>
               </tr></br>
           </table>
       </center>

    </form>
</body>
</html>

第二步 修改

package com.servlet;
import com.entity.T_Account;
import com.service.T_AccountService;
import com.service.T_AccountServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

//修改
public class ServletUpdate extends HttpServlet {
    @Override
    public void service(HttpServletRequest request, HttpServletResponse response)throws ServletException,IOException {
        //设置应答类型
        response.setContentType ("text/html");
        //设置 响应与请求 的编码格式
        response.setCharacterEncoding ("utf-8");
        request.setCharacterEncoding ("utf-8");
        //接收参数
        String cardNum = request.getParameter ("cardNum");
        System.out.println ("接收的卡号"+cardNum);
        String username = request.getParameter ("username");
        String password = request.getParameter ("password");
        String balabce = request.getParameter ("balabce");
        System.out.println ("账户余额"+balabce);
        //将字符串 转换为 double 类型
        //将 String  类型 转换 为 double 类型
        double balabce1 = Double.parseDouble (balabce);
        String mobile = request.getParameter ("mobile");
        T_Account t_account = new T_Account ();
        t_account.setCardNum (cardNum);
        t_account.setUsername (username);
        t_account.setPassword (password);
        t_account.setBalabce (balabce1);
        t_account.setMobile (mobile);
        System.out.println ("接收需要修改的参数"+t_account);
        //调用业务
        T_AccountService t_accountService = new T_AccountServiceImpl ();
        t_accountService.UpdateAllService (t_account);
        // 流程跳转  修改完之后 跳到展示所有的界面 不带参数
        response.sendRedirect ("/t_Account/ServletFinaAll");

    }
}

8 web.xml 文件

//解释说明
serlvet程序中的url-pattern,就是web.xml中的<url-pattern>
与 每个 servlet 对应的 url-pattern

正式文件内容

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
   
    <!-- 继承HttpServlet-->
    <!-- 登录-->
    <servlet>
        <servlet-name>httpServlet</servlet-name>
        <servlet-class>com.servlet.T_AccountServletLogin</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>httpServlet</servlet-name>
        <url-pattern>/h</url-pattern>
    </servlet-mapping>
    <!--注册业务-->
    <servlet>
        <servlet-name>addone</servlet-name>
        <servlet-class>com.servlet.ServletRegister</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>addone</servlet-name>
        <url-pattern>/add</url-pattern>
    </servlet-mapping>
    <!--展示所有-->
    <servlet>
        <servlet-name>fiandAll</servlet-name>
        <servlet-class>com.servlet.ServletFinaAll</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>fiandAll</servlet-name>
        <url-pattern>/ServletFinaAll</url-pattern>
    </servlet-mapping>
    <!--根据卡号删除-->
    <servlet>
        <servlet-name>deleteServlet</servlet-name>
        <servlet-class>com.servlet.ServletDeleteOne</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>deleteServlet</servlet-name>
        <url-pattern>/deleteServlet</url-pattern>
    </servlet-mapping>

    <!--根据卡号查询 返回一个对象 用于回显-->
    <servlet>
        <servlet-name>ServletFinaOne</servlet-name>
        <servlet-class>com.servlet.ServletFinaOne</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ServletFinaOne</servlet-name>
        <url-pattern>/ServletFinaOne</url-pattern>
    </servlet-mapping>
    <!-- 修改功能 -->
    <servlet>
        <servlet-name>ServletUpdate</servlet-name>
        <servlet-class>com.servlet.ServletUpdate</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ServletUpdate</servlet-name>
        <url-pattern>/ServletUpdate</url-pattern>
    </servlet-mapping>
</web-app>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值