具体实现功能:通过网页传输添加用户的请求,需要通过JDBC来向 MySql 添加一个用户数据
第一步,部署所有需要用到的工具
IDEA(2021.1),Tomcat(9或10),谷歌浏览器,MySql,jdk(17)
第二步,创建java项目,提前部署数据库
在 idea 中新建一个空的java项目:
我创建的数据库名为 learnbase,执行 use learnbase 命令可以使用该数据库
部署好需要连接的数据库表单,用户表 表名为 t_user,并添加好适当的数据(也可以不添加):
第三步,为项目添加一个java模块
添加一个普通的 java( jdk17)的模块即可
第四步,右键单击模块,将其变为 javaEE 的模块
右键点击后,选择Add Fra... Sup...,会弹出如下窗口
我们勾选 Web App... 后点击 OK
完成之后新增的 web 文件夹便是这个项目的根目录
第五步,将 tomcat 的 lib 文件夹中的 servlet.api.jar 和 jsp.api.jar 导入到 idea 中
file -> Project Stu... -> 找到刚刚创建的模块 -> dependen... -> + -> JAR or ... -> 找到自己安装的 tomcat 目录下的 lib -> 将servlet.api.jar,jsp.api.jar引入 -> apply
操作完毕后 jar 包会被导入到模块中:
第六步,在 src 下创建一个 servlet 文件夹,创建 servlet 实现类
第七步,完成代码的编写
ait + enter 实现 servlet 接口中的所有抽象方法
在 service 方法中编写业务代码,由于需要连接数据库使用JDBC,我们需要先引入 JDBC 相关的 jar 包,我们在 WEB-INF 目录下新建一个 lib 文件夹,将 jar 包复制到里面,右键单击 jar 包,选择 Add as Lib...,不会 JDBC 编程的可以先看我之前写的文章:JDBC 教程
引入依赖后就可以开始编写代码了
package servlet;
import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
public class UserServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
Connection con = null;
PreparedStatement ps = null;
//建立连接
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/learnbase","root","1234");
System.out.println("连接数据库成功了");
//获取数据库操作对象
ps = con.prepareStatement("insert into t_user values(hajimi,wow,66666)");
//执行sql
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
//释放资源
if(ps != null){
try {
ps.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if(con != null){
try {
con.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
//加入用户完毕,响应给浏览器
servletResponse.setContentType("text/html");
PrintWriter out = servletResponse.getWriter();
out.print("<p>option succeed!!!</p>");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
第八步,在 xml 文件中完成申请路径和实现类的对接
双击打开WEB-INF文件夹中的 mxm 文件,编写对应的反射
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>userServlet</servlet-name>
<!--设置访问路径所对应的实现类-->
<servlet-class>servlet.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>userServlet</servlet-name>
<!--设置浏览器的访问路径-->
<url-pattern>/a</url-pattern>
</servlet-mapping>
</web-app>
第九步:让 idea 关联 tomcat 服务器
点击右上角的 Add Config.... -> + -> Tomcat Server - Local -> configure -> 选择本地的 Tomcat 路径 ->
先别着急 OK,接下来是部署
点击 Deployment -> + -> Art... -> 在最下端给项目设置浏览器的访问名称
配置完后就可以点击右上角的 debug 或 运行 按钮启动 Tomcat 了(建议使用debug)
第十步:浏览器输入网址传递请求,完成数据的插入则表示运行成功
可能会遇到的问题
1.在访问时出现500错误
出现这个错误大概率是版本不适配的问题
检查环境变量的jdk版本和模块所使用的版本是否一致,若不一致,需要将jdk版本修正后重新新建一个项目,再从新部署一次
检查是否使用Tomcat10及其以上的版本,但是jdk版本却只有8及其以下,Tomcat较新的版本与Java较老的版本会出现不适配的情况
2.在访问时出现404错误
这是路径设置的问题,检查html文件和xml文件的路径是非正确,点击绿色小锤子旁边的按钮,查看浏览器输入的路径和项目名是否匹配
3.在访问时出现405错误
这是请求和响应不匹配所产生的错误,检查接收参数的名称是否和html设置的name属性的名称一致,检查设置的发送方式是否正确(本次请求使用的是post)
4.连接不到数据库
检查是否导入 数据库的 jar 包到WEB-INF下的 lib 文件夹中,一定要是 WEB-INF下的 lib 文件夹 tomcat 才能准确的找到,lib 文件夹初始是没有的,需要自己创建
检查引入 jar 包依赖后是否完成操作:右键单击依赖,选择 Add as Lib... 选项,若没有做这个操作则没有将 jar 包真正的引入项目中,完成这一步操作后 jar 包会呈现可展开状态,这才表示成功引入 jar 包依赖