zoukankan      html  css  js  c++  java
  • 十二周周四*交流会报告

    这是我会的,在十一周搞懂的。

    public class Class_Bean {
    
        private int id;
        private String name;
        private String teacher;
        private String  place;
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        
        public String getTeacher() {
            return teacher;
        }
        public void setTeacher(String teacher) {
            this.teacher = teacher;
        }
        public String getPlace() {
            return place;
        }
        public void setPlace(String place) {
            this.place = place;
        }
        }

    很简单的javabean,很容易搞懂,存贮取出来的数据方便操作。

    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    import com.oracle.jsp.bean.Class_Bean;
    import com.oracle.jsp.util.DB;
    
    public class Class_dao {
    
        // 登录时核对信息
        public Class_Bean checkLogin(String name, String place ,String teacher) {
            Connection conn = DB.getConn();
            Class_Bean classBean = null;
            try {
                /*
                 * Statement 是 Java 执行数据库操作的一个重要方法 用于在已经建立数据库连接的基础上 向数据库发送要执行的SQL语句。 Statement对象
                 * 用于执行不带参数的简单SQL语句。
                 */
                Statement state = conn.createStatement();
                // 查找数据库中与你输入的username匹配的数据
                /*
                 *
                 * ResultSet:结果集,封装了使用JDBC进行查询的结果 1.调用Statement对象的excuteQuery(sql)方法可以得到结果集
                 * 2.ResultSet返回的实际上就是一张数据表,有一个指针 指向数据表的第一样的前面,可以调用next()方法检测下一行是否有效,若有效则返回true
                 * ,并且指针下移,相当于迭代器对象的hasNext()和next()的结合体
                 * 3.当指针对位到确定的一行时,可以通过调用getXxx(index)或者getXxx(columnName)
                 * 获取每一列的值,例如:getInt(1),getString("name") 4.ResultSet当然也需要进行关闭
                 * 
                 */
    
                ResultSet rs = state.executeQuery("select * from kecheng where name='" + name + "'");
                if (rs.next()) {
                    // 如果有结果,是认为是通过验证了
                    if (rs.getString("place").equals(place)) 
                    {
                        if(rs.getString("teacher").equals(teacher))
                        {
                            
                        classBean = new Class_Bean();
                        classBean.setId(rs.getInt("id"));
                        classBean.setName(rs.getString("name"));
                        classBean.setPlace(rs.getString("place"));
                        classBean.setTeacher(rs.getString("teacher"));
                        System.out.println(classBean.getName());
                        
                        }
    
                    } 
                }
                // 关闭连接    
                DB.close(rs, state, conn);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            return classBean;
        }
        public Class_Bean checkLogin(String name) {
            Connection conn = DB.getConn();
            Class_Bean classBean = null;
            try {
                /*
                 * Statement 是 Java 执行数据库操作的一个重要方法 用于在已经建立数据库连接的基础上 向数据库发送要执行的SQL语句。 Statement对象
                 * 用于执行不带参数的简单SQL语句。
                 */
                Statement state = conn.createStatement();
                // 查找数据库中与你输入的username匹配的数据
                /*
                 *
                 * ResultSet:结果集,封装了使用JDBC进行查询的结果 1.调用Statement对象的excuteQuery(sql)方法可以得到结果集
                 * 2.ResultSet返回的实际上就是一张数据表,有一个指针 指向数据表的第一样的前面,可以调用next()方法检测下一行是否有效,若有效则返回true
                 * ,并且指针下移,相当于迭代器对象的hasNext()和next()的结合体
                 * 3.当指针对位到确定的一行时,可以通过调用getXxx(index)或者getXxx(columnName)
                 * 获取每一列的值,例如:getInt(1),getString("name") 4.ResultSet当然也需要进行关闭
                 * 
                 */
    
                ResultSet rs = state.executeQuery("select * from kecheng where name='" + name + "'");
                if (rs.next()) {
                    // 如果有结果,是认为是通过验证了    
                        classBean = new Class_Bean();
                        classBean.setId(rs.getInt("id"));
                        classBean.setName(rs.getString("name"));
                        classBean.setPlace(rs.getString("place"));
                        classBean.setTeacher(rs.getString("teacher"));
                        System.out.println(classBean.getName());
                    
                }
                // 关闭连接
                DB.close(rs, state, conn);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            return classBean;
        }
        /**
         * 检查是否存在此用户 dada 说实话我感觉没多大用,查询用吧。。嘤嘤嘤
         * 
         * @param name
         * @return
         */
    
        public boolean checkReg(String name, String place ,String teacher) {// 仅仅是查询数据库中是否有这个用户数据
            boolean flag = false;
            // 查询用户是否已存在
            Connection connection = DB.getConn();
            Statement statement = null;
            ResultSet rs = null;
            try {
    
                statement = connection.createStatement();
                rs = statement.executeQuery("select name from kecheng");
                while (rs.next()) {
                    // System.out.println(name);
                    // System.out.println(rs.getString("username"));
                    if (name.equals(rs.getString("name"))) {
                        flag = true;
                    }
    
                }
                if (flag == false) {
                    System.out.println("没有这个数据");
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                DB.close(rs, statement, connection);
            }
            return flag;
        }
    
        /**
         * 向数据库中添加信息
         */
    
        public static boolean  add_(String name, String place,String teacher) {
            Connection conn = DB.getConn();
            try {
                Statement state = conn.createStatement();
                System.out.println("添加信息");
                state.execute("insert into kecheng (name,place,teacher) values('" + name + "','" + place+ "','" + teacher+ "')");
                DB.close(state, conn);
            } catch (Exception e) {
                e.printStackTrace();
    
            }
            return true;
        }
    
        /**
         * dada 修改信息 调用了存在方法(checkReg)
         */
    
        public void revise_(String name, String place,String teacher) {
            Connection conn = DB.getConn();
            Statement state = null;
    
            try {
    
                if((checkLogin(name, place, teacher))!=null) {
                    state = conn.createStatement();
                    System.out.println("修改信息");
                    state.execute("update kecheng set place='" + place + "' where name='" + name + "' ");
                    state.execute("update kecheng set teacher='" + teacher + "' where name='" + name + "' ");
                    System.out.println("修改成功");
                    DB.close(state, conn);
                }
    
            } catch (Exception e) {
                e.printStackTrace();
    
            }
        }
    
        /**
         * dada 删除信息
         */
        public void delete_(String name ) {
            Connection conn = DB.getConn();
            Statement state = null;
    
            try {
    
                
                    state = conn.createStatement();
                    System.out.println("删除信息");
                    state.execute("delete from kecheng where name='" + name + "'");
                    System.out.println("删除成功");
                    DB.close(state, conn);
                
    
            } catch (Exception e) {
                e.printStackTrace();
    
            }
    
        }
    }

    dao成,取出数据库数据用的,Connection conn = DB.getConn() 和ResultSet和Statement查明白了,会用了。我这玩意在上周都一个个用控制台试了,弄明白了。

    Connection是获得数据库连接的。

    student是数据库名字  ?后面有时候需要写,可以解决乱码和一些数据库问题,就比如我这个问题,因为数据库是8.0的,时间对不上,查了一下,必须写这个。

    root是我的账号,123456是密码。

    Statement向数据库放送语句,基础数据库语句奉上。
    1、说明:创建数据库
    CREATE DATABASE database-name 
    2、说明:删除数据库
    drop database dbname
    3、说明:备份sql server
    --- 创建 备份数据的 device
    USE master
    EXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_1.dat'
    --- 开始 备份
    BACKUP DATABASE pubs TO testBack 
    4、说明:创建新表
    create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
    
    根据已有的表创建新表: 
    A:create table tab_new like tab_old (使用旧表创建新表)
    B:create table tab_new as select col1,col2… from tab_old definition only
    5、说明:删除新表
    drop table tabname 
    6、说明:增加一个列
    Alter table tabname add column col type
    注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
    7、说明:添加主键: Alter table tabname add primary key(col) 
    说明:删除主键: Alter table tabname drop primary key(col) 
    8、说明:创建索引:create [unique] index idxname on tabname(col….) 
    删除索引:drop index idxname
    注:索引是不可更改的,想更改必须删除重新建。
    9、说明:创建视图:create view viewname as select statement 
    删除视图:drop view viewname
    10、说明:几个简单的基本的sql语句
    选择:select * from table1 where 范围
    插入:insert into table1(field1,field2) values(value1,value2)
    删除:delete from table1 where 范围
    更新:update table1 set field1=value1 where 范围
    查找:select * from table1 where field1 like%value1%---like的语法很精妙,查资料!
    排序:select * from table1 order by field1,field2 [desc]
    总数:select count as totalcount from table1
    求和:select sum(field1) as sumvalue from table1
    平均:select avg(field1) as avgvalue from table1
    最大:select max(field1) as maxvalue from table1
    最小:select min(field1) as minvalue from table1
    11、说明:几个高级查询运算词
    A: UNION 运算符 
    UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALLUNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 
    B: EXCEPT 运算符 
    EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALLEXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。 
    C: INTERSECT 运算符
    INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALLINTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。 
    注:使用运算词的几个查询结果行必须是一致的。 
    12、说明:使用外连接 
    A、leftouterjoin: 
    左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。 
    SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
    B:rightouterjoin: 
    右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。 
    C:full/crossouterjoin: 
    全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
    12、分组:Group by:
       一张表,一旦分组 完成后,查询后只能得到组相关的信息。
        组相关的信息:(统计信息) count,sum,max,min,avg  分组的标准)
        在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据
       在selecte统计函数中的字段,不能和普通的字段放在一起;
    
    13、对数据库进行操作:
       分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后接表明,附加需要完整的路径名
    14.如何修改数据库的名称:
    sp_renamedb 'old_name', 'new_name'
    ResultSet:结果集,封装了使用JDBC进行查询的结果,接收获得你想要的数据,例如查找数据

    在kecheng表内name栏中“name”(第二的name就是你要查找的东西)。

    
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    
    /**
     * 数据库的工具类
     * @author dada
     *
     */
    public final class DB {
    
        //Connection主要用于连接数据库
        /*
         * Connection 对象的数据库能够提供描述其表、所支持的 SQL 语法、存储过程、此连接功能等等的信息。
         * 此信息是使用 getMetaData 方法获得的。
         */
        private Connection conn;
        //连接数据库
        public static Connection getConn() {
            Connection conn = null;
            String db_url="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
                conn = DriverManager.getConnection(db_url, "root", "123456");
                 System.out.println("Success connect MySql server!");  
            } catch (Exception e) {
                e.printStackTrace();
            }
            return conn;
        }
        
        public static void close(Statement state, Connection conn) {
            if(state!=null) {
                try {
                    state.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn!=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        
        public static void close(ResultSet rs, Statement state, Connection conn) {
            if(rs!=null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(state!=null) {
                try {
                    state.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn!=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    工具类

    还有jdbc必须导入才行!

    servlet等我说完jsp代码细讲。

     先讲一下jsp与servlet的关系,jsp会解析成servlet的。(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)

    可以看这个 http://www.fangbangxin.com/news/show-3701.html

      最好看看一下,了解一下jsp与sevlet

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>main</title>
    <style> 
    body{ text-align:center} 
    
    /* css注释:为了观察效果设置宽度 边框 高度等样式 */ 
    </style> 
    </head>
    <body>
    <br><br><br><br><br><br><br>
    <div>
    <input type="button" onclick="test1()" value="add" style="200px;height:50px" />
    <script >
    function test1(){
    var url = "add.jsp";
    window.location.href= url;
    }
    </script>
    </div>
    <br><br><br><br><br>
    <div>
    <input type="button" onclick="test2()" value="delete" style="200px;height:50px"/>
    <script >
    function test2(){
    var url = "delete.jsp";
    window.location.href= url;
    }
    </script>
    </div>
    <br><br><br><br><br>
    <div>
    <input type="button" onclick="test3()" value="xiu_gai" style="200px;height:50px"/>
    <script >
    function test3(){
    var url = "xiugai.jsp";
    window.location.href= url;
    }
    </script>
    </div>
    <br><br><br><br><br>
    <div>
    <input type="button" onclick="test4()" value="cha_zhao" style="200px;height:50px"/>
    <script >
    function test4(){
    var url = "chazhao.jsp";
    window.location.href= url;
    }
    </script>
    </div>
    </body>
    </html>
    

     这是main.jsp,写了四个js函数,跳转到相应的页面。

    点击执行函数test2()。

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>add</title>
    <style> 
    body{ text-align:center} 
    
    /* css注释:为了观察效果设置宽度 边框 高度等样式 */ 
    </style> 
    </head>
    <body>
    <div>
    <form method="post" action="ClassServlet?action=add">
    <br><br><br><br><br><br><br>
    <div>
      课程名称:<input type="text" name ="name"  value="" />
     
    </div>
    <br><br>
    <div>
      上课地点:
      <select name =place>
      <option value ="一教">一教</option>
      <option value ="基教">基教</option>
      <option value="二教">二教</option>
      <option value="三教">三教</option>
    </select>
    </div>
    <br><br>
    <div>
      任课教师:
      <select name =teacher>
      <option value ="王建民">王建民</option>
      <option value ="刘丹">刘丹</option>
      <option value="刘立嘉">刘立嘉</option>
      <option value="杨子光">杨子光</option>
        <option value="王辉">王辉</option>
    </select>
    </div>
    <br><br>
    <div><input type="submit" value="保存"/></div>
    
    </form>
    </div>
    </body>
    </html>
    

      add函数  

    form就是传数值用的,action=ClassServlet(servlet类名)?后面action=“add”什么意思后面讲。

    import java.awt.List;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    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 com.oracle.jsp.bean.Class_Bean;
    import com.oracle.jsp.dao.Class_dao;
    
    /**
     * Servlet implementation class ClassServlet
     */
    @WebServlet("/ClassServlet")
    public class ClassServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public ClassServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
    
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    	
    		request.setCharacterEncoding("UTF-8");
    		response.setContentType("text/html;charsetUTF-8");
    		response.setCharacterEncoding("UTF-8");
    		String action=request.getParameter("action");
    		if(action.equals("add"))
    		{
    			add(request,response);
    		}
    		if(action.equals("delete"))
    		{
    			delete(request,response);
    		}
    		if(action.equals("xiu_gai"))
    		{
    			xiu_gai(request,response);
    		}
    		if(action.equals("cha_zhao"))
    		{
    			cha_zhao(request,response);
    		}
    
    	}
    
    	private void cha_zhao(HttpServletRequest request, HttpServletResponse response) {
    		// TODO 自动生成的方法存根
    		
    		String name=request.getParameter("name");
    		Class_Bean c=new Class_Bean();
    		c.setName(request.getParameter("name"));
    		c.setTeacher(request.getParameter("teacher"));
    		c.setPlace(request.getParameter("address"));
    		System.out.println(c.getName()+"--"+c.getTeacher()+"--"+c.getPlace());
    		Class_dao dao=new Class_dao();
    		
    		
    	}
    
    	private void xiu_gai(HttpServletRequest request, HttpServletResponse response) {
    		// TODO 自动生成的方法存根
    	
    		Class_dao dao =new Class_dao();
    		String name =request.getParameter("name");
    		String place =request.getParameter("place");
    		String teacher=request.getParameter("teacher");
    		dao.revise_(name, place, teacher);
    		
    	}
    
    	
    
    	
    
    	private void delete(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    		// TODO 自动生成的方法存根
    		Class_Bean s =new Class_Bean();
    		Class_dao dao =new Class_dao();
    		String name =request.getParameter("name");
    		s= dao.checkLogin(name);
    		dao.delete_(name);
    		PrintWriter out = response.getWriter();
    		out.println(s.getName());
    		out.println(s.getPlace());
    		out.println(s.getTeacher());
    		out.println("删除成功");
    		request.getRequestDispatcher("delete.jsp").forward(request,response);
    	}
    
    	private void add(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    		// TODO 自动生成的方法存根
    		Class_Bean c=new Class_Bean();
    		String name =request.getParameter("name");
    		String place =request.getParameter("place");
    		String teacher=request.getParameter("teacher");
    	
    		c.setName(name);
    		c.setPlace(place);
    		c.setTeacher(teacher);
    		Class_dao dao=new Class_dao();
    		//Class_dao.add_("777", "2", "1");
    		if(dao.checkLogin(c.getName(),c.getPlace(),c.getTeacher())==null)
    		{
    			Class_dao.add_(name, place, teacher);
    			PrintWriter out = response.getWriter();
    			out.println(c.getName());
    			out.println(dao.checkLogin(c.getName(),c.getPlace(),c.getTeacher()));
    		
    			out.print("<script>alert('课程添加成功'); </script>");// window.location='add.jsp'
    			out.flush();
    			out.close();
    			request.getRequestDispatcher("add.jsp").forward(request,response);
    		}
    		else
    		{
    			PrintWriter out = response.getWriter();
    			out.print("<script>alert('课程名称重复'); </script>");// window.location='add.jsp'
    			out.flush();
    			out.close();
    			request.getRequestDispatcher("add.jsp").forward(request,response);
    		}
    	}
    
    	/**
    	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		doGet(request, response);
    	}
    
    }
    

      request这个是用来获取value里面的值的

    action就是这个作用,选择相应的函数来做你想要干的。

    只给留下add的,剩下的jsp就应该自己完成差不多了。

    我是先用控制台来操作先弄明白了dao和数据库。最先干的是下载安装数据库。

    然后第二步就是弄明白了jsp和serlet的关系。

    第三步就是写出来一步步调试。

  • 相关阅读:
    element-ui表格数据为空及数据使用html包裹的实现
    Vue 生命周期深入
    element-ui使用Radio单选表格行
    跨浏览器事件封装
    fontsize.js
    js使用Canvas对象绘制圆环
    银行卡信息生成
    数组中对象的去重
    es6冻结对象及其属性
    clip属性
  • 原文地址:https://www.cnblogs.com/gonT-iL-evoL-I/p/10093452.html
Copyright © 2011-2022 走看看