index界面% page contentTypetext/html; charsetUTF-8 pageEncodingUTF-8 %!DOCTYPE htmlhtmlheadtitle首页/titlemeta charsetUTF-8!-- 引入 Bootstrap --link hrefhttps://cdn.jsdelivr.net/npm/bootstrap5.3.0/dist/css/bootstrap.min.css relstylesheetstylebody {text-align: center;padding: 20px;}.links {margin: 15px 0;}.links a {margin: 0 10px;color: #2c6ac8;}table {border-collapse: collapse;width: auto;margin: 20px auto;}td {border: 1px solid #444;padding: 8px 12px;text-align: center;white-space: nowrap;color: red;}h2 {color: #333;}/style/headbody%String loginUser (String) session.getAttribute(loginUser);if (loginUser ! null) {%h2欢迎你 % loginUser %/h2%}%div classlinksa hreflogin.jsp去登录/aa hrefzhuce.jsp去注册/aa hrefpage1.jsppage1/aa hrefpage2.jsppage2/aa hrefpage3.jsppage3/aa hrefpage4.jsppage4/aa hreflogout.jsp退出登录/a/divh2信管2402康文恺九九乘法表/h2table%for(int i1;i9;i){%tr%for(int j1;ji;j){%td%j%×%i%%i*j%/td%}%/tr%}%/tablescript srchttps://cdn.jsdelivr.net/npm/bootstrap5.3.0/dist/js/bootstrap.bundle.min.js/script/body/htmllogin界面% page contentTypetext/html;charsetUTF-8 languagejava %!DOCTYPE htmlhtmlheadtitle用户登录/titlemeta charsetUTF-8link hrefhttps://cdn.jsdelivr.net/npm/bootstrap5.3.0/dist/css/bootstrap.min.css relstylesheetstyleform {width: 320px;margin: 60px auto;padding: 20px;border: 1px solid #ddd;border-radius: 8px;background: #fafafa;}.item {margin: 12px 0;}label {display: inline-block;width: 90px;}input {width: 190px;padding: 6px;}button {display: block;margin: 0 auto;padding: 6px 18px;}h2 {color: #2c6ac8;}/style/headbodyh2 styletext-align: center登录页面/h2form actionloginCheck.jsp methodpostdiv classitemlabel用户名/labelinput typetext nameusername required //divdiv classitemlabel密码/labelinput typepassword namepassword required //divbutton typesubmit登录/button/formscript srchttps://cdn.jsdelivr.net/npm/bootstrap5.3.0/dist/js/bootstrap.bundle.min.js/script/body/htmlloginCheck% page contentTypetext/html;charsetUTF-8 languagejava %%// 统一请求编码避免中文参数乱码request.setCharacterEncoding(UTF-8);String username request.getParameter(username);String password request.getParameter(password);// 固定账号密码校验本项目不连接数据库if (admin.equals(username) admin.equals(password)) {// 登录成功后把用户名写入 Session供其他页面做权限判断session.setAttribute(loginUser, username);response.sendRedirect(index.jsp);return;}%!DOCTYPE htmlhtmlheadtitle登录结果/title/headbody styletext-align: center; margin-top: 60pxh2登录不成功用户名或者密码不正确。/h2a hreflogin.jsp返回登录/a/body/htmllogout% page contentTypetext/html;charsetUTF-8 languagejava %%// 让当前会话失效实现退出登录session.invalidate();%!DOCTYPE htmlhtmlheadtitle退出登录/titlemeta charsetUTF-8!-- 引入Bootstrap --link hrefhttps://cdn.jsdelivr.net/npm/bootstrap5.3.0/dist/css/bootstrap.min.css relstylesheetstylebody {text-align: center;margin-top: 80px;}h2 {color: #2c6ac8;margin-bottom: 20px;}a {margin: 0 8px;color: #0d6efd;}/style/headbodyh2您已成功退出登录。/h2diva hreflogin.jsp重新登录/aa hrefindex.jsp返回首页/a/divscript srchttps://cdn.jsdelivr.net/npm/bootstrap5.3.0/dist/js/bootstrap.bundle.min.js/script/body/htmlpage1% page contentTypetext/html;charsetUTF-8 languagejava %!DOCTYPE htmlhtmlheadtitlepage1/titlemeta charsetUTF-8!-- 统一引入Bootstrap --link hrefhttps://cdn.jsdelivr.net/npm/bootstrap5.3.0/dist/css/bootstrap.min.css relstylesheetstylebody {text-align: center;padding: 20px;}.links {margin: 15px 0;}.links a {margin: 0 10px;color: #0d6efd;}table {border-collapse: collapse;width: auto;margin: 20px auto;}td {border: 1px solid #000;padding: 8px 12px;white-space: nowrap;text-align: center;color: red;}.no-auth {margin-top: 80px;font-size: 20px;color: #dc3545;}h2,h3{color: #333;}/style/headbody%String loginUser (String) session.getAttribute(loginUser);boolean loggedIn admin.equals(loginUser);if (loggedIn) {%h2欢迎您% loginUser %/h2div classlinksa hrefindex.jsp首页/aa hrefpage2.jsppage2/aa hrefpage3.jsppage3/aa hrefpage4.jsppage4/aa hreflogout.jsp退出登录/a/divh3page1 - 九九乘法表/h3table%for (int i 1; i 9; i) {%tr%for (int j 1; j i; j) {%td% j %×% i %% j * i %/td%}%/tr%}%/table%} else {%div classno-auth您还没有登录没有权限看到页面的内容。/divdiv classlinksa hreflogin.jsp去登录/aa hrefindex.jsp返回首页/a/div%}%script srchttps://cdn.jsdelivr.net/npm/bootstrap5.3.0/dist/js/bootstrap.bundle.min.js/script/body/htmlzhuce% page contentTypetext/html;charsetUTF-8 languagejava %htmlheadtitle用户注册/titlemeta charsetUTF-8link hrefhttps://cdn.jsdelivr.net/npm/bootstrap5.3.0/dist/css/bootstrap.min.css relstylesheetstyleform {width: 380px;margin: 50px auto;padding: 20px;border: 1px solid #ddd;border-radius: 8px;background: #fafafa;}.item {margin: 10px 0;}label {display: inline-block;width: 80px;}input[typetext],input[typepassword],input[typenumber] {padding: 5px;width: 200px;}button {padding: 6px 20px;display:block;margin:0 auto;background:#0d6efd;color:#fff;border:none;border-radius:3px;}.options {display: inline-block;}.options label {width: auto;margin-right: 10px;}h1{color:#2255aa;text-align:center;}/style/headbodyh1用户注册表单/h1form actionzhuceCkeck.jsp methodpostdiv classitemlabel姓名/labelinput typetext namename required //divdiv classitemlabel密码/labelinput typepassword namepassword required //divdiv classitemlabel性别/labelspan classoptionslabelinput typeradio namegender value男 required / 男/labellabelinput typeradio namegender value女 / 女/label/span/divdiv classitemlabel年龄/labelinput typenumber nameage min1 max120 required //divdiv classitemlabel爱好/labelspan classoptionslabelinput typecheckbox namehobby value篮球 / 篮球/labellabelinput typecheckbox namehobby value音乐 / 音乐/labellabelinput typecheckbox namehobby value阅读 / 阅读/labellabelinput typecheckbox namehobby value旅行 / 旅行/label/span/divbutton typesubmit提交/button/formscript srchttps://cdn.jsdelivr.net/npm/bootstrap5.3.0/dist/js/bootstrap.bundle.min.js/script/body/htmlzhuceCheck% page contentTypetext/html;charsetUTF-8 languagejava % % pageimportjava.util.Arrays %htmlheadtitle注册结果/titlestylebody {text-align: center;margin-top: 50px;}.result {display: inline-block;text-align: left;}/style/headbodyh1注册信息提交成功/h1div classresult%-- 解决post提交中文乱码问题 --% %request.setCharacterEncoding(UTF-8); String name request.getParameter(name); String password request.getParameter(password); String gender request.getParameter(gender); String age request.getParameter(age);String[] hobbies request.getParameterValues(hobby); String hobbyText (hobbies ! null hobbies.length 0) ?Arrays.toString(hobbies).replace([, ).replace(], ) : 未选择; %%-- 获取表单提交的数据 --%p姓名% name %/pp密码% password %/pp性别% gender %/pp年龄% age % 岁/pp爱好% hobbyText %/p%-- 跳转回表单页面 --%a hrefzhuce.jsp返回重新提交/a/div/body/html