第一次机试体验

第一次上机面试经历,刚进入一个小会议,简单面试了十几分钟,剖析了我的两个本创项目,这家公司还可以,很会打击人,他说我这个项目看着高达上,其实很简单。还夸了我成绩好,没问我什么技术栈,java相关的问题也没怎么问,可能考核主要还是看的是机试的成绩。机试的题目很简单,他给我一张jvm表,放在test数据库中,让我实现数据库数据的增删改查。

机试回顾

这个题目很简单,我一心想着早点做出来,首先我想到的是Mybatis实现这个项目,开始了半个多小时,发现Mybatis的jar不知道在哪,而且不知道怎么配置xml文件,最奇葩的,公司的电脑可以上网,我就开始上网查,非常的混乱,又过了半个小时,我觉得放弃Mybatis开始用MVC,我写好了Controller,发现@RequestMapping在里面我直接调用了我自己写的DBUtils类(这个问题也是导致最后没写出来的直接原因,后面再说),应该是没什么问题的,前面的值也通过参数到Controller里,主要我忘了后面到达这个层然后跟接口层与接口实现层怎么联通,有过了半个小时多,我还约了我同学打算四点多一起走,没想到走不了了,之后有点捉急了。我觉得重新开始用jsp+servlet开始写,在jsp里面写了一个表单,然后,action跳转到InsertServlet,思路也很简单清晰,很快我就写好了,差不多快五点了,后面我又被tomcat的启动给搞懵了,我一个项目已经写好了,然后,我发现启动后jsp的页面竟然找不到页面,我又建了一个web项目,重新把文件复制过去,配置了tomcat,然后也不行,网上找了半天,部署了一个war,然后添加到lib下面,后面也没怎么搞明白,不过有一个项目可以启动了,之后通过表单的填写,按提交又跳到了classnotfind ,发现提示是java/DBUtils/DBUtil找不到,我一直在找这个什么问题也没有解决,之后不知不觉就到了六点,好像是老板,然后过来说还在写啊,然后就帮我解决bug,弄了一会叫了个技术大叔来帮我解决,后面发现是这个JAVA/DBUtils/DBUtil的问题,import java.DBUtils.DBUtil是找不到我自己写的这个DBUtils的类对象的,我的DBUtils就是直接写在src.java下面的,是的,就是这样。。。。

数据库增删改查

下面我决定进行复盘,通过三种方式实现数据库的增删改查,做个纪念。

第一种Servlet实现

index.jsp

<%--
  Created by IntelliJ IDEA.
  User: JFF
  Date: 2020/5/14
  Time: 21:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
   <form action="InsertServlet" method="post">
       <input type="text" name="id" />
       <input type="text" name="instances" />
       <input type="text" name="bytes" />
       <input type="text" name="class_name" />
       <input type="text" name="num" />
       <input type="submit" value="提交" />
   </form>
  <form action="FindAllServlet" method="post">
      <input type="submit" value="查询"/>
  </form>
  <form action="DelServlet" method="post">
      <input type="text" name="id"/>
      <input type="submit" value="删除"/>
  </form>
  </body>
</html>

DelServlet.Servlet

package com.jff.test.Servlet;

import com.jff.test.DAO.ConnectionFactory;

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 java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

