• 2019年12月9日下午自习成果


    一、成果

    (1)构造好了表结构,可能不够完善,需要之后继续敲码的时候发现问题,解决问题。

    一共创了两个表,一个是login表:

     id是自增的主键,name来记录登录人的职务相应的number与登录人相对应,number里面存的数字是相应人的权限编码。

    account是账号,password是密码,登陆的时候根据账号和密码对应个人。然后通过session来获取登陆人的信息,一次来分配权限。

    另外为了判断页面是否接收到了登录人的信息,我在主页面上设置了欢迎,不同人登陆会有不同的信息。

    (2)构造好表结构后连接数据库,定义servlet,Dao层,以及JavaBean进行数据的封装。

    package Dao;
    
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.List;
    
    import Bean.login;
    import DBUtil.DBUtil;
    
    
    public class LoginDao {
        ////添加到   %表名%   表中
            public boolean insert(login login){
                //插入的sql语句
                String sql="insert into official_login(name,number,account,password) values('"+login.getName()+"','"+login.getNumber()+"','"+login.getAccount()+"','"+login.getPassword()+"')";
                //insert语句:
                //insert into table_name (column1,column2,column3,...) values (value1,value2,value3,...);
                //注意:insert这里 values(100,'String','"+bianliang+"'),数字可以直接上,字符串的话用 '',变量的话要用 '"++"'
                
                Connection conn=DBUtil.getConn();//添加数据库,加载驱动
                Statement state=null;//创建statement对象并置空
                try {
                    
                    //实例化statement对象  方便操作
                    state=conn.createStatement();
                    state.executeUpdate(sql);
                    //执行数据库更新操作用于执行insert、update或delete语句以及SQLDDL(数据定义语言)语句,
                    //例如creattable和droptable,(创建表和删除表)
                    
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                //finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定会被执行(不管有没有抛出异常),
                //经常被用在需要释放资源的情况下。
                finally {
                    DBUtil.close(state, conn);//clase 释放资源
                }
                
                return false;
            }
            
            ////根据ID删除
            
            public boolean delete(String name){
                //插入sql 语句
                String sql="delete from official_login where name='"+name+"'  ";
                
                //删除语句:
                //delete from table_name where some_colume=some_value
                
                Connection conn =DBUtil.getConn();
                Statement state=null;
                try {
                    state=conn.createStatement();
                    state.executeUpdate(sql);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                finally
                {
                    DBUtil.close(state, conn);
                }
                return false;
            }
            
            
            ////根据ID更改
            
            public boolean update(login login) {
                //插入sql 语句
                String sql="update official_login set name='"+login.getName()+"',number='"+login.getNumber()+"',account='"+login.getAccount()+"' where name='"+login.getName()+"' ";
                //update语句:
                //update table_name set column1=value1,column2=value2  where some_column=some_value;
                
                Connection conn=DBUtil.getConn();
                Statement state=null;
                
                try {
                    state=conn.createStatement();
                    state.executeUpdate(sql);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                finally
                {
                    DBUtil.close(state, conn);
                }
                
                return false;
            }
            
            
            
            ////按照ID查
            public String select(String account,String password) {
                //插入sql 语句
                String sql="select * from official_login where account='"+account+"' and password='"+password+"'";
                boolean flag=false;
                Connection conn=DBUtil.getConn();
                Statement state=null;
                ResultSet rs=null;
                
                try {
                    state=conn.createStatement();
                    rs=state.executeQuery(sql);
                    login login=null;
                    if(rs.next()) {
                        
                        System.out.println(rs.getString("name"));
                        return rs.getString("name");
                    }
                    
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }finally {
                    DBUtil.close(rs, state, conn);
                }
                
                return "";
            }
            //遍历
            public List<login> list(){
                //插入sql语句
                String sql="select * from official_login order by id asc";
                
                //select语句
                //select * from tabel_name   这是查询所有,若要查询某一列
                //select column1_name,column2_name,column3_name from table_name
                
                
                List<login>list=new ArrayList<>();
                //给集合list创造(new)一个存储空间用于存放数据
                
                
                Connection conn=DBUtil.getConn();
                Statement state=null;
                ResultSet rs=null;
                
                try{
                    state=conn.createStatement();
                    rs=state.executeQuery(sql);
                    login login=null;
                    while(rs.next()) {//注意:这里用双引号,ID是表user里的ID列
                        String name=rs.getString("name");
                        int id=rs.getInt("id");
                        String number=rs.getString("number");
                        String account=rs.getString("account");
                        String password=rs.getString("password");
                        login=new login(name,number,account,password);
                        list.add(login);
                        //表示,把bean里的数据存入到list当中
                    }
                }
                catch (SQLException e)
                {
                    e.printStackTrace();
                }
                finally
                {
                    DBUtil.close(state, conn);
                }
                return list;
            }
            
            
            //验证ID唯一
            
            public boolean only(String name) {
                //定义标记
                boolean flag=false;
                //插入sql语句
                String sql="select * from official_login where ID = '"+name+"'";
                Connection conn=DBUtil.getConn();
                Statement state=null;
                ResultSet rs=null;
                
                try {
                    state=conn.createStatement();
                    rs=state.executeQuery(sql);
                    //要用statement类的executeQuery()方法来下达select指令以查询数据库,
                    //executeQuery()方法会把数据库响应的查询结果存放在ResultSet类对象中供我们使用。
                    while (rs.next()) {
                        flag = true;
                    }
                    
                    
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }finally {
                    DBUtil.close(rs, state, conn);
                }
                
                return flag;
            }
            
            
    }
    LoginDao
    package Dao;
    
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.List;
    
    import Bean.Passage;
    import DBUtil.DBUtil;
    
    public class PassageDao {
        //Dao层实现对数据库的操作
        
        
            ////添加到   %表名%   表中
            public boolean insert(Passage passage){
                //插入的sql语句
                String sql="insert into passage(passagename,status) values('"+passage.getPassagename()+"','"+passage.getStatus()+"')";
                //insert语句:
                //insert into table_name (column1,column2,column3,...) values (value1,value2,value3,...);
                //注意:insert这里 values(100,'String','"+bianliang+"'),数字可以直接上,字符串的话用 '',变量的话要用 '"++"'
                
                Connection conn=DBUtil.getConn();//添加数据库,加载驱动
                Statement state=null;//创建statement对象并置空
                try {
                    
                    //实例化statement对象  方便操作
                    state=conn.createStatement();
                    state.executeUpdate(sql);
                    //执行数据库更新操作用于执行insert、update或delete语句以及SQLDDL(数据定义语言)语句,
                    //例如creattable和droptable,(创建表和删除表)
                    
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                //finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定会被执行(不管有没有抛出异常),
                //经常被用在需要释放资源的情况下。
                finally {
                    DBUtil.close(state, conn);//clase 释放资源
                }
                
                return false;
            }
            
            ////根据ID删除
            
            public boolean delete(String name,String ID){
                //插入sql 语句
                String sql="delete from user where ID='"+ID+"' and name='"+name+"'  ";
                
                //删除语句:
                //delete from table_name where some_colume=some_value
                
                Connection conn =DBUtil.getConn();
                Statement state=null;
                try {
                    state=conn.createStatement();
                    state.executeUpdate(sql);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                finally
                {
                    DBUtil.close(state, conn);
                }
                return false;
            }
            
            
            ////根据ID更改
            
            public boolean update(Passage passage) {
                //插入sql 语句
                String sql="update user set passagename='"+passage.getPassagename()+"',status='"+passage.getStatus()+"' where passagename ='"+passage.getPassagename()+"' ";
                //update语句:
                //update table_name set column1=value1,column2=value2  where some_column=some_value;
                
                Connection conn=DBUtil.getConn();
                Statement state=null;
                
                try {
                    state=conn.createStatement();
                    state.executeUpdate(sql);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                finally
                {
                    DBUtil.close(state, conn);
                }
                
                return false;
            }
            
            
            
            ////按照ID查
            public Passage select(String passagename) {
                //插入sql 语句
                String sql="select * from passage where passagename='"+passagename+"'";
                
                Connection conn=DBUtil.getConn();
                Statement state=null;
                ResultSet rs=null;
                
                try {
                    state=conn.createStatement();
                    rs=state.executeQuery(sql);
                    Passage passage=null;
                    while(rs.next()) {
                        int status=rs.getInt("status");
                        passage=new Passage(passagename,status);
                        return passage;
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }finally {
                    DBUtil.close(rs, state, conn);
                }
                
                return null;
            }
            
            
            public List<Passage> selectByStatus(int status){
                //插入sql语句
                String sql="select * from passage where status = '"+status+"'";
                
                //select语句
                //select * from tabel_name   这是查询所有,若要查询某一列
                //select column1_name,column2_name,column3_name from table_name
                
                
                List<Passage>list=new ArrayList<>();
                //给集合list创造(new)一个存储空间用于存放数据
                
                
                Connection conn=DBUtil.getConn();
                Statement state=null;
                ResultSet rs=null;
                
                try{
                    state=conn.createStatement();
                    rs=state.executeQuery(sql);
                    Passage passage=null;
                    while(rs.next()) {//注意:这里用双引号,ID是表user里的ID列
                        String passagename=rs.getString("passagename");
                        passage=new Passage(passagename,status);
                        list.add(passage);
                        //表示,把bean里的数据存入到list当中
                    }
                }
                catch (SQLException e)
                {
                    e.printStackTrace();
                }
                finally
                {
                    DBUtil.close(state, conn);
                }
                return list;
            }
            
            //遍历
            public List<Passage> list(){
                //插入sql语句
                String sql="select * from passage order by id asc";
                
                //select语句
                //select * from tabel_name   这是查询所有,若要查询某一列
                //select column1_name,column2_name,column3_name from table_name
                
                
                List<Passage>list=new ArrayList<>();
                //给集合list创造(new)一个存储空间用于存放数据
                
                
                Connection conn=DBUtil.getConn();
                Statement state=null;
                ResultSet rs=null;
                
                try{
                    state=conn.createStatement();
                    rs=state.executeQuery(sql);
                    Passage passage=null;
                    while(rs.next()) {//注意:这里用双引号,ID是表user里的ID列
                        String passagename=rs.getString("passagename");
                        int status=rs.getInt("status");
                        passage=new Passage(passagename,status);
                        list.add(passage);
                        //表示,把bean里的数据存入到list当中
                    }
                }
                catch (SQLException e)
                {
                    e.printStackTrace();
                }
                finally
                {
                    DBUtil.close(state, conn);
                }
                return list;
            }
            
            
            //验证ID唯一
            
            public boolean only(String passagename) {
                //定义标记
                boolean flag=false;
                //插入sql语句
                String sql="select * from passage where passagename = '"+passagename+"'";
                Connection conn=DBUtil.getConn();
                Statement state=null;
                ResultSet rs=null;
                
                try {
                    state=conn.createStatement();
                    rs=state.executeQuery(sql);
                    //要用statement类的executeQuery()方法来下达select指令以查询数据库,
                    //executeQuery()方法会把数据库响应的查询结果存放在ResultSet类对象中供我们使用。
                    while (rs.next()) {
                        flag = true;
                    }
                    
                    
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }finally {
                    DBUtil.close(rs, state, conn);
                }
                
                return flag;
            }
            
    }
    PassageDao
    package Servlet;
    
    import java.io.IOException;
    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 Bean.login;
    import Dao.LoginDao;
    
    
    /**
     * Servlet implementation class LoginServlet
     */
    @WebServlet("/loginServlet")
    public class LoginServlet extends HttpServlet {
        
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            
            String account=request.getParameter("account");
            String password=request.getParameter("password");
            LoginDao dao=new LoginDao();
            
            if(!dao.select(account, password).equals("")) {
            request.getSession().setAttribute("login", dao.select(account, password));
            request.setAttribute("message", "登陆成功");
            request.getRequestDispatcher("Head.html").forward(request, response);
            }else {
                request.setAttribute("message", "账号或密码错误");
                request.getRequestDispatcher("index.jsp").forward(request, response);
            }
            
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doGet(request, response);
        }
    
    }
    LoginServlet

    (3)总结了公文的10个不同的状态(还没有验证,可能不够全面)

    0:未交

    1:刚到办公室

    2:副厂长审核

    3:副厂长审核完毕到办公室    3:同意  -3:不同意

    4:厂长审核

    5:厂长审核完毕到办公室      5:同意  -5:不同意

    6:发至相关部门

    7:签收公文

    二、感想

      这个题目其实我一直没什么思路,原先一直想的是跟着黑马教程走,然后自然而然的就会了,但是今天下午自习完才发现,倘若不坐下来敲这个代码,思考这个问题,那么这个问题始终在那,不思考的话永远不会解决。我没有那样的聪明才智,不会说看课的时候突然有灵感,一拍脑门就会了。不过经过一下午的揣摩,我逐渐对这个题目有了思路。公文的状态很重要,页面动态读取公文的状态,相应的页面显示相应状态的公文。

  • 相关阅读:
    常见http代码错误原因及处理
    tar命令详解
    Laravel笔记
    ORM要用到的数组转对象和对象转数组函数
    模块
    内置函数
    正则
    sorted 、 filter 、 map
    匿名函数、冒泡排序,二分法, 递归
    python 函数部分
  • 原文地址:https://www.cnblogs.com/suanai/p/12012339.html
Copyright © 2020-2023  润新知