简介:JavaWeb仓库管理系统项目源码是一套基于JavaWeb技术栈的完整仓库管理应用,面向初、中级Java开发者以及需要完成课程设计或毕业设计的在校生,覆盖库存入库、出库、查询盘点、预警和统计报表等常见业务场景。压缩包共70个文件、约8.47MB,包含16个Java源文件、43张JPG操作截图、2个PSD界面源文件、MDB数据库文件及安装说明文档,既有可运行代码,也提供界面设计稿与部署指引,便于对照学习与二次开发。已有1607人浏览学习,是较受欢迎的仓库管理参考项目。整套源码采用MVC分层设计,实现登录注册、商品管理、入库出库、库存查询和权限控制等核心模块,并结合Spring Boot、MyBatis等主流框架,同时保留完整项目结构与数据库脚本,可帮助开发者掌握从需求分析、数据库设计到编码实现、测试部署的JavaWeb实战流程,尤其适合用来理解企业级仓库系统的组织方式。
1. 拿到的不是代码,是一整套环境依赖:Javaweb仓库管理系统源码包先看这三点
如果你是奔着“Javaweb仓库管理系统源码”来的,多半是期末课设、毕业设计,或者公司里让你先跑通一套老系统。这个 zip 解压后并不是一个双击就能运行的 exe,而是一个典型的 Javaweb 工程:Servlet + JSP + MySQL,后端按 controller/service/dao 分层,前端可能是 EasyUI、Layui 或纯 JSP 页面。反直觉的结论是:这套源码能不能跑起来,80% 取决于你的 JDK、Tomcat、MySQL 版本是否配对,而不是代码本身写得对不对。适合刚学完 JavaWeb 想找一个完整案例的人,或者需要快速交付一套入库、出库、库存查询功能的后端开发。拿到压缩包先做三件事:找有没有 .sql 脚本、看 WEB-INF/lib 里有哪些 jar 包、打开 web.xml 确认 Servlet 版本。这三样能决定你是花十分钟跑通,还是花一整天改依赖。
2. 拆解源码包:Javaweb仓库管理系统的技术栈与目录结构,导入前先分清三层
2.1 从web.xml看项目年代:Servlet/JSP还是SpringMVC?
拿到 zip 先别急着解压到桌面,先用解压工具看列表。这类项目源码通常压缩包里有 src、WebRoot(有的叫 webapp)、WEB-INF/lib、sql 脚本。先打开 WEB-INF/web.xml,看清 servlet-class 用的是 javax.servlet 还是 org.springframework,基本就能判断后面用 IDEA 要配置成什么样。
我一般会做三件事:用 7zip 或 WinRAR 直接在压缩包内预览目录,不急着解压;在 lib 目录里找有没有 spring-web、mybatis 等 jar 包,没有的话说明是纯 JDBC 项目;再看有没有 .sql 结尾的文件。三样都齐,说明这是一个完整的 javaweb 项目完整案例,而不是只给了几张页面。反过来,如果压缩包里只有 src 和 jsp,没有 lib 也没有 sql,那你后面得自己补依赖和建表,工作量直接翻倍。
用命令看目录结构可以这样,Linux 或 macOS 下:
unzip -l Javaweb仓库管理系统项目源码.zip | head -60这行命令只是预览压缩包内容,不真正解压。head -60 是只看前 60 行,避免一次性刷屏;如果文件名是中文,在终端里可能乱码,这是操作系统编码问题,不影响后续导入。Windows 下可以在资源管理器里双击打开压缩包,也能看到同样的目录。
接下来打开 web.xml,确认架构。一个典型的老项目长这样:
<?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_3_1.xsd" version="3.1"> <display-name>WarehouseManager</display-name> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> </web-app>看到 version="3.1",说明 Servlet 3.1,配 Tomcat 8 或 9 一般没问题;如果 version="2.5" 甚至 "2.4",建议直接上 Tomcat 7/8,不要在 Tomcat 10 里折腾,因为 Tomcat 10 已经把包名换成了 jakarta.*,老代码会报 ClassNotFoundException。这一步能帮你排除掉后期一堆 Tomcat 黑匣子问题。
还要注意 web.xml 里有没有 filter。仓库管理系统一般会有两个过滤器,一个是字符编码过滤器,把请求和响应统一转成 UTF-8;另一个是登录过滤器,拦截没有 session 的请求跳回 login.jsp。如果你看到这两个 filter,说明作者已经处理了常见坑;如果只有一个 SpringMVC 的和字符编码相关的 filter,说明是个混合项目。不管哪种,先记录两个信息:Servlet 版本、Filter 数量。
2.2 源码包的目录里藏着什么:src、WebRoot、lib、数据库脚本各管哪一摊
下面把典型 Javaweb 仓库管理系统项目的目录拆开讲。结构一般是这样的:
src/ com/warehouse/ controller/ # Servlet:登录、入库、出库、用户管理 service/ # 业务逻辑:库存扣减、超储预警 dao/ # JDBC操作:PreparedStatement entity/ # 实体类:Goods、Supplier、Order util/ # DBHelper、StringUtils filter/ # 字符编码过滤器、登录过滤器 WebRoot/ WEB-INF/ web.xml lib/ # mysql-connector-java-5.1.xx.jar 等 classes/ # 编译后的class(老项目可能带) css/ js/ images/ admin/ # 后端页面:goods_list.jsp、order_add.jsp login.jsp # 登录页 database/ warehouse.sql # 建库建表+初始数据这个结构是典型的 Servlet+JSP 分层项目。src 下的 controller 里都是继承 HttpServlet 的类,例如 LoginServlet、GoodsServlet;service 层做库存扣减、超储判断;dao 层是 JDBC 代码,用 PreparedStatement 防止 SQL 注入。如果源码包没有 service 层,只有 dao 直接操作数据库,也不是不行,只是代码复用差,后期改起来脑壳疼。
WebRoot 下有 css/js/images 这些静态资源,admin 文件夹放的才是后台管理页面,像商品列表、入库单、出库单,都是 JSP。这个时候要注意,JSP 编译需要 Tomcat 运行,不能在 IDEA 里直接右键 Run。很多人把 login.jsp 双击打开,浏览器显示源码或 502,原因就在这里。
WEB-INF/lib 是别人帮你准备好的 jar 包。看到 lib 里有 mysql-connector-java-5.1.49.jar,数据库驱动类就写 com.mysql.jdbc.Driver;如果换成 mysql-connector-java-8.0.x.jar,驱动类要写成 com.mysql.cj.jdbc.Driver。URL 里也要加 serverTimezone,不然启动后一登录就报时区错误。这一步不需要改代码,但要记录下 lib 里的驱动版本,后面第 3 章要用。
还有一个容易漏掉的地方:web.xml 里如果配置了 servlet-mapping,URL 路径要和实际 Servlet 的 @WebServlet 一致。老项目经常同时在 web.xml 和代码里配注解,结果注解没标,web.xml 引用了不存在的类,Tomcat 启动时会报 ClassNotFoundException。遇到这种情况,先看 web.xml 里的<servlet-class>标签是否存在对应 class 文件。
2.3 数据库脚本怎么用:先建库后导表,别跳过授权语句
仓库管理系统一定会带数据库脚本。打开 .sql 文件,先看开头是 CREATE DATABASE 还是 USE。不要直接在 Navicat 里全选执行。很多人的踩坑经历是:脚本里没有 CREATE DATABASE,只有 USE warehouse,而本地又没有这个库,导致报错“No database selected”。
命令行导入比较稳,Linux 和 macOS 下:
mysql -u root -p -e "source /path/to/warehouse.sql"Windows 下可以先进入 mysql 的 bin 目录,再执行:
mysql -u root -p mysql> source D:/download/warehouse.sql;source 命令对编码更友好,尤其当 .sql 文件是 UTF-8 编码时。导入后确认表数量:
mysql -u root -p -e "show tables from warehouse;"正常来说,项目会有 t_user、t_goods、t_supplier、t_instock、t_outstock 这几类表,总数在 6 到 15 张之间。如果表非常多但全是空表,要注意登录账号可能没初始化,你需要手动 INSERT 一条管理员记录。如果表非常少只有三张,说明功能精简,可能是只带登录和入库出库的简化版。
还要看一下 SQL 脚本里有没有 INSERT 语句。拿仓库管理系统的常见用户表来说:
INSERT INTO t_user (username, password, realname, role) VALUES ('admin', 'admin123', '系统管理员', 'admin');如果脚本里没这一条,或者密码是加密函数生成的 MD5 值,那你登录的时候要把密码输入成密文对应的明文,或者自己改 SQL 重新导入。这里顺便提醒一句:老项目默认密码是弱口令,比如 admin、123456、admin123,登录后可别继续用,至少先把后台密码改了。
到这里,你已经拿到了三个关键结论:项目是 Servlet 还是 SpringMVC、lib 里驱动版本是多少、登录账号有没有写在 SQL 里。这三个结论正好对应下一步在 IDEA 里的三个配置项:Web Facet 类型、数据库驱动类、登录初始账号。
3. 用IDEA把Javaweb仓库管理系统跑起来:从zip到浏览器可见的最小命令
3.1 直接用IDEA打开还是一个空工程导入?两种方式对比
源码包解压后,IDEA 用户会遇到两个选择。第一种,File > Open 直接选择解压后的文件夹。好处是保留原有目录结构,IDEA 会识别出项目名;坏处是如果项目不是 Maven 结构,IDEA 不会自动把 src 标记为源码目录,需要手动修复。第二种,新建一个 Java Enterprise 空项目,再把 src 和 WebRoot 复制进去。这种适合源码包里带着 .idea 目录但版本冲突的情况,但复制来复制去,容易漏文件。我更推荐第一种,因为老项目作者自己用 Eclipse 或 IDEA 导出时,目录结构是完整的,直接 Open 后只要做三件事:设置 Project SDK、设置 Modules 的 Sources 标记、设置 Web Facet 的 Document Root。
Project SDK 怎么配?File > Project Structure > Project,让 Project SDK 选 JDK。这里有个小坑:本机装的是 JDK 8,但项目里可能已经有了一个 Module SDK 指向不存在的 JDK 版本,IDEA 编译时会报“invalid JDK”。所以建议把所有 Module SDK 全部改成同一个版本,不要一模块一个版本。对这套源码,JDK 8 是最稳妥的,Tomcat 8.5 或 9.0 都可以;JDK 11 也能跑,但老项目里有些反射代码可能在模块化环境下有变化,新手别给自己加难度。
设置 Sources 标记:在 Project Structure > Modules 里,选中 src 目录,点蓝色 Sources 图标,让 IDEA 知道这是 java 代码的根目录;WebRoot 下的 WEB-INF 不用标;如果项目里有 test 目录,也可以标记为 Tests。这一步没做,IDEA 无法编译 Java 文件,运行时会报“java: package com.warehouse.util does not exist”。
Web Facet 和 Artifact 是 idea 运行 javaweb 项目配置里最容易迷路的地方。打开 Project Structure > Facets,点 +,选 Web,然后修改 Web Resource Directory,把默认的 webapp 替换成你项目里的 WebRoot,再把 WEB-INF/web.xml 选进去。这一步是让 IDEA 能识别 JSP 和静态资源;如果不做,后面 Deployment 时没有可部署的 Web 内容。
3.2 配置Tomcat与Artifact:跑通本地URL的5个必调参数
配置 Tomcat 前,先确认 Tomcat 版本和 JDK 匹配。JDK 8 + Tomcat 8.5 是绝配,JDK 11 + Tomcat 9 也常见。这里说的 Tomcat 8.5 不等于 8.0,8.0 太老,有些新库不兼容。下完 Tomcat 后,IDEA 里到 Run/Debug Configurations,点加号,选 Tomcat Server > Local。然后逐个检查这 5 个参数,我每次配老项目都会看一眼,哪次图省事就会翻车:
第一,Application server 选择本地 Tomcat 主页目录,比如 C:/apache-tomcat-8.5.xx。选错目录会直接提示“The selected directory is not a Tomcat server”。
第二,Deployment 标签页,点 +,选 Artifact。如果列表是空的,先去 Artifacts 建一个。Artifact 类型选 war exploded,不要选 war。exploded 模式不用打包,启动快,修改了类还能热部署,war 要重新构建才能生效。
第三,Application context 栏,一般填 /wh,表示访问根路径。这个值要和你 web.xml 里的 welcome-file 逻辑一起看。如果 web.xml 里没配 context,默认是 “/”,那访问路径就是 http://localhost:8080/。不过仓库管理系统这种多个后台模块的,通常有一个单独 context 名,你可以自己在 Tomcat 配置里加一个 context path。
第四,HTTP port 默认 8080,如果本机有其他服务占用,改成 8081。改了端口后,浏览器访问地址必须跟着改,这是很多新手访问不了页面的原因:IDEA 自动打开的地址还是 8080。
第五,VM options 里加 -Dfile.encoding=utf-8。不加的话,控制台打印中文日志全乱码,页面取参数也可能出现乱码。老项目里 JSP 用 GBK 的话,这一步要改成 gbk,但为了统一,建议全部 UTF-8。
下面是一个 Tomcat context 配置示例,如果你需要手工改 server.xml,可以参照这个:
<Context path="/wh" docBase="F:/workspace/warehouse/WebRoot" reloadable="true" />重点是 path 要和 IDEA 里的 Application context 保持一致。如果 path 配成 /wh,但 IDEA 里 Deployment 的 Application context 是 /,访问 localhost:8080/wh/login.jsp 就会 404,访问 localhost:8080/login.jsp 却正常。这种一半通一半不通的情况,十有八九是 context 路径没对上。
3.3 连接MySQL:导入sql脚本并修改jdbc.properties
数据库连接配置通常放在 src/db.properties、src/jdbc.properties,有些直接写在 DBHelper.java 里。推荐先全局搜索“jdbc:mysql”,定位所有连接字符串。老项目写法如下:
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/warehouse?useUnicode=true&characterEncoding=utf8 jdbc.username=root jdbc.password=123456如果你本机装的是 MySQL 5.7,这套代码基本不用改。但如果你的 MySQL 是 8.0 以上,直接跑会有两个问题:一是 ClassNotFoundException,因为驱动类名变了;二是 Server returns invalid timezone,因为 8.0 默认要求带时区参数。我会统一改成这样:
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/warehouse?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true jdbc.username=root jdbc.password=你的密码allowPublicKeyRetrieval=true 这个参数很容易被忽略。MySQL 8.0 默认用 caching_sha2_password 认证,本地连接时会报 Public Key Retrieval is not allowed,加上这个参数就绕过去了。useSSL=false 是因为本地开发不需要 SSL 加密,不然会有一堆证书警告。
有时代码里没有 properties 文件,是下面这种 java 类:
private static final String URL = "jdbc:mysql://localhost:3306/warehouse?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false"; private static final String USER = "root"; private static final String PASSWORD = "123456";把 USER 改成你本机数据库的账号,PASSWORD 改成对应密码。改完之后,顺手检查 WEB-INF/lib 下有没有 mysql 驱动 jar。如果没有,可以去 maven 仓库下载一个 mysql-connector-java-8.0.30.jar 放进 lib。这里注意,lib 目录里的 jar 包要被 IDEA 当成依赖,需要在 Project Structure > Modules > Dependencies 里添加 lib 目录,或者让 IDEA 自动把 WEB-INF/lib 引入。如果你没看到 jar 包出现在 External Libraries 里,运行起来必然报 ClassNotFoundException。
3.4 启动与访问:浏览器地址栏到底输什么
配置完成后,点右上角绿色三角启动。IDEA 会自动打开浏览器,显示的 URL 来自 Run Configurations 里的 Deployment 生成。常见三种结果:能打开登录页、打开 404、打开一个目录列表。目录列表说明你的 Web Facet 没有正确指向 WebRoot,或者 welcome-file 没配;404 要看路径;能打开登录页就直接进入下一步登录测试。
如果自动打开的地址不对,手动输入 http://localhost:8080/wh/login.jsp。这里提醒一下:访问根路径和访问 login.jsp 是两回事。welcome-file 配置了 login.jsp,根路径才会自动跳转到登录页;如果 welcome-file 没配,根路径可能显示 Tomcat 默认主页,或者直接 404。这时候手动敲 login.jsp 就能判断是不是 welcome-file 的问题。
启动时看日志,看到这两行才说明启动完成:Deploying web application archive ... 和 Server startup in [xxx] milliseconds。如果只看到 Connected to server 就急着访问,Tomcat 还没部署完成,肯定报 404。
4. Javaweb仓库管理系统避坑手册:版本对齐、乱码和404的排查顺序
4.1 先别急着搜报错:把这三个日志位置记牢
老 Javaweb 项目跑不起来,错经常不在同一处。IDEA 控制台、Tomcat 本地日志、MySQL 日志,三个位置要分清楚。IDEA 控制台把 Tomcat 的 stdout 和 System.out 混在一起,报错常常被刷掉;此时去 Tomcat 安装目录的 logs 下看 catalina.out 和 localhost.log,能看到更完整的堆栈。MySQL 日志一般也在安装目录的 data 目录或者通过 mysql 的 general_log 配置查看,但大多数情况下,先用 Navicat 测试连接就能定位数据库问题。
我自己的排查顺序是:先看 IDEA 底部控制台有没有红色 Exception;没有的话,打开浏览器看 HTTP 状态码;404 找 URL 和 Artifact,500 找后台日志;如果页面正常但数据为空,去 MySQL 命令行直接查询,判断是 SQL 问题还是连接问题。这样能避免在黑匣子里瞎猜。
4.2 现象:Tomcat启动成功但页面404
原因:Artifact 没加进 Deployment,或者 Application context 配错,或者 Web Facet 的 Document Root 指错。
解决:先打开 Run/Debug Configurations,看 Deployment 标签页里有没有 Artifact。没有就用右上角 Fix 按钮自动补,或者去 Project Structure > Artifacts 手动创建。再看 Document Root 是否指向 WebRoot。如果你在浏览器访问 http://localhost:8080/wh/,但 Tomcat 里实际 context 是 /,那直接访问 http://localhost:8080/login.jsp 试试,能开就说明是 context 路径不一致,把 IDEA 里的 Application context 改成 /wh,或者去掉访问路径里的 wh。
4.3 现象:控制台中文乱码,登录页面偶尔出现问号
原因:JSP 文件编码、请求参数编码、数据库连接编码没有统一。老项目里 JSP 可能写成 pageEncoding="GBK",而 Tomcat 连接器默认 URIEncoding 是 UTF-8,表单提交的中文到后端就乱码了。
解决:先改 JSP 第一行,统一用 pageEncoding="UTF-8"。再检查 web.xml 里有没有 CharacterEncodingFilter,如果没有加一个:
<filter> <filter-name>encodingFilter</filter-name> <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>最后在 MySQL 命令行里执行 SET NAMES utf8mb4,重新导入 SQL。如果数据库表本身就是 utf8_general_ci,那前两步做了基本能解决。需要注意的是,如果你用的是 MySQL 5.7 且没有 utf8mb4,那 utf8 也可以,但表情符号会丢,仓库管理系统字段里一般没有 emoji,所以不是重点。
4.4 现象:Tomcat启动后秒退,端口被占用
原因:上一次启动的 Tomcat 进程没关干净,或者其它服务(比如 Nginx、IIS)占了 8080。有些项目里配置文件把端口写死成 8080,你改了 IDEA 的 HTTP port 但没改 server.xml,也会冲突。
解决:Windows 下执行 netstat -ano | findstr 8080,找到 LISTENING 的 pid,到任务管理器结束该进程;或者在 IDEA 里把 HTTP port 改成 8081,同时改 Tomcat 的 server.xml 里<Connector port="8080">的端口保持一致。这里有一个细节:IDEA 里 Tomcat 配置有两个端口,一个是 HTTP port,一个是 JMX port,JMX 默认 1099 也可能被占,遇到 “Address already in use: JVM_Bind” 就检查 JMX port,把它改成 10991 之类的。这个问题经常伪装成 Tomcat 启动失败,实际是 JMX 端口冲突。
4.5 现象:ClassNotFoundException: com.mysql.jdbc.Driver
原因:mysql 驱动 jar 不在运行时 CLASS_PATH 里。有的项目把 jar 放在 WebRoot/WEB-INF/lib,但 IDEA 没有把它添加到 Artifact 的输出里;有的项目 lib 目录里根本没驱动,需要自己下载。
解决:先看 lib 目录里到底有哪些 jar。如果里面没有 mysql-connector,去下载一个对应版本的驱动,5.7 用 5.1.49,8.0 用 8.0.30,放入 lib。然后 Project Structure > Artifacts,在 Output Layout 里展开 WEB-INF/lib,看是否出现驱动 jar。如果没有,右键加一个 Copy of Library Files。这里最容易踩坑的是:lib 里的 jar 在左侧 Project 视图里能看到,但 Artifact 输出时没打进去,编译不报错,一运行就 ClassNotFoundException。
4.6 现象:登录页面打开,但点登录后跳转空白或500
原因:数据库连接失败、t_user 表没初始数据、Servlet 路径映射错误都有可能。老项目里最容易出现的是登录 SQL 从 t_user 里查不到记录,然后程序返回 null 导致 NPE。
解决:先在 MySQL 命令行里执行 SELECT * FROM warehouse.t_user;,确认有数据。没有数据就 INSERT 一条。再检查登录 Servlet 里的 URL 映射:web.xml 里<url-pattern>/login</url-pattern>,但页面上<form action="loginServlet">,大小写一不对就 404。把表单 action 改成和映射完全一致。还有一个小细节:仓库管理系统的 Servlet 大多用 doGet 和 doPost,如果你改了表单 method 为 GET,而 Servlet 只写了 doPost,会跳转空白。
以上避坑记录是基于常见老 Javaweb 项目的共性。这里提到的现象、原因、解决,每一步都能直接对应到你的源码包上。如果问题还不明确,就用第 4.1 节的方法看日志,日志里 Caused by 那一行往往能直接告诉你缺什么。
5. 把这套Javaweb仓库管理系统变成自己的:报表统计、权限点改造和一条启动验证技巧
5.1 从复制到交付:先改三处再谈二开
如果你的目标是课设答辩或公司交付,拿到源码后别急着加功能,先做三件事:改登录页标题和版权信息;给管理员的密码加密存储;把出库、入库的操作日志留到数据库。这三处做完,代码看起来就成了你自己的。
仓库管理系统的核心不只增删改查,还有库存台账。出库时扣减库存,入库时增加库存,这些逻辑一般写在 service 层或 DAO 层。改功能前,先把代码里所有直接执行 UPDATE t_goods SET stock = stock - ? 这种 SQL 找出来,改成在事务里同时写入 t_outstock 表,这样库存变动有了记录,答辩时老师问数据一致性,你就有内容讲。
还有一个常用进阶是给用户表加一个 role 字段,然后通过 JSP 页面的标签拦截按钮。老项目通常全部页面都放出来,你可以在用户登录后把 role 存进 session,在需要管理员权限的操作入口加判断条件,比如:
Object role = session.getAttribute("role"); if (!"admin".equals(role)) { response.sendRedirect("403.jsp"); return; }这段代码只是示例,你在 Servlet 的 doPost 方法里加上即可。注意这里的字符串 “admin” 要和数据库里 role 列的值完全一致,否则误判。
报表统计方面,最简单的方法是写一个库存预警 Servlet,查询低于安全库存的商品:
String sql = "SELECT * FROM t_goods WHERE stock < safe_stock";配合一个 JSP 展示列表,就能实现低库存提醒。这个功能不复杂,但能明显提升项目完整度。
5.2 启动后怎么判断真的跑通了:三分钟自检
点了运行按钮不代表项目没问题,我习惯用三个步骤做自检。第一步,打开浏览器访问 login.jsp,页面样式能正常加载,说明静态资源和 JSP 没有 404。第二步,输入 SQL 脚本里初始化的账号密码,能跳转到主页面,说明数据库连接和用户表没问题。第三步,新增一条入库单,再去商品列表查看库存数量是否增加,这说明核心业务逻辑跑通了。三步全过,这套源码才算真正属于你。
如果到了第三步发现库存没变,先别改代码,打开数据库看 t_goods 里实际库存有没有变。如果变了但页面没变,是查询缓存问题;如果没变,是事务没提交,去 DAO 层检查 Connection 的 autoCommit 是否设置为 false 但没有执行 commit。老项目 JDBC 代码里经常会见 conn.setAutoCommit(false),后面却忘了 conn.commit(),导致数据写不进去。
最后说一个我自己的习惯:拿到任何源代码包,第一件事不是打开代码,而是把 sql 脚本、lib 目录、web.xml 三个文件先看一遍,再决定用哪个版本的 JDK 和 Tomcat。这个习惯帮我躲过了很多版本冲突,省下来的时间够我加好几个功能。希望这些记录对你的这套 Javaweb 仓库管理系统也有帮助,希望帮到你。
本文还有配套的精品资源,点击获取