- 创建基于tomcat的网页模块
参考:JavaWEB四:在IDEA(21.1版本)下部署Tomcat8
创建add.html文件
add
package com.atguigu.servlets;
import com.atguigu.bean.Customers;
import com.atguigu.jdbcutils.JdbcUtils;
import com.atguigu.optimization.CustomerDAOImpl;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;
import java.net.InetAddress;
import java.sql.Connection;
import java.text.SimpleDateFormat;
import java.util.Date;
public class AddServlet extends HttpServlet {
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) {
Connection conn = null;
try {
// post方式下,设置编码,防止中文乱码
req.setCharacterEncoding("UTF-8");
String cust_name = req.getParameter("cust_name");
String idStr = req.getParameter("cust_id");
int cust_id = Integer.parseInt(idStr);
String cust_email = req.getParameter("cust_email");
String cust_birth = req.getParameter("cust_birth");
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(cust_birth);
Customers cust = new Customers(cust_id, cust_name, cust_email,date);
conn = JdbcUtils.getConnection();
CustomerDAOImpl dao = new CustomerDAOImpl();
dao.insert(conn,cust);
System.out.println("添加成功");
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcUtils.closeResource(conn,null);
}
}
}
修改web.xml文件 xml文件的作用
① 用户发请求:action=add
② 在项目中的web.xml中的< servlet-mapping>中找到与用户请求相对应的url-pattern = /add
③ 找到和< servlet-mapping>中的servlet-name相同的< servlet>
④ 获取< servlet>中的< servlet-class>,这样就使得用户的请求同Java类对应上了
用户发送的是post请求(method=post),因此tomcat服务器会自动执行对应Java类中的doPost方法。
逻辑图 遇到的问题AddServlet com.atguigu.servlets.AddServlet AddServlet /add
在点击提交按钮后,报了空指针异常(JdbcUtils类中),原因是使用了ClassLoader
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties")
但是在JavaEE里面,要通过WebappClassLoader才能加载出来,使用 “当前类.class.getClassLoader()…”
InputStream is = JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties")
参考资料
- web项目加载配置文件报空指针异常,不能使用ClassLoader加载_jay_4am的博客-CSDN博客



