安徽省建设厅证书查询官方网站百度app安装下载免费
安徽省建设厅证书查询官方网站,百度app安装下载免费,wordpress中文百科,ae做模板下载网站背景痛点#xff1a;第一次做毕设#xff0c;最容易踩的四个坑
大四上学期一开学#xff0c;导师甩下一句话#xff1a;“做个网站当毕设#xff0c;Java 技术栈#xff0c;能跑起来就行。”听起来简单#xff0c;真动手时却处处是坑。我把自己和身边同学踩过的雷…背景痛点第一次做毕设最容易踩的四个坑大四上学期一开学导师甩下一句话“做个网站当毕设Java 技术栈能跑起来就行。”听起来简单真动手时却处处是坑。我把自己和身边同学踩过的雷总结成下面四条基本覆盖了 80% 的新手噩梦技术选型混乱一搜“Java Web”全是 SSM、SSH、Spring Boot、Spring Cloud、Vue、React……关键词一多直接懵。结果有人把 Spring Cloud 微服务硬生生塞进只能跑 20 人并发的演示场景答辩时连“注册中心”都讲不清。项目结构随心所欲包名乱写、配置文件散落各处把 SQL 脚本放在桌面把图片上传到C:\Users\xxx\pics一换电脑全红叉。老师一句“你在服务器上跑一下”当场社死。只会“Run”不会“Deploy”IDEA 里一点绿色三角就能跑真到云主机上java -jar就报错端口占用、数据库连不上、静态资源 404心态瞬间崩。代码能跑但不敢给人看一个登录接口把明文密码直接 INSERTSQL 拼接靠字符串拼接XSS、CSRF 全靠“相信用户不会乱来”。老师一句“安全性怎么保证”只能沉默。如果你也卡在上述任意一环下面的“最小可运行”方案或许能帮你把毕设从“跑不通”变成“能演示”。技术选型对比为什么用 Spring Boot Thymeleaf时间紧、基础弱选技术的第一原则就是“少配置、能打包、易部署”。我对比了三种常见组合方案优点对新手的不友好传统 SSMSpringSpringMVCMyBatis教科书案例多XML 配置多到眼花Tomcat 单独装Spring Boot Vue 前后端分离前沿、好吹要会 Node、Webpack、跨域调试两条线Spring Boot 模板引擎Thymeleaf零 XML、内嵌 Tomcat、一个 jar 跑需要懂点 HTML结论毕设不是商业项目“能跑起来 页面能看 老师能懂”才是核心。Spring Boot 把容器、依赖、日志、热部署全部自动化Thymeleaf 语法接近普通 HTML双击就能预览最省时间。项目骨架十分钟搭好的最小结构用 Spring Initializr 勾选四件套Spring Web内嵌 TomcatThymeleaf服务端渲染Spring Data JPA持久层MySQL DriverIDEA 自动生成的目录长这样src └─ main ├─ java │ └─ com.example.demo │ ├─ DemoApplication.java │ ├─ controller │ ├─ entity │ ├─ repository │ └─ config ├─ resources │ ├─ application.properties │ ├─ static // css/js/图片 │ └─ templates // html 模板关键配置application.properties只保留 6 行别写多余server.port8080 spring.datasource.urljdbc:mysql://localhost:3306/demo?useSSLfalseserverTimezoneUTC spring.datasource.usernameroot spring.datasource.password123456 spring.jpa.hibernate.ddl-autoupdate spring.thymeleaf.cachefalse # 开发时实时刷新提示把数据库、端口、密码先写死跑通第一版再抽成环境变量别一上来就整多环境 profile容易把自己绕晕。核心代码示例用户注册一条龙下面三段代码覆盖“控制器 → 服务 → 持久层”每一行都带注释直接复制就能跑。1. 实体类entity/User.javaEntity Table(name t_user) public class User { Id GeneratedValue(strategy GenerationType.IDENTITY) private Long id; Column(unique true, nullable false, length 32) private String username; Column(nullable false) private String password; // 存加密后密文 /* 省略 getter/setter用 Lombok 的 Data 也行 */ }2. 持久层repository/UserRepository.javapublic interface UserRepository extends JpaRepositoryUser, Long { // 一句方法名搞定无需实现 OptionalUser findByUsername(String username); }3. 控制器controller/AuthController.javaController RequestMapping(/auth) public class AuthController { Autowired private UserRepository userRepo; Autowired private PasswordEncoder passwordEncoder; // BCrypt GetMapping(/register) public String registerPage() { return register; // 指向 templates/register.html } PostMapping(/register) public String doRegister(RequestParam String username, RequestParam String rawPwd, Model model) { // 1. 防重名 if (userRepo.findByUsername(username).isPresent()) { model.addAttribute(msg, 用户名已存在); return register; } // 2. 密码加密 User user new User(); user.setUsername(username); user.setPassword(passwordEncoder.encode(rawPwd)); userRepo.save(user); return redirect:/auth/login; } }模板文件register.html放在resources/templates只贴核心表单form methodpost action/auth/register 用户名input nameusername required 密码input typepassword namerawPwd required button typesubmit注册/button p stylecolor:red th:text${msg}/p /form至此注册链路打通登录同理把doRegister换成查询 PasswordEncoder.matches()即可。安全性与性能别让老师一抓一个漏洞密码明文用 BCryptSpring Security 只引一个spring-boot-starter-security配一行PasswordEncoderBean 即可别自己写 MD5。防 CSRF默认开启Thymeleaf 表单自动注入_csrf字段不要手动关掉否则答辩会被问“为什么关”。避免 N1查询列表时把fetchFetchType.EAGER改成JOIN FETCH写法或直接用EntityGraph注解否则 100 条数据能打出 101 条 SQL。会话固定登录后调用session.invalidate()重新生成 JSESSIONID防止别人拿旧 ID 冒充。生产环境避坑本地能跑服务器却 404把项目拖到云主机最常遇到的四条报错与排查顺序Maven 打包失败现象mvn package报 “Tests run: FAILED”解决加-DskipTests或者把单元测试写成不依赖数据库的纯内存测试。端口占用现象Web server failed to start on port 8080解决Linux 查进程lsof -i:8080 | kill或在application.properties里换server.port8081静态资源 404现象CSS/JS 加载路径/static/**报 404解决确认打包后target/BOOT-INF/classes/static/里有文件代码里引用用绝对路径/css/style.css别写相对../css数据库连接失败现象Communications link failure解决云主机安全组放行 3306MySQL 配置bind-address0.0.0.0把localhost改成云主机私网 IP并给对应用户赋远程权限小技巧在服务器上先用java -jar demo.jar --debug启动控制台会打印条件报告90% 的配置写错都能一眼定位。一张图看懂部署流程下一步给网站加两个“加分项”基础功能跑通后想从“能过”变“优秀”可以挑下面任意模块练手代码量不大但答辩能吹分页 模糊搜索Spring Data JPA 的Pageable一行搞定关键词查询用Containing关键字方法。图片上传本地/云 OSS用MultipartFile接收七牛、阿里云都有 10G 免费额度上传后把 URL 存表。验证码谷歌kaptcha或 Hutool 的CaptchaUtil前后端各加 10 行代码防暴力破解。操作日志利用 Spring AOP 拦截Controller把“谁、什么时间、改了哪张表”写进t_log老师一看就觉得你考虑审计。写在最后毕业设计不是商业级系统先求“能跑”再求“好看”最后才谈“高并发”。把上面的最小链路打通你就拥有了一个可执行java -jar的单一包一套注册/登录/列表展示的核心逻辑一份能对着 PPT 讲的演示路径剩下的时间挑一个你最感兴趣的小功能深挖写进论文“创新点”里足以让答辩老师眼前一亮。祝你编码顺利毕设一次过