多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

Java毕设实战:JSP+Servlet+MySQL体育网站从零部署与调试

Java毕设实战:JSP+Servlet+MySQL体育网站从零部署与调试 简介本资源是一份面向计算机专业本科生的Java Web毕业设计完整方案聚焦体育资讯类网站开发解决学生在课程设计、毕设选题与工程实践中的技术落地难题。资源包含一篇结构规范的学术论文含摘要、需求分析、系统设计、数据库建模、功能实现与测试等完整章节及配套可运行源码采用JavaEE体系基于MyEclipse开发整合JSP动态页面、MySQL关系型数据库与Spring轻量级框架覆盖用户注册登录、新闻增删改查、留言互动、滚动公告、站内搜索等核心模块。压缩包为单个3.96MB的DOC文档内容即论文全文与源码说明便于直接阅读与代码复现。目前已有203人学习下载适合需要低重复率参考、远程调试支持、技术栈清晰且具备完整MVC分层实践的初学者与中级开发者。1. 这不是又一个“Java毕设模板”而是一套能跑通、能调试、能改出新功能的体育资讯站实战包含论文源码远程调试实操路径你是不是也经历过在知网搜“Java毕业设计”点开十篇八篇是“基于SSM的XX管理系统”点进源码压缩包——web/WEB-INF/web.xml里连个servlet-mapping都配错了pom.xml里Spring版本写着3.2.9.RELEASEJDK却标着17论文里写“采用Spring Boot微服务架构”代码里连application.yml都没有全是struts-config.xml这不是教学这是玄学。而这份《基于Java的体育网站的设计与实现》恰恰反其道而行之它不吹“高并发”“分布式”就老老实实做一件事——用最稳的JSPServletMySQL组合把用户注册、新闻增删、留言互动、关键词搜索这五件事在MyEclipse里从零跑通、在本地Tomcat上真机调试、在Navicat里看数据落地。它没用Spring Boot自动装配但web.xml里每个filter和servlet mapping都经得起你打断点它没上Redis缓存但NewsBean.addNews()方法里那行content.length()8000校验是你上线前必须亲手改掉的硬边界它论文第4页写着“使用SSH框架”可翻遍源码也没见Hibernate映射文件——真相是它用的是原生JDBC手动SQL拼接连PreparedStatement都没封装但正因如此你才能在addNews()方法里一眼看清参数怎么绑定、异常怎么抛、事务怎么回滚。它适合谁适合大三下刚学完Servlet生命周期、想交一份答辩时敢现场改bug的毕设的同学适合导师要求“必须本地可运行、数据库可查、登录流程可走通”的硬核验收场景更适合那些被“低重复率”逼到绝境、需要真实业务逻辑比如“用户找回密码需验证安全问题邮箱双因子”来填充论文字数的实战派。这不是玩具是能让你在答辩PPT第12页点开Chrome开发者工具Network面板指着/login.do?usernameadminpassword123的请求响应说“老师这里我加了防暴力破解的session计数器”的底气来源。2. 从MyEclipse工程结构到Tomcat部署手把手还原原始开发环境含JDK8/Tomcat7/MySQL5.7兼容性清单2.1 工程目录结构解剖为什么src/下没有com.xxx.controller而全是.java裸文件打开源码包里的WebRoot/目录注意不是src/main/webapp你会看到典型的Java Web老项目结构WebRoot/ ├── index.jsp ← 首页含滚动公告JS调用 ├── login.jsp ← 登录表单action指向/login.do ├── news/ │ ├── index.jsp ← 新闻列表页含分类筛选下拉框 │ ├── detail.jsp ← 单条新闻详情含评论区form │ └── edit.jsp ← 管理员新闻编辑页含title/fenlei/infoContent字段 ├── user/ │ ├── register.jsp ← 两步注册用户名校验详细信息填写 │ └── profile.jsp ← 用户个人中心含密码修改、留言管理 ├── WEB-INF/ │ ├── web.xml ← 核心所有servlet/filter在此注册 │ ├── lib/ ← 包含mysql-connector-java-5.1.18.jar等6个jar │ └── classes/ ← 编译后的.class文件关键说明源码是直接编译的 └── js/ ← jquery-1.8.3.min.js 自定义validate.js提示这个结构决定了它无法直接导入IDEA作为Maven项目。WEB-INF/classes/的存在说明作者是在MyEclipse里右键→Run As → Run on Server直接编译部署的class文件没走target/目录。你要复现必须用MyEclipse或配置成Dynamic Web Project。src/目录下没有包结构而是平铺着Constant.java、NewsBean.java、SystemBean.java等文件——这是本项目最真实的“血泪经验”它没用MVC分层所有业务逻辑揉在Bean里。比如NewsBean.java同时干三件事封装数据库操作addNews()调用insert into news...处理业务规则if(content.length()8000)承担部分Controller职责request.getRequestDispatcher(...).forward()这种写法在现代开发中叫“反模式”但在毕设场景里却是降低调试复杂度的最优解你打个断点在NewsBean.addNews()第一行就能看到title、fenlei、content三个参数如何从JSP表单传入不用在Controller→Service→DAO三层里跳来跳去。2.2web.xml核心配置解析servlet mapping、filter链与编码陷阱WEB-INF/web.xml是整个项目的神经中枢必须逐行理解。以下是关键片段及参数说明?xml version1.0 encodingUTF-8? web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaee xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd version3.1 !-- 1. 全局编码过滤器解决中文乱码的生死线 -- filter filter-nameCharacterEncodingFilter/filter-name filter-classfilter.CharacterEncodingFilter/filter-class init-param param-nameencoding/param-name param-valueUTF-8/param-value !-- 必须与JSP pageEncoding一致 -- /init-param /filter filter-mapping filter-nameCharacterEncodingFilter/filter-name url-pattern/*/url-pattern !-- 拦截所有请求 -- /filter-mapping !-- 2. Servlet注册所有业务入口都在这里 -- servlet servlet-nameLoginServlet/servlet-name servlet-classservlet.LoginServlet/servlet-class /servlet servlet-mapping servlet-nameLoginServlet/servlet-name url-pattern/login.do/url-pattern !-- JSP表单action必须匹配 -- /servlet-mapping servlet servlet-nameNewsServlet/servlet-name servlet-classservlet.NewsServlet/servlet-class /servlet servlet-mapping servlet-nameNewsServlet/servlet-name url-pattern/news.do/url-pattern /servlet-mapping !-- 3. Session超时设置防止答辩时演示卡死 -- session-config session-timeout30/session-timeout !-- 单位分钟 -- /session-config /web-app参数说明与踩坑点url-pattern/login.do/url-pattern这是硬编码约定login.jsp里form action/login.do必须严格匹配少个斜杠或大小写错误都会404。init-param中的encoding值必须为UTF-8且要与所有JSP顶部的% page contentTypetext/html;charsetUTF-8 %保持一致否则用户注册时输入“张三”会变成“å¼ ä¸‰”。session-timeout30/session-timeout答辩演示时若超过30分钟没操作Session失效导致登录态丢失。建议答辩前在web.xml里临时改为120演示完再改回来。2.3 Tomcat7部署四步法从war包生成到首页访问含端口冲突排查本项目明确适配Tomcat7非8或9因为web.xml声明了version3.1而Tomcat7.0.47才完全支持。部署步骤如下步骤1确认JDK与Tomcat版本兼容性组件推荐版本为什么必须匹配JDK1.8.0_202mysql-connector-java-5.1.18.jar编译于JDK8用JDK11会报Unsupported major.minor version 52.0Tomcat7.0.94web.xml中web-app version3.1要求Servlet3.1容器Tomcat7.0.47满足MySQL5.7.32Navicat for MySQL界面截图显示版本号且user_info表用varchar(50)存密码明文5.7默认字符集utf8mb4兼容注意若你本地已装Tomcat8/9请不要卸载而是下载Tomcat7绿色版解压到新目录如D:\tomcat7避免端口冲突。步骤2生成war包MyEclipse操作右键项目 →Export→WAR fileDestination:D:\tomcat7\webapps\sports.war文件名必须小写不能含空格勾选Export source files确保src/下.java文件被打包点击Finish等待生成完成步骤3启动Tomcat并验证部署# 进入Tomcat bin目录 cd D:\tomcat7\bin # 启动Windows startup.bat # 观察控制台输出直到出现 # INFO: Server startup in XXXX ms # INFO: Deploying web application archive [D:\tomcat7\webapps\sports.war]此时访问http://localhost:8080/sports/应看到网站首页。若报404检查D:\tomcat7\webapps\下是否有sports\文件夹war包会自动解压查看D:\tomcat7\logs\catalina.out搜索ERROR常见原因是mysql-connector-java-5.1.18.jar未放入WEB-INF/lib/步骤4解决端口占用8005/8080/8009若启动失败报Address already in use: JVM_Bind8005端口Tomcat shutdown端口被其他Java进程占用 → 任务管理器结束java.exe8080端口被QQ、迅雷等软件占用 → 修改conf/server.xml!-- 将8080改为8081 -- Connector port8081 protocolHTTP/1.1 connectionTimeout20000 redirectPort8443 /8009端口AJP连接器被IIS占用 → 同样在server.xml中注释掉Connector port8009 ... /3. 数据库设计与Navicat实操从ER图到可执行SQL脚本含外键约束与索引优化3.1 三张核心表结构精读为什么user_info表有user_question却没user_answer根据论文第17页的表结构我们还原出实际建表SQL已修正原文笔误-- 1. user_info表存储普通用户信息注意管理员账号在另一张表 CREATE TABLE user_info ( user_id int(10) NOT NULL AUTO_INCREMENT COMMENT 主键ID, user_name varchar(50) NOT NULL COMMENT 用户名唯一, user_pw varchar(50) NOT NULL COMMENT 密码明文, user_realname varchar(50) DEFAULT NULL COMMENT 真实姓名, user_sex varchar(10) DEFAULT NULL COMMENT 性别, user_bir int(10) DEFAULT NULL COMMENT 生日年份, user_sheng varchar(50) DEFAULT NULL COMMENT 省, user_city varchar(50) DEFAULT NULL COMMENT 城市, user_tel varchar(50) DEFAULT NULL COMMENT 电话, user_email varchar(50) NOT NULL COMMENT 邮箱用于找回密码, user_question varchar(50) NOT NULL COMMENT 安全问题, user_answer varchar(50) NOT NULL COMMENT 安全答案原文漏写必须补, PRIMARY KEY (user_id), UNIQUE KEY user_name (user_name) -- 唯一索引防止重名 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; -- 2. admin_user表独立存储管理员账号与user_info分离 CREATE TABLE admin_user ( id int(10) NOT NULL AUTO_INCREMENT, username varchar(50) NOT NULL COMMENT 管理员用户名, password varchar(50) NOT NULL COMMENT 管理员密码, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; -- 3. news_info表新闻主表原文goods_*字段名是笔误应为news_* CREATE TABLE news_info ( news_id int(10) NOT NULL AUTO_INCREMENT COMMENT 新闻ID, news_title varchar(100) NOT NULL COMMENT 新闻标题, news_fenlei varchar(20) NOT NULL COMMENT 新闻分类NBA/足球/奥运等, news_content text NOT NULL COMMENT 新闻内容, news_addtime datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 发布时间, news_adder varchar(50) NOT NULL COMMENT 发布者对应admin_user.username, news_visit int(10) NOT NULL DEFAULT 0 COMMENT 访问量, PRIMARY KEY (news_id), KEY idx_fenlei (news_fenlei) -- 分类字段加索引加速搜索 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;关键设计逻辑说明管理员与用户分离admin_user表独立存在避免在user_info里用role字段区分降低权限判断复杂度。登录时先查admin_user失败再查user_info。安全问题双因子user_question和user_answer必须成对出现论文图4-6“找回密码”流程依赖此字段。若建表时漏掉user_answer点击“提交答案”会报SQLException: Column user_answer not found。索引优化KEY idx_fenlei (news_fenlei)是性能关键。当用户在搜索模块选择“NBA”分类时SQLSELECT * FROM news_info WHERE news_fenleiNBA能走索引而非全表扫描。3.2 Navicat for MySQL 12.0.25 实操指南可视化建库与数据初始化本项目明确使用Navicat论文第3页提及而非命令行。以下是零基础操作步骤1创建数据库打开Navicat → 连接MySQL主机localhost端口3306用户名root密码123456右键连接名 →新建数据库数据库名:sports_db必须与代码中jdbc:mysql://localhost:3306/sports_db一致字符集:utf8mb4→排序规则:utf8mb4_unicode_ci兼容emoji避免新闻标题含表情时报错步骤2执行建表SQL右键sports_db→查询→新建查询粘贴上述三张表的CREATE TABLE语句 → 点击运行刷新左侧表列表确认user_info、admin_user、news_info出现步骤3插入初始测试数据让首页不为空-- 插入管理员账号用户名admin密码123 INSERT INTO admin_user (username, password) VALUES (admin, 123); -- 插入一条测试新闻分类NBA标题马刺夺冠 INSERT INTO news_info (news_title, news_fenlei, news_content, news_adder) VALUES (马刺队时隔五年再夺NBA总冠军, NBA, 北京时间6月20日圣安东尼奥马刺队在总决赛第七场以112-108击败迈阿密热火队..., admin); -- 插入一个测试用户用户名test密码123安全问题“你妈妈姓什么”答案“王” INSERT INTO user_info (user_name, user_pw, user_email, user_question, user_answer) VALUES (test, 123, testexample.com, 你妈妈姓什么, 王);提示执行后刷新表数据news_info表应有1条记录user_info表有1条admin_user表有1条。首页index.jsp的新闻列表和登录框才能正常渲染。3.3 JDBC连接池配置为什么db.properties里写的是com.mysql.jdbc.Driver项目使用原生JDBC非DBCP/C3P0连接信息藏在src/db.propertiesdrivercom.mysql.jdbc.Driver urljdbc:mysql://localhost:3306/sports_db?useUnicodetruecharacterEncodingUTF-8 usernameroot password123456参数详解与避坑drivercom.mysql.jdbc.Driver这是MySQL5.x的驱动类名。若你用MySQL8.x必须改为com.mysql.cj.jdbc.Driver否则报ClassNotFoundException。url中的?useUnicodetruecharacterEncodingUTF-8强制URL参数编码解决http://localhost:8080/sports/news.do?methodSEARCHkeyword马刺中中文参数乱码。password123456明文密码仅限本地开发。答辩演示时建议改成简单密码如123避免导师现场输错。4. 核心功能模块调试实录注册/登录/新闻增删的断点追踪与参数验证4.1 用户注册流程从register.jsp到RegisterServlet的完整链路注册是第一个接触的业务也是最容易翻车的环节。我们按请求顺序追踪前端register.jsp两步式表单!-- 第一步用户名校验 -- form actionregister2.jsp methodpost 用户名input typetext nameusername idusername / button typebutton onclickcheckUsername()检查用户名/button /form !-- 第二步详细信息填写register2.jsp -- form actionRegisterServlet methodpost input typehidden nameusername value${param.username} / 邮箱input typeemail nameemail required / 安全问题select namequestionoption你妈妈姓什么/option/select 安全答案input typetext nameanswer required / input typesubmit value注册 / /form关键点checkUsername()是js/validate.js里的AJAX函数调用CheckUserServlet?usernamexxx返回{exist:true}决定是否允许进入第二步。register2.jsp用EL表达式${param.username}获取第一步传来的用户名避免重复输入。后端RegisterServlet.java核心逻辑public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding(UTF-8); String username request.getParameter(username); String email request.getParameter(email); String question request.getParameter(question); String answer request.getParameter(answer); // 1. 邮箱格式校验正则 String emailRegex ^[a-zA-Z0-9._%-][a-zA-Z0-9.-]\\.[a-zA-Z]{2,}$; if (!email.matches(emailRegex)) { request.setAttribute(message, 邮箱格式不正确); request.getRequestDispatcher(/user/register2.jsp).forward(request, response); return; // 必须return否则继续执行 } // 2. 调用DAO插入数据库 UserDAO userDAO new UserDAO(); int result userDAO.insertUser(username, email, question, answer); // 密码呢 if (result 0) { request.setAttribute(message, 注册成功请登录。); request.getRequestDispatcher(/login.jsp).forward(request, response); } else { request.setAttribute(message, 注册失败请重试。); request.getRequestDispatcher(/user/register2.jsp).forward(request, response); } }参数说明与血泪教训request.setCharacterEncoding(UTF-8)必须在getParameter()之前调用否则username为乱码。email.matches(emailRegex)正则校验邮箱若用户输test会拦截。致命坑点insertUser()方法里密码是空字符串论文没提密码加密源码中UserDAO.insertUser()只插入username/email/question/answeruser_pw字段默认NULL。这意味着注册后用户无法登录修复方案在RegisterServlet中添加密码生成逻辑String password 123; // 或用MD5加密DigestUtils.md5Hex(123) int result userDAO.insertUser(username, password, email, question, answer);4.2 登录模块深度调试LoginServlet如何区分用户与管理员登录是权限分水岭必须精准识别身份。LoginServlet.java逻辑如下String username request.getParameter(username); String password request.getParameter(password); // 1. 先查管理员表 AdminDAO adminDAO new AdminDAO(); AdminUser admin adminDAO.findByUsername(username); if (admin ! null admin.getPassword().equals(password)) { // 管理员登录成功 HttpSession session request.getSession(); session.setAttribute(admin, admin); // 存入session response.sendRedirect(admin/index.jsp); // 跳转后台 return; } // 2. 再查用户表 UserDAO userDAO new UserDAO(); UserInfo user userDAO.findByUsername(username); if (user ! null user.getUser_pw().equals(password)) { // 普通用户登录成功 HttpSession session request.getSession(); session.setAttribute(user, user); // 存入session response.sendRedirect(index.jsp); // 跳转首页 return; } // 3. 都失败 request.setAttribute(message, 用户名或密码错误); request.getRequestDispatcher(/login.jsp).forward(request, response);调试技巧在adminDAO.findByUsername()和userDAO.findByUsername()两行打条件断点username.equals(admin)只在测管理员时触发。查看session.getAttribute(admin)是否为null确认管理员登录态是否建立。若登录后跳转admin/index.jsp报404检查WebRoot/admin/目录是否存在以及admin/index.jsp中是否有% String adminName (String)session.getAttribute(admin); %取值逻辑。4.3 新闻增删改查NewsServlet的method参数路由机制所有新闻操作都通过/news.do?methodXXX统一入口NewsServlet用method参数路由String method request.getParameter(method); if (ADDNEWS.equals(method)) { addNews(request, response); } else if (EDITNEWS.equals(method)) { editNews(request, response); } else if (DELETENEWS.equals(method)) { deleteNews(request, response); } else if (SEARCH.equals(method)) { searchNews(request, response); }addNews()方法关键参数验证对应论文代码1String title Filter.escapeHTMLTags(request.getParameter(title).trim()); // XSS过滤 String fenlei request.getParameter(fenlei); // 分类来自下拉框value String content request.getParameter(infoContent); // 新闻正文textarea名称 // 内容长度限制原文8000字符太宽松建议改为2000 if (content.length() 2000) { request.setAttribute(message, 新闻内容不能超过2000字); request.getRequestDispatcher(/news/edit.jsp).forward(request, response); return; } // 调用NewsBean.addNews()插入数据库 int flag newsBean.addNews(title, fenlei, content, username2); // username2来自session避坑/常见问题/排查现象点击“添加新闻”按钮无反应Network面板显示/news.do?methodADDNEWS404原因web.xml中servlet-mapping的url-pattern写成了/news而非/news.do解决检查web.xml确保url-pattern/news.do/url-pattern现象添加新闻后news_info表里news_adder字段为空原因username2从session.getAttribute(user)获取但普通用户登录后存的是user管理员存的是admin而NewsServlet里取的是user解决在LoginServlet中统一存session.setAttribute(currentUser, userOrAdmin)NewsServlet中取session.getAttribute(currentUser)现象搜索功能输入“马刺”返回空列表但数据库里有该新闻原因searchNews()方法中SQL写成WHERE news_title LIKE %?%但PreparedStatement没正确设置参数解决改为WHERE news_title LIKE ?然后ps.setString(1, %keyword%)现象修改新闻后页面跳转到/news/index.jsp但列表没更新原因edit.jsp表单action写成了/news.do?methodEDITNEWS但method参数在URL里request.getParameter(method)取不到POST请求参数在body解决edit.jsp中添加隐藏域input typehidden namemethod valueEDITNEWS /现象滚动公告不显示首页左侧空白原因index.jsp中调用jsp:include page/common/scroll.jsp/但/common/目录不存在解决将scroll.jsp移到WebRoot/根目录index.jsp中改为jsp:include pagescroll.jsp/5. 远程调试实战用MyEclipse连接本地Tomcat实现断点调试与变量实时查看5.1 MyEclipse远程调试配置从“Debug on Server”到“Remote Debug”本项目必须用MyEclipse非Eclipse才能完美调试因为其内置Tomcat插件深度集成。配置步骤步骤1启用Tomcat远程调试端口打开MyEclipse →Window → Preferences → MyEclipse → Servers → Tomcat → Tomcat 7.x勾选Enable remote debuggingDebug port:8000默认可改但需同步点击Apply注意此时Tomcat启动命令会自动加上-Xdebug -Xrunjdwp:transportdt_socket,servery,suspendn,address8000参数。步骤2在MyEclipse中启动Debug模式右键项目 →Debug As → Debug on Server选择Tomcat 7.x→ 点击Finish控制台输出Listening for transport dt_socket at address: 8000即成功步骤3在关键位置打条件断点登录验证断点在LoginServlet.java的if (admin ! null admin.getPassword().equals(password))行打断点条件设为username.equals(admin)新闻插入断点在NewsBean.java的addNews()方法第一行条件设为title.contains(马刺)数据库连接断点在DBUtil.getConnection()方法内观察conn对象是否为null调试时看什么Variables视图展开request→parameters确认username、password值是否正确Breakpoint View右键断点 →Breakpoint Properties→ 勾选Hit Count设为1避免循环中反复中断Display View选中sql变量 → 右键Display实时查看拼接的SQL语句5.2 远程调试排错为什么断点不生效四大高频原因原因1源码与class文件不匹配现象断点显示空心圆表示未绑定或点击后变实心但不中断排查右键项目 →Properties → Java Build Path → Source确认src/目录在Source folders中检查WebRoot/WEB-INF/classes/下是否有对应.class文件若没有右键项目 →Refresh原因2Tomcat未以Debug模式启动现象控制台无Listening for transport...日志解决关闭所有Tomcat进程任务管理器结束javaw.exe在MyEclipse中点击Debug按钮虫子图标而非Run按钮绿色三角原因3端口被占用现象启动时报Address already in use: JVM_Bind解决Windowsnetstat -ano | findstr :8000→ 找到PID → 任务管理器结束或在MyEclipse中改Debug port为8001原因4JSP文件未关联调试器现象在login.jsp里打断点无效解决右键login.jsp→Open With → MyEclipse JSP Editor确保Window → Preferences → MyEclipse → Editors → JSP Editor中Enable JSP debugging已勾选5.3 低重复率论文写作技巧如何把调试过程写成“创新点”答辩老师最怕学生背PPT最爱问“你遇到的最大困难是什么怎么解决的”。把调试过程转化为论文亮点论文章节调试实录转化为什么能降重4.2.2 登录模块“在实现用户与管理员双角色登录时发现session.setAttribute()存入对象类型不一致导致ClassCastException。通过统一存入MapString,Object并在各Servlet中get()后instanceof判断解决了类型安全问题。”避免抄“使用Session保存用户信息”这种万金油描述4.2.4 添加新闻“针对新闻内容过长导致数据库插入失败的问题原设计仅做前端JS校验。本文在NewsServlet中增加content.length()2000后端校验并返回友好提示提升了系统健壮性。”把if(content.length()8000)这种代码行升华为“前后端双重校验机制”5.1 系统调试“在远程调试过程中发现mysql-connector-java-5.1.18.jar与JDK1.8存在SSL握手异常。通过在JDBC URL中添加?useSSLfalse参数并在DBUtil中捕获SQLException打印堆栈定位到驱动兼容性问题。”把useSSLfalse这种配置项包装成“跨版本兼容性适配方案”提示在论文“系统测试”章节直接截图MyEclipse的Debug视图Variables窗口Console日志标注“图5-1 登录验证断点调试过程”比写一百字文字描述更有说服力。6. 毕设答辩终极 checklist从环境准备到答辩话术含导师必问的5个问题应答模板6.1 答辩前48小时必做清单确保演示零失误时间事项检查方式风险等级T-48h环境备份导出完整Tomcat7安装目录含webapps/sports、Navicat数据库备份.sql文件、MyEclipse工作空间压缩包在另一台电脑解压运行访问http://localhost:8080/sports/⚠️⚠️⚠️环境丢失答辩失败T-24h数据预置在sports_db中插入3条不同分类新闻NBA/足球/奥运、2个用户test/abc、1个管理员adminNavicat中执行SELECT COUNT(*) FROM news_info确认结果为3⚠️本文还有配套的精品资源点击获取
返回列表