@WebServlet(name = "DelServlet")
public class DelServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String id=request.getParameter("id");
        String sql="delete from jvm where id=?";
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try {
            String url = "jdbc:mysql://localhost:3308/test?useUnicode=true&characterEncoding=utf-8";
            // 数据库用户名
            String username = "root";
            // 数据库密码
            String password = "123456";
            // 创建Connection连接
            Connection conn = null;
            try {
                conn = DriverManager.getConnection(url, username, password);
            } catch (SQLException e) {
                e.printStackTrace();
            }
            PreparedStatement preparedStatement= conn.prepareStatement(sql);
            preparedStatement.setString(1,id );
            preparedStatement.execute();
            System.out.println("删除成功");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

InsertServlet.Servlet

package com.jff.test.Servlet;


import com.jff.test.DAO.ConnectionFactory;

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 java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

@WebServlet(name = "InsertServlet")
public class InsertServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

          String id=request.getParameter("id");
          String instances=request.getParameter("instances");
          String bytes=request.getParameter("bytes");
          String class_name=request.getParameter("class_name");
          String num=request.getParameter("num");

          String sql="insert into jvm(id,instances,bytes,class_name,num) values(?,?,?,?,?)";
          try {
                 Class.forName("com.mysql.jdbc.Driver");
             } catch (ClassNotFoundException e) {
                 e.printStackTrace();
             }
             // 数据库连接字符串
             String url = "jdbc:mysql://localhost:3308/test?useUnicode=true&characterEncoding=utf-8";
             // 数据库用户名
             String username = "root";
             // 数据库密码
             String password = "123456";
             // 创建Connection连接
        try {
            Connection conn = null;
            conn = DriverManager.getConnection(url, username, password);
            PreparedStatement preparedStatement= null;

            preparedStatement = conn.prepareStatement(sql);
            preparedStatement.setString(1,id );
            preparedStatement.setString(2,instances );
            preparedStatement.setString(3,bytes);
            preparedStatement.setString(4,class_name );
            preparedStatement.setString(5,num );
            preparedStatement.execute();
            System.out.println("插入成功");
        } catch (SQLException e) {
            System.out.println("错误");
            e.printStackTrace();
        }
    }


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

FindAllServlet.Servlet

package com.jff.test.Servlet;

import com.jff.test.DAO.ConnectionFactory;
import com.jff.test.Entity.Jvm;

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 java.io.IOException;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

@WebServlet(name = "FindAllServlet")
public class FindAllServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        try {
            Class.forName("com.mysql.jdbc.Driver");
        // 数据库连接字符串
            String url = "jdbc:mysql://localhost:3308/test?useUnicode=true&characterEncoding=utf-8";
            // 数据库用户名
            String username = "root";
            // 数据库密码
            String password = "123456";
            // 创建Connection连接
            Connection conn = DriverManager.getConnection(url, username,
                    password);
            // 添加图书信息的SQL语句
            String sql = "select * from jvm";
            // 获取Statement
            Statement statement = conn.createStatement();

            ResultSet resultSet = statement.executeQuery(sql);

              List<Jvm> list = new ArrayList<Jvm>();
            while (resultSet.next()) {

                Jvm jvm= new Jvm();
                jvm.setId(resultSet.getInt("id"));
                jvm.setBytes(resultSet.getInt("bytes"));
                jvm.setInstances(resultSet.getInt("instances"));
                jvm.setClass_name(resultSet.getString("class_name"));
                jvm.setNum(resultSet.getInt("num"));
                list.add(jvm);
                System.out.println("id: "+jvm.getId());

            }
            request.setAttribute("list", list);
            resultSet.close();
            statement.close();
            conn.close();
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
        request.getRequestDispatcher("index.jsp").forward(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

web.xml

这里就放一些servlet的映射关系

<servlet>
    <servlet-name>InsertServlet</servlet-name>
    <servlet-class>com.jff.test.Servlet.InsertServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>InsertServlet</servlet-name>
    <url-pattern>/InsertServlet</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>FindAllServlet</servlet-name>
    <servlet-class>com.jff.test.Servlet.FindAllServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>FindAllServlet</servlet-name>
    <url-pattern>/FindAllServlet</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>DelServlet</servlet-name>
    <servlet-class>com.jff.test.Servlet.DelServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>DelServlet</servlet-name>
    <url-pattern>/DelServlet</url-pattern>
</servlet-mapping>
原创文章 2 获赞 5 访问量 528

猜你喜欢

转载自blog.csdn.net/EndlessJF/article/details/106128259