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; } }
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; } }
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); } }
(3)总结了公文的10个不同的状态(还没有验证,可能不够全面)
0:未交
1:刚到办公室
2:副厂长审核
3:副厂长审核完毕到办公室 3:同意 -3:不同意
4:厂长审核
5:厂长审核完毕到办公室 5:同意 -5:不同意
6:发至相关部门
7:签收公文