新课程添加

要完成这个任务,首先要知道需要什么东西并且想想怎么去做。

有一说一,在周五之前我只学了MySQL,其他的知识都是在朝勇的指点下跟随他的路线去突击学习的,并且通过和他一样的方法完成的本次项目(勇哥nb!)。

 

在开始做这个任务之前,首先,梳理一下需要的知识储备

①需要学习SQL语句实现对数据库的增删改以及查询的操作

②在IDEA或Eclipse中通过JDBC去连接数据库

③需要建立Marven项目并导入相对应的依赖或在项目中导入jar包以完成连接MySQL的驱动器

④用servlet去处理.jsp中的信息(由于功能较为简单,直接在servlet中实现了把数据传入数据库和异常处理的操作)

⑤了解一些jsp的知识,简单绘制页面(由于时间不太够,而且基础的功能非常简单就没有学习怎么去写,只是稍微了解了一下,这里我是直接抄过来的)

 

下载MySQL、Maven、TomCat并进行环境配置是提前需要完成的准备工作,具体不在此详谈。

 

注意工程中webapp文件夹下的web.xml与TomCat的版本不一致时,需要进行更新

 

接下来复盘一下这次作业的实现过程:

 

来先看一下项目目录:

新课程添加

 

 具体的实现过程如下:

(1)先在SQLyog中直接创建jbdcstudy数据库和lesson表,详细信息如下(ipp是课程名称,teacher是老师名字,position是上课地点):

新课程添加

 

 (2)在IDEA中新建Maven项目,具体选择如下:

新课程添加

 

 新课程添加

 

(3)在pom.xml中导入相对应需要的依赖:(注意,如果在这里不是使用的Maven则需要进行手动导入jar包。而且对应的jar包必须和mysql的版本相对应,否则会报错。切记,版本问题!版本问题!版本问题!

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <scope>provided</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.26</version>
    </dependency>

 (4)进行TomCat的配置(安装完TomCat并配置完变量后可以打开bin目录下的startup.bat,然后打开浏览器输入localhost:8080。当然这里可以手动进行修改为你自己上传的web,狂神的视频里有将,感兴趣的可以去康康,挺香的)

新课程添加

 

 新课程添加

 

 (5)在web.xml文件中进行注册:

新课程添加

 

 新课程添加

 

 (6)在根目录下创建JBDC工具类去连接数据库:(注意应当把数据库连接的地方和对数据库操作的部分分开来写)

import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class JDBCUtils {
  //用户信息和url public static String url = "jdbc:mysql://localhost:3306/jdbcstudy?&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=true";
  //这个语句中,jdbcstudy为相对应连接的数据库名 public static String user = "root";
  //数据库用户名 public static String driver = "com.mysql.cj.jdbc.Driver";
  //此处,如果mysql版本为较老,driver值应为"com.msyql.jdbc.Driver" public static String password = "123456";   //密码 static { try {
       //加载驱动 Class.forName(driver); } catch (Exception e) { e.printStackTrace(); } }   //连接成功,数据库对象,Connection代表数据库 public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url, user, password); }
   public static void release(Connection conn, PreparedStatement st, ResultSet rs, Statement stt) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (st != null) { try { st.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stt != null) { try { stt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }

(7)编写servelet(这里图省事儿直接把对数据库操作搞里头)

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.*;
import java.util.HashSet;
import java.util.Set;

public class servlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
    {
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");

        String classname = req.getParameter("classname");
        String teachername = req.getParameter("teachername");
        String place = req.getParameter("place");
     //这里使用hashset,以确保课程信息不会出现重复
        Set<String> hashSet = new HashSet<String>(8);
        hashSet.add("王建民");
        hashSet.add("刘立嘉");
        hashSet.add("刘丹");
        hashSet.add("杨子光");
        hashSet.add("张云霞");
        hashSet.add("武勇亮");
        hashSet.add("高飞");
        if (!hashSet.contains(teachername))
        {
            resp.getWriter().print("<script> alert(\"Teacher name input error\") </script>");
            return;
        }

        Set<String> hashSet2 = new HashSet<String>(5);
        hashSet2.add("一教");
        hashSet2.add("二教");
        hashSet2.add("三教");
        hashSet2.add("四教");
        //System.out.println(classname);
        if (!hashSet2.contains(place))
        {
            resp.getWriter().print("<script> alert(\"Classroom location input error\") </script>");
            return;
        }

        Connection conn = null;
        ResultSet rs = null;
        Statement stt = null;
        try
        {
            conn = JDBCUtils.getConnection();
            stt = conn.createStatement();
            String sql = "select * from lesson";
            rs = stt.executeQuery(sql);

            while (rs.next())
            {
                if (rs.getString("ipp").equals(classname))
                {
                    resp.getWriter().print("<script> alert(\"Duplicate course name, please re-enter\") </script>");
                    return;
                }
            }
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }

        try
        {

            conn = JDBCUtils.getConnection();
            String sql = "insert into `lesson`(`ipp`,`teacher`,`position`) values(?,?,?)";
            PreparedStatement st = null;

            try
            {
                //创建语句传输对象
                st = conn.prepareStatement(sql);

                st = conn.prepareStatement(sql);
                st.setString(1, classname);
                st.setString(2, teachername);
                st.setString(3, place);
                st.executeUpdate();
                int i = st.executeUpdate(sql);
                if (i > 0)
                {
                    System.out.println("插入成功");
                }
            }
            catch (SQLException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            finally
            {
                //关闭资源
                JDBCUtils.release(conn, st, rs, stt);
            }
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
    }
}

 

(8)绘制jsp页面

<%@ 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>
    <title>课程添加页面</title>
</head>
<body>
<form action="${pageContext.request.contextPath}\p" method="get">
    <table align="center" border="1" width="500">
        <tr>
            <td>课程名称 : </td>
            <td>
                <input type="text" name="classname" />
            </td>
        </tr>
        <tr>
            <td>任课教师:</td>
            <td>
                <input type="text" name="teachername" />
            </td>
        </tr>
        <tr>
            <td>上课地点:</td>
            <td>
                <input type="text" name="place" />
            </td>
        </tr>
        <tr align="center">
            <td colspan="2">
                <input type="submit" value="提交" />
                <input type="reset" value="重置" />
            </td>
        </tr>
    </table>
    <%

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

运行截图如下:

新课程添加

 

 

新课程添加

 

 

至此就完成了这次的任务。

由于这次是突击进行准备的,学习的过程中很多的知识都直接跳过去没有看,并且很多地方还是一知半解,只能说对这次的任务实现了最基本的完成,具体关于jsp、MySQL在Java中编程的内容还需要多加学习。底下的时间得抓紧把剩的知识点补上!

 

上一篇:JDBC操作


下一篇:Java中JDBC的操作