第一次上机面试经历,刚进入一个小会议,简单面试了十几分钟,剖析了我的两个本创项目,这家公司还可以,很会打击人,他说我这个项目看着高达上,其实很简单。还夸了我成绩好,没问我什么技术栈,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>