# Rebuild Current Frontend Preview

## Goal

Rebuild the current Java Web application and refresh the local Tomcat deployment so the user can view the latest frontend effect in the browser.

## What I already know

* The user asked to rebuild the program to inspect the new frontend.
* The project is a Java 11 Maven WAR application.
* Maven produces `target/library-management.war`.
* Frontend JSP/CSS assets live under `src/main/webapp`.
* Local Tomcat path recorded by prior work is `/home/sjy/apps/tomcat/apache-tomcat-9.0.117/apache-tomcat-9.0.117`.
* The Tomcat context should be `/library-management`.

## Requirements

* Run a clean Maven package build.
* Deploy the new WAR to the local Tomcat `webapps` directory.
* Remove the expanded old deployment directory before restart so stale frontend assets are not reused.
* Start or restart Tomcat.
* Verify the frontend login URL is reachable.
* Provide the local browser URL to the user.

## Acceptance Criteria

* [x] `mvn clean package` succeeds.
* [x] `target/library-management.war` exists.
* [x] Tomcat deployment is refreshed with the new WAR.
* [x] `/library-management/login` returns HTTP 200.
* [x] User receives the local preview URL.

## Out of Scope

* Source code changes.
* New UI requirements or redesign decisions.
* Database schema or seed data changes.

## Technical Notes

* Build command from README: `mvn clean package`; fallback Maven path: `/home/sjy/.sdkman/candidates/maven/current/bin/mvn clean package`.
* Deployment target: `/home/sjy/apps/tomcat/apache-tomcat-9.0.117/apache-tomcat-9.0.117/webapps/library-management.war`.
* Build completed at 2026-04-28 20:21 +0800.
* Previous Tomcat deployment was moved to `/home/sjy/apps/tomcat/apache-tomcat-9.0.117/apache-tomcat-9.0.117/deploy-backups/_pre-preview-20260428-202206/`.
* Tomcat is running in tmux session `mzh-library-tomcat`.
* Verified `http://localhost:8080/library-management/login` returns `HTTP 200` with `Content-Type: text/html;charset=UTF-8`.
* Verified demo login redirects to `/library-management/dashboard`, and the authenticated dashboard returns `HTTP 200`.
