studentForm.jsp 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <%@ page import="space.anyi.studentManageSystem_JSP.model.Student" %>
  3. <%
  4. Student student = (Student) request.getAttribute("student");
  5. boolean isEdit = student != null;
  6. String pageTitle = isEdit ? "编辑学生信息" : "添加学生信息";
  7. String action = isEdit ? "edit" : "add";
  8. %>
  9. <html>
  10. <head>
  11. <title>学生管理系统 - <%= pageTitle %></title>
  12. <style>
  13. body {
  14. font-family: Arial, sans-serif;
  15. margin: 0;
  16. padding: 0;
  17. background-color: #f5f5f5;
  18. }
  19. .header {
  20. background-color: #007bff;
  21. color: white;
  22. padding: 20px;
  23. text-align: center;
  24. }
  25. .container {
  26. max-width: 600px;
  27. margin: 20px auto;
  28. padding: 30px;
  29. background-color: white;
  30. border-radius: 8px;
  31. box-shadow: 0 2px 10px rgba(0,0,0,0.1);
  32. }
  33. .form-group {
  34. margin-bottom: 20px;
  35. }
  36. .form-group label {
  37. display: block;
  38. margin-bottom: 5px;
  39. font-weight: bold;
  40. color: #333;
  41. }
  42. .form-group input, .form-group select {
  43. width: 100%;
  44. padding: 10px;
  45. border: 1px solid #ddd;
  46. border-radius: 4px;
  47. box-sizing: border-box;
  48. font-size: 14px;
  49. }
  50. .form-group input:focus, .form-group select:focus {
  51. outline: none;
  52. border-color: #007bff;
  53. box-shadow: 0 0 5px rgba(0,123,255,0.3);
  54. }
  55. .btn {
  56. padding: 10px 20px;
  57. border: none;
  58. border-radius: 4px;
  59. cursor: pointer;
  60. text-decoration: none;
  61. display: inline-block;
  62. text-align: center;
  63. font-size: 14px;
  64. }
  65. .btn-primary {
  66. background-color: #007bff;
  67. color: white;
  68. }
  69. .btn-secondary {
  70. background-color: #6c757d;
  71. color: white;
  72. }
  73. .btn:hover {
  74. opacity: 0.8;
  75. }
  76. .form-actions {
  77. display: flex;
  78. gap: 10px;
  79. justify-content: center;
  80. margin-top: 30px;
  81. }
  82. .required {
  83. color: red;
  84. }
  85. .message {
  86. padding: 10px;
  87. margin-bottom: 20px;
  88. border-radius: 4px;
  89. text-align: center;
  90. }
  91. .error {
  92. background-color: #f8d7da;
  93. color: #721c24;
  94. border: 1px solid #f5c6cb;
  95. }
  96. </style>
  97. </head>
  98. <body>
  99. <div class="header">
  100. <h1>学生管理系统 - <%= pageTitle %></h1>
  101. </div>
  102. <div class="container">
  103. <% if (request.getAttribute("message") != null) { %>
  104. <div class="message error">
  105. <%= request.getAttribute("message") %>
  106. </div>
  107. <% } %>
  108. <form action="${pageContext.request.contextPath}/student" method="post">
  109. <input type="hidden" name="action" value="<%= action %>">
  110. <% if (isEdit) { %>
  111. <input type="hidden" name="id" value="<%= student.getId() %>">
  112. <% } %>
  113. <div class="form-group">
  114. <label for="name">姓名 <span class="required">*</span></label>
  115. <input type="text" id="name" name="name"
  116. value="<%= isEdit ? student.getName() : "" %>"
  117. required maxlength="50">
  118. </div>
  119. <div class="form-group">
  120. <label for="studentId">学号 <span class="required">*</span></label>
  121. <input type="text" id="studentId" name="studentId"
  122. value="<%= isEdit ? student.getStudentId() : "" %>"
  123. required pattern="[0-9]{11}"
  124. title="学号格式:252612000xx(11位数字)" maxlength="12">
  125. <small style="color: #666;">格式:252612000xx(11位数字)</small>
  126. </div>
  127. <div class="form-group">
  128. <label for="className">班级 <span class="required">*</span></label>
  129. <input type="text" id="className" name="className"
  130. value="<%= isEdit ? student.getClassName() : "" %>"
  131. required maxlength="50">
  132. </div>
  133. <div class="form-group">
  134. <label for="dormitoryNumber">宿舍号</label>
  135. <input type="text" id="dormitoryNumber" name="dormitoryNumber"
  136. value="<%= isEdit && student.getDormitoryNumber() != null ? student.getDormitoryNumber() : "" %>"
  137. maxlength="10">
  138. </div>
  139. <div class="form-group">
  140. <label for="contact">联系方式</label>
  141. <input type="text" id="contact" name="contact"
  142. value="<%= isEdit && student.getContact() != null ? student.getContact() : "" %>"
  143. maxlength="20">
  144. </div>
  145. <div class="form-actions">
  146. <button type="submit" class="btn btn-primary">
  147. <%= isEdit ? "更新信息" : "添加学生" %>
  148. </button>
  149. <a href="${pageContext.request.contextPath}/student?action=list" class="btn btn-secondary">返回列表</a>
  150. </div>
  151. </form>
  152. </div>
  153. <script>
  154. // 表单验证
  155. document.querySelector('form').addEventListener('submit', function(e) {
  156. const studentId = document.getElementById('studentId').value;
  157. const name = document.getElementById('name').value;
  158. const className = document.getElementById('className').value;
  159. // 验证学号格式
  160. if (studentId.length !== 11) {
  161. console.log(studentId.length)
  162. e.preventDefault();
  163. alert('学号格式不正确!请使用252612000xx格式');
  164. return;
  165. }
  166. // 验证必填字段
  167. if (!name.trim() || !className.trim()) {
  168. e.preventDefault();
  169. alert('请填写所有必填字段!');
  170. return;
  171. }
  172. });
  173. </script>
  174. </body>
  175. </html>