news 2026/6/11 10:12:26

web应用技术—第三次课后作业

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
web应用技术—第三次课后作业

1、复刻注册登录,以及注册人员信息的增删改查

撰写项目文件

sql

CREATE TABLE userinfo2( uid int IDENTITY(1,1) NOT NULL, username varchar(50) NOT NULL, userpwd varchar(50) NOT NULL, sex varchar(10), age int, hobby varchar(200), PRIMARY KEY(uid) ); CREATE UNIQUE INDEX UQ__userinfo__F3DBC57205014886 ON userinfo2("username");

deleteUser.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page import="java.sql.*" %> <% request.setCharacterEncoding("UTF-8"); String uidText = request.getParameter("uid"); String msg; if (uidText == null || uidText.trim().isEmpty()) { msg = "删除失败:缺少用户 uid。"; } else { String sql = "DELETE FROM userinfo2 WHERE uid = ?"; try { String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; String url = "jdbc:sqlserver://127.0.0.1\\SQLEXPRESS;databaseName=chapter_3;encrypt=true;trustServerCertificate=true"; String dbUser="sa"; String dbPwd="Xujiehhxx1416"; Class.forName(driver); try (Connection conn = DriverManager.getConnection(url, dbUser, dbPwd); PreparedStatement ps = conn.prepareStatement(sql)) { ps.setInt(1, Integer.parseInt(uidText)); int rows = ps.executeUpdate(); msg = rows > 0 ? "删除成功。" : "删除失败:用户不存在。"; } } catch (Exception e) { msg = "删除失败:" + e.getMessage(); } } %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>删除用户</title> <style> body { text-align: center; margin-top: 80px; font-family: "Microsoft YaHei", sans-serif; } </style> </head> <body> <h2><%= msg %></h2> <p><a href="select.jsp">返回用户列表</a></p> </body> </html>

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>首页</title> <style> body { text-align: center; margin-top: 60px; } a { margin: 0 8px; } </style> </head> <body> <h1>这是主页!!!!!</h1> <% Object loginUser = session.getAttribute("loginUser"); if (loginUser != null) { %> <h1>登录成功!</h1> <p>欢迎您,<%= loginUser %>!</p> <a href="select.jsp">查看所有注册用户信息</a> <a href="logout.jsp">退出登录</a> <% } else { %> <h1>欢迎来到系统</h1> <p>您还没有登录,请先注册或登录:</p> <a href="zhuce.jsp">去注册</a> <a href="login.jsp">去登录</a> <% } %> </body> </html>

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <!DOCTYPE html> <html> <head> <title>用户登录</title> <style> form { 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 { margin-left: 90px; padding: 6px 18px; } </style> </head> <body> <h2 style="text-align: center">登录页面</h2> <form action="loginCheck.jsp" method="post"> <div class="item"> <label>用户名:</label> <input type="text" name="username" required /> </div> <div class="item"> <label>密码:</label> <input type="password" name="userpwd" required /> </div> <button type="submit">登录</button> </form> </body> </html>

loginCheck.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page import="java.sql.*" %> <% request.setCharacterEncoding("UTF-8"); String username = request.getParameter("username"); String userpwd = request.getParameter("userpwd"); boolean loginSuccess = false; String sql = "SELECT uid FROM userinfo2 WHERE username = ? AND userpwd = ?"; try { String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; String url = "jdbc:sqlserver://127.0.0.1\\SQLEXPRESS;databaseName=chapter_3;encrypt=true;trustServerCertificate=true"; String dbUser="sa"; String dbPwd="Xujiehhxx1416"; Class.forName(driver); try (Connection conn = DriverManager.getConnection(url, dbUser, dbPwd); PreparedStatement ps = conn.prepareStatement(sql)) { ps.setString(1, username); ps.setString(2, userpwd); try (ResultSet rs = ps.executeQuery()) { loginSuccess = rs.next(); } } } catch (Exception e) { request.setAttribute("errorMsg", "数据库异常:" + e.getMessage()); } if (loginSuccess) { session.setAttribute("loginUser", username); response.sendRedirect("index.jsp"); return; } %> <!DOCTYPE html> <html> <head> <title>登录结果</title> </head> <body style="text-align: center; margin-top: 60px"> <h2> <%= request.getAttribute("errorMsg") != null ? request.getAttribute("errorMsg") : "登录不成功,用户名或者密码不正确。" %> </h2> <a href="login.jsp">返回登录</a> </body> </html>

logout.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <% session.removeAttribute("loginUser"); session.invalidate(); response.sendRedirect("index.jsp"); %>

select.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page import="java.sql.*" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>用户列表 - SQL Server</title> <style> body { margin: 30px; font-family: "Microsoft YaHei", sans-serif; } table { border-collapse: collapse; width: 100%; } th, td { border: 1px solid #ddd; padding: 8px 10px; text-align: center; } th { background: #f5f5f5; } .actions a { margin: 0 6px; } .top-link { margin-bottom: 14px; } </style> </head> <body> <h2>所有注册用户信息</h2> <p class="top-link"><a href="index.jsp">返回首页</a></p> <table> <tr> <th>UID</th> <th>用户名</th> <th>密码</th> <th>性别</th> <th>年龄</th> <th>爱好</th> <th>操作</th> </tr> <% // 查询所有用户,结果用于列表展示 String sql = "SELECT uid, username, userpwd, sex, age, hobby FROM userinfo2 ORDER BY uid DESC"; try { // 加载 SQL Server JDBC 驱动并建立数据库连接 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String uri = "jdbc:sqlserver://localhost:1433;databaseName=2026shangke;encrypt=true;trustServerCertificate=true"; String user = "sa"; String password1 = "123"; // PreparedStatement 执行预编译 SQL,ResultSet 逐行读取结果 try (Connection conn = DriverManager.getConnection(uri, user, password1); PreparedStatement ps = conn.prepareStatement(sql); ResultSet rs = ps.executeQuery()) { while (rs.next()) { %> <tr> <td><%= rs.getInt("uid") %></td> <td><%= rs.getString("username") %></td> <td><%= rs.getString("userpwd") %></td> <td><%= rs.getString("sex") %></td> <td><%= rs.getInt("age") %></td> <td><%= rs.getString("hobby") %></td> <td class="actions"> <a href="updateUser.jsp?uid=<%= rs.getInt("uid") %>">修改</a> <a href="deleteUser.jsp?uid=<%= rs.getInt("uid") %>" onclick="return confirm('确认删除该用户吗?');" >删除</a > </td> </tr> <% } } } catch (Exception e) { %> <tr> <td colspan="7" style="color: red">查询失败:<%= e.getMessage() %></td> </tr> <% } %> </table> </body> </html>

updateUser.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page import="java.sql.*" %> <% request.setCharacterEncoding("UTF-8"); String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; String url = "jdbc:sqlserver://127.0.0.1\\SQLEXPRESS;databaseName=chapter_3;encrypt=true;trustServerCertificate=true"; String dbUser="sa"; String dbPwd="Xujiehhxx1416"; Class.forName(jdbcDriver); String method = request.getMethod(); String uidText = request.getParameter("uid"); String username = ""; String userpwd = ""; String sex = ""; String ageText = ""; String hobby = ""; String msg = null; if (uidText == null || uidText.trim().isEmpty()) { msg = "缺少用户 uid,无法修改。"; } else { try { int userUid = Integer.parseInt(uidText); try (Connection conn = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPassword)) { if ("POST".equalsIgnoreCase(method)) { username = request.getParameter("username"); userpwd = request.getParameter("userpwd"); sex = request.getParameter("sex"); ageText = request.getParameter("age"); hobby = request.getParameter("hobby"); String updateSql = "UPDATE userinfo2 SET username=?, userpwd=?, sex=?, age=?, hobby=? WHERE uid=?"; try (PreparedStatement ps = conn.prepareStatement(updateSql)) { ps.setString(1, username); ps.setString(2, userpwd); ps.setString(3, sex); ps.setInt(4, Integer.parseInt(ageText)); ps.setString(5, hobby); ps.setInt(6, userUid); int rows = ps.executeUpdate(); msg = rows > 0 ? "修改成功。" : "修改失败:用户不存在。"; } } else { String querySql = "SELECT username, userpwd, sex, age, hobby FROM userinfo2 WHERE uid = ?"; try (PreparedStatement ps = conn.prepareStatement(querySql)) { ps.setInt(1, userUid); try (ResultSet rs = ps.executeQuery()) { if (rs.next()) { username = rs.getString("username"); userpwd = rs.getString("userpwd"); sex = rs.getString("sex"); ageText = String.valueOf(rs.getInt("age")); hobby = rs.getString("hobby"); } else { msg = "未找到该用户。"; } } } } } } catch (NumberFormatException e) { msg = "参数格式错误:" + e.getMessage(); } catch (Exception e) { msg = "操作失败:" + e.getMessage(); } } %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>修改用户</title> <style> body { font-family: "Microsoft YaHei", sans-serif; } form { width: 420px; margin: 40px auto; border: 1px solid #ddd; border-radius: 8px; padding: 20px; background: #fafafa; } .item { margin: 10px 0; } label { display: inline-block; width: 90px; } input { width: 260px; padding: 6px; } button { margin-left: 90px; padding: 6px 18px; } .center { text-align: center; } </style> </head> <body> <h2 class="center">修改用户信息</h2> <% if (msg != null) { %> <p class="center"><strong><%= msg %></strong></p> <% } %> <% if (uidText != null && !uidText.trim().isEmpty() && !"POST".equalsIgnoreCase(method) && msg == null) { %> <form action="updateUser.jsp" method="post"> <input type="hidden" name="uid" value="<%= uidText %>" /> <div class="item"> <label>用户名:</label> <input type="text" name="username" value="<%= username %>" required /> </div> <div class="item"> <label>密码:</label> <input type="text" name="userpwd" value="<%= userpwd %>" required /> </div> <div class="item"> <label>性别:</label> <input type="text" name="sex" value="<%= sex %>" required /> </div> <div class="item"> <label>年龄:</label> <input type="number" name="age" value="<%= ageText %>" required /> </div> <div class="item"> <label>爱好:</label> <input type="text" name="hobby" value="<%= hobby %>" /> </div> <button type="submit">提交修改</button> </form> <% } %> <p class="center"><a href="select.jsp">返回用户列表</a></p> </body> </html>

zhuce.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>用户注册</title> <style> form { 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[type="text"], input[type="password"], input[type="number"] { padding: 5px; width: 200px; } button { padding: 6px 20px; margin-left: 80px; } .options { display: inline-block; } .options label { width: auto; margin-right: 10px; } </style> </head> <body> <h1 style="text-align: center">用户注册表单</h1> <%-- 表单提交到zhuceCkeck.jsp,提交方式为post --%> <form action="zhuceCkeck.jsp" method="post"> <div class="item"> <label>用户名:</label> <input type="text" name="username" required /> <%-- required表示必填 --%> </div> <div class="item"> <label>密码:</label> <input type="password" name="userpwd" required /> </div> <div class="item"> <label>性别:</label> <span class="options"> <label ><input type="radio" name="sex" value="男" required /> 男</label > <label><input type="radio" name="sex" value="女" /> 女</label> </span> </div> <div class="item"> <label>年龄:</label> <input type="number" name="age" min="1" max="120" required /> </div> <div class="item"> <label>爱好:</label> <span class="options"> <label ><input type="checkbox" name="hobby" value="篮球" /> 篮球</label > <label ><input type="checkbox" name="hobby" value="音乐" /> 音乐</label > <label ><input type="checkbox" name="hobby" value="阅读" /> 阅读</label > <label ><input type="checkbox" name="hobby" value="旅行" /> 旅行</label > </span> </div> <button type="submit">提交</button> </form> </body> </html>

zhuceCkeck.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page import="java.util.Arrays" %> <%@ page import="java.sql.*" %> <html> <head> <title>注册结果</title> <style> body { text-align: center; margin-top: 50px; } .result { display: inline-block; text-align: left; } </style> </head> <body> <% request.setCharacterEncoding("UTF-8"); String username = request.getParameter("username"); String userpwd = request.getParameter("userpwd"); String sex = request.getParameter("sex"); String ageText = request.getParameter("age"); String[] hobbies = request.getParameterValues("hobby"); String hobbyText = (hobbies != null && hobbies.length > 0) ? Arrays.toString(hobbies).replace("[", "").replace("]", "") : "未选择"; int age = Integer.parseInt(ageText); boolean registerSuccess = false; String msg; String checkSql = "SELECT uid FROM userinfo2 WHERE username = ?"; String insertSql = "INSERT INTO userinfo2(username, userpwd, sex, age, hobby) VALUES(?, ?, ?, ?, ?)"; try { String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; String url = "jdbc:sqlserver://127.0.0.1;instanceName=SQLEXPRESS;DatabaseName=chapter_3;encrypt=true;trustServerCertificate=true"; String dbUser="sa"; String dbPwd="Xujiehhxx1416"; Class.forName(driver); try (Connection conn = DriverManager.getConnection(url, dbUser, dbPwd); PreparedStatement checkPs = conn.prepareStatement(checkSql)) { checkPs.setString(1, username); try (ResultSet rs = checkPs.executeQuery()) { if (rs.next()) { msg = "注册失败:用户名已存在"; } else { try (PreparedStatement insertPs = conn.prepareStatement(insertSql)) { insertPs.setString(1, username); insertPs.setString(2, userpwd); insertPs.setString(3, sex); insertPs.setInt(4, age); insertPs.setString(5, hobbyText); registerSuccess = insertPs.executeUpdate() > 0; msg = registerSuccess ? "注册信息提交成功!" : "注册失败,请重试"; } } } } } catch (Exception e) { msg = "注册失败:数据库异常 - " + e.getMessage(); } %> <h1><%= msg %></h1> <div class="result"> <p>用户名:<%= username %></p> <p>性别:<%= sex %></p> <p>年龄:<%= ageText %> 岁</p> <p>爱好:<%= hobbyText %></p> <%-- 跳转回表单页面 --%> <a href="zhuce.jsp">返回重新提交</a> &nbsp;&nbsp; <a href="login.jsp">去登录</a> </div> </body> </html>

实现JDBC数据库操作

显示效果

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 10:11:42

Kolmogorov均值导数与可逆神经网络实现解析

1. Kolmogorov均值导数的数学解析Kolmogorov均值作为一种广义的集合聚合方法&#xff0c;其核心思想是通过可逆变换将输入数据映射到新的空间进行聚合。给定一个可逆且可微的变换函数ψ&#xff0c;对于集合X {x₁,...,xₙ}&#xff0c;Kolmogorov均值定义为&#xff1a;M_f(X…

作者头像 李华
网站建设 2026/6/11 10:11:04

别再为H桥驱动发愁了!用STM32F103的TIM1+TIM2主从模式,5分钟搞定两路带死区的互补PWM

STM32F103定时器主从模式实战&#xff1a;5分钟生成带死区的H桥驱动PWM 在电机控制和电源转换领域&#xff0c;H桥电路的设计与实现一直是工程师们面临的常见挑战。如何高效生成两路精确互补且带有可调死区的PWM信号&#xff0c;直接关系到系统的可靠性和效率。传统方法往往需要…

作者头像 李华
网站建设 2026/6/11 10:06:52

技术认知的边界:我们为何轻信‘地球是圆的’这一现代常识?

1. 从地球形状到技术信仰&#xff1a;我们如何建立认知 小时候第一次看到地球仪时&#xff0c;我盯着那个蓝色球体看了很久。老师告诉我们地球是圆的&#xff0c;但操场看起来明明就是平的。这种认知冲突在技术领域同样常见——我们被告知区块链不可篡改、AI模型具备智能&#…

作者头像 李华
网站建设 2026/6/11 10:04:52

计算机视觉在足球分析中的技术拆解与实战应用

计算机视觉在足球分析中的技术拆解与实战应用 【免费下载链接】sports computer vision and sports 项目地址: https://gitcode.com/gh_mirrors/sp/sports 足球比赛智能分析、球员追踪技术和体育计算机视觉正在彻底改变传统体育数据分析的范式。本文深入剖析Sports项目的…

作者头像 李华
网站建设 2026/6/11 10:01:30

3步上手SMUDebugTool:免费开源AMD Ryzen调试工具完全指南

3步上手SMUDebugTool&#xff1a;免费开源AMD Ryzen调试工具完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https:/…

作者头像 李华