init
This commit is contained in:
parent
48129856f3
commit
f33c16a3fa
3
.gitignore
vendored
3
.gitignore
vendored
@ -103,3 +103,6 @@ fabric.properties
|
||||
# Android studio 3.1+ serialized cache file
|
||||
.idea/caches/build_file_checksums.ser
|
||||
|
||||
/out/
|
||||
/实验指导资料/
|
||||
/打包上传/
|
||||
|
||||
8
.idea/.gitignore
vendored
Normal file
8
.idea/.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
# 默认忽略的文件
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# 基于编辑器的 HTTP 客户端请求
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
16
.idea/artifacts/homework02_war_exploded.xml
Normal file
16
.idea/artifacts/homework02_war_exploded.xml
Normal file
@ -0,0 +1,16 @@
|
||||
<component name="ArtifactManager">
|
||||
<artifact type="exploded-war" name="homework02:war exploded">
|
||||
<output-path>$PROJECT_DIR$/out/artifacts/homework02_war_exploded</output-path>
|
||||
<root id="root">
|
||||
<element id="directory" name="WEB-INF">
|
||||
<element id="directory" name="classes">
|
||||
<element id="module-output" name="homework02" />
|
||||
</element>
|
||||
<element id="directory" name="lib">
|
||||
<element id="file-copy" path="$PROJECT_DIR$/lib/mysql-connector.jar" />
|
||||
</element>
|
||||
</element>
|
||||
<element id="javaee-facet-resources" facet="homework02/web/Web" />
|
||||
</root>
|
||||
</artifact>
|
||||
</component>
|
||||
20
.idea/artifacts/learn1_war_exploded.xml
Normal file
20
.idea/artifacts/learn1_war_exploded.xml
Normal file
@ -0,0 +1,20 @@
|
||||
<component name="ArtifactManager">
|
||||
<artifact type="exploded-war" name="learn1:war exploded">
|
||||
<output-path>$PROJECT_DIR$/out/artifacts/learn1_war_exploded</output-path>
|
||||
<root id="root">
|
||||
<element id="javaee-facet-resources" facet="learn1/web/Web" />
|
||||
<element id="directory" name="WEB-INF">
|
||||
<element id="directory" name="classes">
|
||||
<element id="module-output" name="learn1" />
|
||||
</element>
|
||||
<element id="directory" name="lib">
|
||||
<element id="file-copy" path="$PROJECT_DIR$/lib/sqlite-jdbc-3.47.0.0.jar" />
|
||||
<element id="library" level="project" name="mysql-connector" />
|
||||
<element id="library" level="project" name="commons-dbcp2-2.9.0" />
|
||||
<element id="library" level="project" name="commons-logging-1.3.4" />
|
||||
<element id="library" level="project" name="commons-pool2-2.9.0" />
|
||||
</element>
|
||||
</element>
|
||||
</root>
|
||||
</artifact>
|
||||
</component>
|
||||
13
.idea/artifacts/test02_war_exploded.xml
Normal file
13
.idea/artifacts/test02_war_exploded.xml
Normal file
@ -0,0 +1,13 @@
|
||||
<component name="ArtifactManager">
|
||||
<artifact type="exploded-war" name="test02:war exploded">
|
||||
<output-path>$PROJECT_DIR$/out/artifacts/test02_war_exploded</output-path>
|
||||
<root id="root">
|
||||
<element id="javaee-facet-resources" facet="test02/web/Web" />
|
||||
<element id="directory" name="WEB-INF">
|
||||
<element id="directory" name="classes">
|
||||
<element id="module-output" name="test02" />
|
||||
</element>
|
||||
</element>
|
||||
</root>
|
||||
</artifact>
|
||||
</component>
|
||||
17
.idea/artifacts/test03_war_exploded.xml
Normal file
17
.idea/artifacts/test03_war_exploded.xml
Normal file
@ -0,0 +1,17 @@
|
||||
<component name="ArtifactManager">
|
||||
<artifact type="exploded-war" name="test03:war exploded">
|
||||
<output-path>$PROJECT_DIR$/out/artifacts/test03_war_exploded</output-path>
|
||||
<root id="root">
|
||||
<element id="javaee-facet-resources" facet="test03/web/Web" />
|
||||
<element id="directory" name="WEB-INF">
|
||||
<element id="directory" name="classes">
|
||||
<element id="module-output" name="test03" />
|
||||
</element>
|
||||
<element id="directory" name="lib">
|
||||
<element id="library" level="project" name="mysql-connector" />
|
||||
<element id="library" level="project" name="sqlite-jdbc-3.47.0.0" />
|
||||
</element>
|
||||
</element>
|
||||
</root>
|
||||
</artifact>
|
||||
</component>
|
||||
20
.idea/artifacts/test04_war_exploded.xml
Normal file
20
.idea/artifacts/test04_war_exploded.xml
Normal file
@ -0,0 +1,20 @@
|
||||
<component name="ArtifactManager">
|
||||
<artifact type="exploded-war" name="test04:war exploded">
|
||||
<output-path>$PROJECT_DIR$/out/artifacts/test04_war_exploded</output-path>
|
||||
<root id="root">
|
||||
<element id="javaee-facet-resources" facet="test04/web/Web" />
|
||||
<element id="directory" name="WEB-INF">
|
||||
<element id="directory" name="classes">
|
||||
<element id="module-output" name="test04" />
|
||||
</element>
|
||||
<element id="directory" name="lib">
|
||||
<element id="library" level="project" name="sqlite-jdbc-3.47.0.0" />
|
||||
<element id="file-copy" path="$PROJECT_DIR$/lib/sqlite-jdbc-3.47.0.0.jar" />
|
||||
<element id="file-copy" path="$PROJECT_DIR$/lib/commons-dbcp2-2.9.0.jar" />
|
||||
<element id="file-copy" path="$PROJECT_DIR$/lib/commons-logging-1.3.4.jar" />
|
||||
<element id="file-copy" path="$PROJECT_DIR$/lib/commons-pool2-2.9.0.jar" />
|
||||
</element>
|
||||
</element>
|
||||
</root>
|
||||
</artifact>
|
||||
</component>
|
||||
8
.idea/compiler.xml
Normal file
8
.idea/compiler.xml
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<annotationProcessing>
|
||||
<profile default="true" name="Default" enabled="true" />
|
||||
</annotationProcessing>
|
||||
</component>
|
||||
</project>
|
||||
28
.idea/dataSources.xml
Normal file
28
.idea/dataSources.xml
Normal file
@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||
<data-source source="LOCAL" name="317" uuid="804ccf64-bacb-42eb-b09d-b140ef8554f8">
|
||||
<driver-ref>mysql.8</driver-ref>
|
||||
<synchronize>true</synchronize>
|
||||
<remarks>317</remarks>
|
||||
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
|
||||
<jdbc-url>jdbc:mysql://10.19.38.253:3306</jdbc-url>
|
||||
<jdbc-additional-properties>
|
||||
<property name="com.intellij.clouds.kubernetes.db.host.port" />
|
||||
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
|
||||
<property name="com.intellij.clouds.kubernetes.db.container.port" />
|
||||
</jdbc-additional-properties>
|
||||
<working-dir>$ProjectFileDir$</working-dir>
|
||||
</data-source>
|
||||
<data-source source="LOCAL" name="db_student.db" uuid="13372887-38a4-4cb1-88a7-cb74208ae924">
|
||||
<driver-ref>sqlite.xerial</driver-ref>
|
||||
<synchronize>true</synchronize>
|
||||
<jdbc-driver>org.sqlite.JDBC</jdbc-driver>
|
||||
<jdbc-url>jdbc:sqlite:$PROJECT_DIR$/../../database/学习/java测试数据库/db_student.db</jdbc-url>
|
||||
<jdbc-additional-properties>
|
||||
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
|
||||
</jdbc-additional-properties>
|
||||
<working-dir>$ProjectFileDir$</working-dir>
|
||||
</data-source>
|
||||
</component>
|
||||
</project>
|
||||
8
.idea/encodings.xml
Normal file
8
.idea/encodings.xml
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding" defaultCharsetForPropertiesFiles="GBK">
|
||||
<file url="file://$PROJECT_DIR$/learn1/web/js/course-edit.js" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/learn1/web/js/index.js" charset="UTF-8" />
|
||||
<file url="PROJECT" charset="GBK" />
|
||||
</component>
|
||||
</project>
|
||||
9
.idea/inspectionProfiles/Project_Default.xml
Normal file
9
.idea/inspectionProfiles/Project_Default.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="AutoCloseableResource" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="METHOD_MATCHER_CONFIG" value="java.util.Formatter,format,java.io.Writer,append,com.google.common.base.Preconditions,checkNotNull,org.hibernate.Session,close,java.io.PrintWriter,printf,java.io.PrintStream,printf,java.sql.Connection,prepareStatement,java.lang.ClassLoader,getResourceAsStream,org.apache.commons.dbcp2.BasicDataSourceFactory,createDataSource" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="ThrowablePrintStackTrace" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||
</profile>
|
||||
</component>
|
||||
9
.idea/libraries/commons_dbcp2_2_9_0.xml
Normal file
9
.idea/libraries/commons_dbcp2_2_9_0.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<component name="libraryTable">
|
||||
<library name="commons-dbcp2-2.9.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/commons-dbcp2-2.9.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
||||
9
.idea/libraries/commons_logging_1_3_4.xml
Normal file
9
.idea/libraries/commons_logging_1_3_4.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<component name="libraryTable">
|
||||
<library name="commons-logging-1.3.4">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/commons-logging-1.3.4.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
||||
9
.idea/libraries/commons_pool2_2_9_0.xml
Normal file
9
.idea/libraries/commons_pool2_2_9_0.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<component name="libraryTable">
|
||||
<library name="commons-pool2-2.9.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/commons-pool2-2.9.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
||||
9
.idea/libraries/lombok.xml
Normal file
9
.idea/libraries/lombok.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<component name="libraryTable">
|
||||
<library name="lombok">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/lombok.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
||||
9
.idea/libraries/mysql_connector.xml
Normal file
9
.idea/libraries/mysql_connector.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<component name="libraryTable">
|
||||
<library name="mysql-connector">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/mysql-connector.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
||||
9
.idea/libraries/sqlite_jdbc_3_47_0_0.xml
Normal file
9
.idea/libraries/sqlite_jdbc_3_47_0_0.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<component name="libraryTable">
|
||||
<library name="sqlite-jdbc-3.47.0.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/sqlite-jdbc-3.47.0.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
||||
6
.idea/misc.xml
Normal file
6
.idea/misc.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="temurin-21" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
||||
13
.idea/modules.xml
Normal file
13
.idea/modules.xml
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/homework02/homework02.iml" filepath="$PROJECT_DIR$/homework02/homework02.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/learn1/learn1.iml" filepath="$PROJECT_DIR$/learn1/learn1.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/test02/test02.iml" filepath="$PROJECT_DIR$/test02/test02.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/test03/test03.iml" filepath="$PROJECT_DIR$/test03/test03.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/test04/test04.iml" filepath="$PROJECT_DIR$/test04/test04.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/web实验.iml" filepath="$PROJECT_DIR$/.idea/web实验.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
7
.idea/sqldialects.xml
Normal file
7
.idea/sqldialects.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="SqlDialectMappings">
|
||||
<file url="file://$PROJECT_DIR$/test03/src/login/UserDB.java" dialect="GenericSQL" />
|
||||
<file url="PROJECT" dialect="MySQL" />
|
||||
</component>
|
||||
</project>
|
||||
124
.idea/uiDesigner.xml
Normal file
124
.idea/uiDesigner.xml
Normal file
@ -0,0 +1,124 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Palette2">
|
||||
<group name="Swing">
|
||||
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
||||
</item>
|
||||
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
|
||||
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
||||
<initial-values>
|
||||
<property name="text" value="Button" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="RadioButton" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="CheckBox" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="Label" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
||||
<preferred-size width="-1" height="20" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
||||
</item>
|
||||
</group>
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/vcs.xml
Normal file
6
.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
11
.idea/webContexts.xml
Normal file
11
.idea/webContexts.xml
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="WebContextManager">
|
||||
<option name="state">
|
||||
<map>
|
||||
<entry key="file://$PROJECT_DIR$/homework2/web/index.jsp" value="file://$PROJECT_DIR$/homework2/web" />
|
||||
<entry key="file://$PROJECT_DIR$/test04/web/course/course.jsp" value="file://$PROJECT_DIR$/test04/web/course" />
|
||||
</map>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
16
.idea/web实验.iml
Normal file
16
.idea/web实验.iml
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/lib" type="java-resource" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/实验指导资料" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/打包上传" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Tomcat 10.1.31" level="application_server_libraries" />
|
||||
<orderEntry type="library" name="mysql-connector" level="project" />
|
||||
<orderEntry type="library" name="sqlite-jdbc-3.47.0.0" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
26
homework02/homework02.iml
Normal file
26
homework02/homework02.iml
Normal file
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="web" name="Web">
|
||||
<configuration>
|
||||
<descriptors>
|
||||
<deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/web/WEB-INF/web.xml" />
|
||||
</descriptors>
|
||||
<webroots>
|
||||
<root url="file://$MODULE_DIR$/web" relative="/" />
|
||||
</webroots>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="commons-dbcp2-2.9.0" level="project" />
|
||||
<orderEntry type="library" name="commons-logging-1.3.4" level="project" />
|
||||
<orderEntry type="library" name="commons-pool2-2.9.0" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
39
homework02/src/login/User.java
Normal file
39
homework02/src/login/User.java
Normal file
@ -0,0 +1,39 @@
|
||||
package login;
|
||||
|
||||
public class User {
|
||||
private int id;
|
||||
private String name;
|
||||
private String password;
|
||||
|
||||
public User(int id, String name, String password) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "id:" + id +
|
||||
", name=" + name +
|
||||
", password=" + password;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
}
|
||||
36
homework02/src/login/UserDB.java
Normal file
36
homework02/src/login/UserDB.java
Normal file
@ -0,0 +1,36 @@
|
||||
package login;
|
||||
|
||||
import java.sql.*;
|
||||
import java.util.*;
|
||||
|
||||
public class UserDB {
|
||||
private final static String DB_URL = "jdbc:mysql://10.19.38.253:3306/db_student";
|
||||
private final static String DB_USER = "admin";
|
||||
private final static String DB_PASSWORD = "1227496003131313xY";
|
||||
|
||||
public List<User> getAllUsers() throws ClassNotFoundException {
|
||||
Class.forName("com.mysql.cj.jdbc.Driver");
|
||||
List<User> userList = new ArrayList<>();
|
||||
try (Connection connection = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
|
||||
Statement statement = connection.createStatement();
|
||||
ResultSet resultSet = statement.executeQuery("SELECT N_USER_ID, VC_LOGIN_NAME, VC_PASSWORD FROM t_user WHERE VC_LOGIN_NAME != 'admin';")) {
|
||||
while (resultSet.next()) {
|
||||
int id = resultSet.getInt("N_USER_ID");
|
||||
String name = resultSet.getString("VC_LOGIN_NAME");
|
||||
String password = resultSet.getString("VC_PASSWORD");
|
||||
User user = new User(id, name, password);
|
||||
userList.add(user);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return userList;
|
||||
}
|
||||
|
||||
public void ShowCommonUsers() throws ClassNotFoundException {
|
||||
List<User> userList = getAllUsers();
|
||||
for (User user : userList) {
|
||||
System.out.println(user);
|
||||
}
|
||||
}
|
||||
}
|
||||
6
homework02/web/WEB-INF/web.xml
Normal file
6
homework02/web/WEB-INF/web.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
|
||||
version="6.0">
|
||||
</web-app>
|
||||
18
homework02/web/index.jsp
Normal file
18
homework02/web/index.jsp
Normal file
@ -0,0 +1,18 @@
|
||||
<%@ page import="login.UserDB" %><%--
|
||||
Created by IntelliJ IDEA.
|
||||
User: 25589
|
||||
Date: 2024/11/17
|
||||
Time: 下午9:26
|
||||
To change this template use File | Settings | File Templates.
|
||||
--%>
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<html>
|
||||
<head>
|
||||
<title>JDBC应用</title>
|
||||
</head>
|
||||
<body>
|
||||
<% UserDB dbBean = new UserDB();
|
||||
dbBean.ShowCommonUsers();
|
||||
%>
|
||||
</body>
|
||||
</html>
|
||||
30
learn1/learn1.iml
Normal file
30
learn1/learn1.iml
Normal file
@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="web" name="Web">
|
||||
<configuration>
|
||||
<descriptors>
|
||||
<deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/web/WEB-INF/web.xml" />
|
||||
</descriptors>
|
||||
<webroots>
|
||||
<root url="file://$MODULE_DIR$/web" relative="/" />
|
||||
</webroots>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="lombok" level="project" />
|
||||
<orderEntry type="library" name="mysql-connector" level="project" />
|
||||
<orderEntry type="library" name="sqlite-jdbc-3.47.0.0" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Tomcat 10.1.31" level="application_server_libraries" />
|
||||
<orderEntry type="library" name="commons-dbcp2-2.9.0" level="project" />
|
||||
<orderEntry type="library" name="commons-logging-1.3.4" level="project" />
|
||||
<orderEntry type="library" name="commons-pool2-2.9.0" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
78
learn1/src/common/DBTool.java
Normal file
78
learn1/src/common/DBTool.java
Normal file
@ -0,0 +1,78 @@
|
||||
package common;
|
||||
|
||||
import org.apache.commons.dbcp2.BasicDataSourceFactory;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.io.*;
|
||||
import java.sql.*;
|
||||
import java.util.Properties;
|
||||
|
||||
|
||||
/**
|
||||
* 这是一个数据库工具类,创建了一个数据库连接池
|
||||
* 需要在database.properties中配置数据库连接属性
|
||||
* @author Awin-x
|
||||
*/
|
||||
public class DBTool {
|
||||
static DataSource ds;
|
||||
static{
|
||||
Properties prop = new Properties();
|
||||
try {
|
||||
InputStream database_info = DBTool.class.getClassLoader().getResourceAsStream("database.properties");
|
||||
if (database_info != null) {
|
||||
prop.load(new InputStreamReader(database_info, "GBK"));
|
||||
prop.list(System.out);
|
||||
}else{
|
||||
throw new FileNotFoundException("database.properties file does not exist in the classpath");
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.out.println("数据库配置加载失败!");
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
try {
|
||||
ds = BasicDataSourceFactory.createDataSource(prop);
|
||||
} catch (Exception e) {
|
||||
System.out.println("数据库连接池初始化失败");
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static Connection getConnection(){
|
||||
try{
|
||||
return ds.getConnection();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static PreparedStatement getPreparedStatement(String sql) throws SQLException{
|
||||
//noinspection SqlSourceToSinkFlow
|
||||
return ds.getConnection().prepareStatement(sql);
|
||||
}
|
||||
|
||||
public static void close(Connection conn, PreparedStatement ps, ResultSet rs){
|
||||
try{
|
||||
if(rs != null){
|
||||
rs.close();
|
||||
}
|
||||
if(ps != null){
|
||||
ps.close();
|
||||
}
|
||||
if(conn != null){
|
||||
conn.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
System.out.println("关闭失败");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static void close(PreparedStatement ps, ResultSet rs){
|
||||
close(null, ps, rs);
|
||||
}
|
||||
|
||||
public static void close(PreparedStatement ps){
|
||||
close(null, ps, null);
|
||||
}
|
||||
}
|
||||
35
learn1/src/course/CourseAddAction.java
Normal file
35
learn1/src/course/CourseAddAction.java
Normal file
@ -0,0 +1,35 @@
|
||||
package course;
|
||||
|
||||
import jakarta.servlet.annotation.WebServlet;
|
||||
import jakarta.servlet.http.HttpServlet;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import login.UserInfo;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@WebServlet("/CourseAddAction")
|
||||
public class CourseAddAction extends HttpServlet {
|
||||
protected void service(HttpServletRequest req, HttpServletResponse resp) throws IOException {
|
||||
String path = req.getContextPath();
|
||||
if (req.getSession().getAttribute("user") == null){
|
||||
resp.sendRedirect(path+"/login/login.jsp");
|
||||
return;
|
||||
}
|
||||
CourseInfo course = new CourseInfo();
|
||||
String name = req.getParameter("name");
|
||||
int type = Integer.parseInt(req.getParameter("type"));
|
||||
float credit = Float.parseFloat(req.getParameter("credit"));
|
||||
int grade = Integer.parseInt(req.getParameter("grade"));
|
||||
int major = Integer.parseInt(req.getParameter("major"));
|
||||
String detail = req.getParameter("detail");
|
||||
course.setName(name);
|
||||
course.setType(type);
|
||||
course.setCredit(credit);
|
||||
course.setGrade(grade);
|
||||
course.setMajor(major);
|
||||
course.setDetail(detail);
|
||||
CourseDB.insertCourse(course);
|
||||
resp.sendRedirect(path+"/course/course.jsp");
|
||||
}
|
||||
}
|
||||
108
learn1/src/course/CourseDB.java
Normal file
108
learn1/src/course/CourseDB.java
Normal file
@ -0,0 +1,108 @@
|
||||
package course;
|
||||
|
||||
import common.DBTool;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* 这是课程表(t_course)的DAO类,提供了增删改查和列出方法
|
||||
* @author Awin-x
|
||||
*/
|
||||
public class CourseDB {
|
||||
public static ArrayList<CourseInfo> getAllCourses(){
|
||||
ArrayList<CourseInfo> courseList = new ArrayList<>();
|
||||
try{
|
||||
PreparedStatement ps = DBTool.getPreparedStatement("select * from t_course");
|
||||
ResultSet rs = ps.executeQuery();
|
||||
while(rs.next()){
|
||||
int id = rs.getInt("N_COURSE_ID");
|
||||
String name = rs.getString("VC_COURSE_NAME");
|
||||
int type = rs.getInt("N_TYPE");
|
||||
float credits = rs.getFloat("F_CREDIT");
|
||||
int grade = rs.getInt("N_GRADE");
|
||||
int major = rs.getInt("N_MAJOR");
|
||||
String detail = rs.getString("VC_DETAIL");
|
||||
courseList.add(new CourseInfo(id, name, type, credits, grade, major, detail));
|
||||
}
|
||||
DBTool.close(ps, rs);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return courseList;
|
||||
}
|
||||
|
||||
public static CourseInfo getCourseInfo(int id){
|
||||
CourseInfo courseInfo = null;
|
||||
try{
|
||||
PreparedStatement ps = DBTool.getPreparedStatement("select * from t_course WHERE N_COURSE_ID = ?");
|
||||
ps.setInt(1, id);
|
||||
ResultSet rs = ps.executeQuery();
|
||||
while(rs.next()){
|
||||
String name = rs.getString("VC_COURSE_NAME");
|
||||
int type = rs.getInt("N_TYPE");
|
||||
float credits = rs.getFloat("F_CREDIT");
|
||||
int grade = rs.getInt("N_GRADE");
|
||||
int major = rs.getInt("N_MAJOR");
|
||||
String detail = rs.getString("VC_DETAIL");
|
||||
courseInfo = new CourseInfo(id, name, type, credits, grade, major, detail);
|
||||
}
|
||||
DBTool.close(ps, rs);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return courseInfo;
|
||||
}
|
||||
|
||||
public static int editCourse(CourseInfo course){
|
||||
int flag;
|
||||
try{
|
||||
PreparedStatement ps = DBTool.getPreparedStatement("UPDATE t_course SET VC_COURSE_NAME = ?,"+
|
||||
" N_TYPE = ?, F_CREDIT = ?, N_GRADE = ?, N_MAJOR = ?, VC_DETAIL = ? WHERE N_COURSE_ID = ?");
|
||||
ps.setString(1, course.getName());
|
||||
ps.setInt(2, course.getType());
|
||||
ps.setFloat(3, course.getCredit());
|
||||
ps.setInt(4, course.getGrade());
|
||||
ps.setInt(5, course.getMajor());
|
||||
ps.setString(6, course.getDetail());
|
||||
ps.setInt(7, course.getId());
|
||||
flag = ps.executeUpdate();
|
||||
DBTool.close(ps);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
public static void insertCourse(CourseInfo course){
|
||||
try{
|
||||
String sql = "INSERT INTO t_course (VC_COURSE_NAME, N_TYPE, F_CREDIT, N_GRADE, N_MAJOR, VC_DETAIL) VALUES(?, ?, ?, ?, ?, ?)";
|
||||
PreparedStatement ps = DBTool.getPreparedStatement(sql);
|
||||
ps.setString(1, course.getName());
|
||||
ps.setInt(2, course.getType());
|
||||
ps.setFloat(3, course.getCredit());
|
||||
ps.setInt(4, course.getGrade());
|
||||
ps.setInt(5, course.getMajor());
|
||||
ps.setString(6, course.getDetail());
|
||||
ps.executeUpdate();
|
||||
DBTool.close(ps);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void deleteCourse(int id){
|
||||
try{
|
||||
String sql = "DELETE FROM t_course WHERE N_COURSE_ID = ?";
|
||||
PreparedStatement ps = DBTool.getPreparedStatement(sql);
|
||||
ps.setInt(1, id);
|
||||
ps.executeUpdate();
|
||||
DBTool.close(ps);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
23
learn1/src/course/CourseDeleteAction.java
Normal file
23
learn1/src/course/CourseDeleteAction.java
Normal file
@ -0,0 +1,23 @@
|
||||
package course;
|
||||
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.annotation.WebServlet;
|
||||
import jakarta.servlet.http.HttpServlet;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@WebServlet("/CourseDeleteAction")
|
||||
public class CourseDeleteAction extends HttpServlet {
|
||||
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
String path = req.getContextPath();
|
||||
if (req.getSession().getAttribute("user") == null){
|
||||
resp.sendRedirect(path+"/login/login.jsp");
|
||||
return;
|
||||
}
|
||||
int id = Integer.parseInt(req.getParameter("id"));
|
||||
CourseDB.deleteCourse(id);
|
||||
resp.sendRedirect(path+"/course/course.jsp");
|
||||
}
|
||||
}
|
||||
40
learn1/src/course/CourseEditAction.java
Normal file
40
learn1/src/course/CourseEditAction.java
Normal file
@ -0,0 +1,40 @@
|
||||
package course;
|
||||
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.annotation.WebServlet;
|
||||
import jakarta.servlet.http.HttpServlet;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@WebServlet("/CourseEditAction")
|
||||
public class CourseEditAction extends HttpServlet {
|
||||
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
String path = req.getContextPath();
|
||||
if (req.getSession().getAttribute("user") == null){
|
||||
resp.setStatus(403);
|
||||
return;
|
||||
}
|
||||
int id = Integer.parseInt(req.getParameter("id"));
|
||||
CourseInfo course = CourseDB.getCourseInfo(id);
|
||||
String name = req.getParameter("name");
|
||||
int type = Integer.parseInt(req.getParameter("type"));
|
||||
float credit = Float.parseFloat(req.getParameter("credit"));
|
||||
int grade = Integer.parseInt(req.getParameter("grade"));
|
||||
int major = Integer.parseInt(req.getParameter("major"));
|
||||
String detail = req.getParameter("detail");
|
||||
course.setName(name);
|
||||
course.setType(type);
|
||||
course.setCredit(credit);
|
||||
course.setGrade(grade);
|
||||
course.setMajor(major);
|
||||
course.setDetail(detail);
|
||||
|
||||
if (CourseDB.editCourse(course)>=1){
|
||||
resp.sendRedirect(path+"/course/course.jsp");
|
||||
}else {
|
||||
resp.sendRedirect(req.getContextPath()+"/course/course.jsp?flag='update-failed'");
|
||||
}
|
||||
}
|
||||
}
|
||||
31
learn1/src/course/CourseInfo.java
Normal file
31
learn1/src/course/CourseInfo.java
Normal file
@ -0,0 +1,31 @@
|
||||
package course;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@AllArgsConstructor
|
||||
@ToString
|
||||
@NoArgsConstructor
|
||||
public class CourseInfo {
|
||||
private int id;
|
||||
private String name;
|
||||
private int type;
|
||||
private float credit;
|
||||
private int grade;
|
||||
private int major;
|
||||
private String detail;
|
||||
|
||||
public String toJSON(){
|
||||
String json="{";
|
||||
json += "\"id\":"+id+",";
|
||||
json += "\"name\":\""+name+"\",";
|
||||
json += "\"type\":"+type+",";
|
||||
json += "\"credit\":"+credit+",";
|
||||
json += "\"grade\":"+grade+",";
|
||||
json += "\"major\":"+major+",";
|
||||
json += "\"detail\":\""+detail+"\"";
|
||||
json += "}";
|
||||
return json;
|
||||
}
|
||||
}
|
||||
31
learn1/src/course/CourseListAction.java
Normal file
31
learn1/src/course/CourseListAction.java
Normal file
@ -0,0 +1,31 @@
|
||||
package course;
|
||||
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.annotation.WebServlet;
|
||||
import jakarta.servlet.http.HttpServlet;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.ArrayList;
|
||||
|
||||
@WebServlet("/CourseListAction")
|
||||
public class CourseListAction extends HttpServlet {
|
||||
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
String path = req.getContextPath();
|
||||
if (req.getSession().getAttribute("user") == null){
|
||||
resp.setStatus(403);
|
||||
return;
|
||||
}
|
||||
ArrayList<CourseInfo> course_list = CourseDB.getAllCourses();
|
||||
StringBuilder json= new StringBuilder("[");
|
||||
for (CourseInfo course : course_list) {
|
||||
json.append(course.toJSON()).append(",");
|
||||
}
|
||||
resp.setContentType("application/json;charset=UTF-8");
|
||||
PrintWriter out = resp.getWriter();
|
||||
out.print(json.substring(0, json.length()-1));
|
||||
out.print("]");
|
||||
}
|
||||
}
|
||||
41
learn1/src/database.properties
Normal file
41
learn1/src/database.properties
Normal file
@ -0,0 +1,41 @@
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
#DriverClassName=com.mysql.cj.jdbc.Driver
|
||||
#url=jdbc:mysql://10.19.38.253:3306/chat?useUnicode=true&characterEncoding=utf-8&useSSL=true
|
||||
#username=admin
|
||||
#password=1227496003131313xY
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
driverClassName=org.sqlite.JDBC
|
||||
url=jdbc:sqlite:F:\\Work_Area\\desk\\database\\ѧϰ\\java²âÊÔÊý¾Ý¿â\\db_student.db
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
|
||||
defaultAutoCommit=true
|
||||
|
||||
defaultReadOnly=false
|
||||
|
||||
initialSize=10
|
||||
|
||||
maxActive=20
|
||||
|
||||
maxIdle=20
|
||||
|
||||
minIdle=5
|
||||
|
||||
maxWait=10000
|
||||
|
||||
testOnBorrow=true
|
||||
|
||||
testOnReturn=false
|
||||
|
||||
validationQuery=select 1
|
||||
|
||||
validationQueryTimeout=1
|
||||
|
||||
testWhileIdle=false
|
||||
|
||||
timeBetweenEvictionRunsMillis=1
|
||||
|
||||
numTestsPerEvictionRun=3
|
||||
|
||||
poolPreparedStatements=true
|
||||
|
||||
maxOpenPreparedStatements=3
|
||||
52
learn1/src/login/UserDB.java
Normal file
52
learn1/src/login/UserDB.java
Normal file
@ -0,0 +1,52 @@
|
||||
package login;
|
||||
|
||||
import common.DBTool;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
|
||||
public class UserDB {
|
||||
public static UserInfo GetUserInfo(int id) {
|
||||
UserInfo u = new UserInfo();
|
||||
ResultSet rs = null;
|
||||
try{
|
||||
String sql = "select * from t_user where N_USER_ID = ?";
|
||||
PreparedStatement ps = DBTool.getPreparedStatement(sql);
|
||||
ps.setInt(1, id);
|
||||
rs = ps.executeQuery();
|
||||
if(rs.next()) {
|
||||
u.setId(rs.getInt("N_USER_ID"));
|
||||
u.setName(rs.getString("VC_LOGIN_NAME"));
|
||||
u.setPass(rs.getString("VC_PASSWORD"));
|
||||
}else{
|
||||
u = null;
|
||||
}
|
||||
DBTool.close(ps, rs);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return u;
|
||||
}
|
||||
public static UserInfo GetUserInfoByName(String username) {
|
||||
UserInfo u = new UserInfo();
|
||||
ResultSet rs = null;
|
||||
try{
|
||||
String sql = "select * from t_user where VC_LOGIN_NAME = ?";
|
||||
PreparedStatement ps = DBTool.getPreparedStatement(sql);
|
||||
ps.setString(1, username);
|
||||
rs = ps.executeQuery();
|
||||
if(rs.next()) {
|
||||
u.setId(rs.getInt("N_USER_ID"));
|
||||
u.setName(rs.getString("VC_LOGIN_NAME"));
|
||||
u.setPass(rs.getString("VC_PASSWORD"));
|
||||
}else{
|
||||
u = null;
|
||||
}
|
||||
DBTool.close(ps, rs);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return u;
|
||||
}
|
||||
}
|
||||
16
learn1/src/login/UserInfo.java
Normal file
16
learn1/src/login/UserInfo.java
Normal file
@ -0,0 +1,16 @@
|
||||
package login;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.ToString;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@ToString
|
||||
public class UserInfo {
|
||||
private int id;
|
||||
private String name;
|
||||
private String pass;
|
||||
}
|
||||
36
learn1/src/login/UserLoginAction.java
Normal file
36
learn1/src/login/UserLoginAction.java
Normal file
@ -0,0 +1,36 @@
|
||||
package login;
|
||||
|
||||
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.annotation.WebServlet;
|
||||
import jakarta.servlet.http.HttpServlet;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@WebServlet("/UserLoginAction")
|
||||
public class UserLoginAction extends HttpServlet {
|
||||
protected void doPost(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
|
||||
String path = req.getContextPath();
|
||||
if (req.getSession().getAttribute("user") != null){
|
||||
response.sendRedirect(path+"/home.jsp");
|
||||
}
|
||||
String username = req.getParameter("username");
|
||||
String password = req.getParameter("password");
|
||||
int flag;
|
||||
UserInfo user = UserDB.GetUserInfoByName(username);
|
||||
if(user == null) {
|
||||
flag = 1;
|
||||
}else if (user.getPass().equals(password)) {
|
||||
flag=0;
|
||||
req.getSession().setAttribute("user", user);
|
||||
}else{
|
||||
flag=2;
|
||||
}
|
||||
System.out.println(user);
|
||||
}
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||
response.sendRedirect("error.jsp");
|
||||
}
|
||||
}
|
||||
22
learn1/src/login/UserLogoutAction.java
Normal file
22
learn1/src/login/UserLogoutAction.java
Normal file
@ -0,0 +1,22 @@
|
||||
package login;
|
||||
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.annotation.WebServlet;
|
||||
import jakarta.servlet.http.HttpServlet;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@WebServlet("/UserLogoutAction")
|
||||
public class UserLogoutAction extends HttpServlet {
|
||||
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||
String username = request.getParameter("username");
|
||||
UserInfo user = (UserInfo)request.getSession().getAttribute("user");
|
||||
if(user != null) {
|
||||
request.getSession().removeAttribute("user");
|
||||
}
|
||||
String path = request.getContextPath();
|
||||
response.sendRedirect(path+"/login/login.jsp");
|
||||
}
|
||||
}
|
||||
29
learn1/src/test/DBTest.java
Normal file
29
learn1/src/test/DBTest.java
Normal file
@ -0,0 +1,29 @@
|
||||
package test;
|
||||
|
||||
import common.DBTool;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
|
||||
public class DBTest {
|
||||
public static void main(String[] args) {
|
||||
String testSql = "select * from t_user";
|
||||
try {
|
||||
Class.forName("common.DBTool");
|
||||
} catch (ClassNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
try {
|
||||
PreparedStatement ps = DBTool.getPreparedStatement(testSql);
|
||||
ResultSet rs = ps.executeQuery();
|
||||
while (rs.next()) {
|
||||
System.out.println(rs.getString(1));
|
||||
System.out.println(rs.getString(2));
|
||||
System.out.println(rs.getString(3));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
6
learn1/web/WEB-INF/web.xml
Normal file
6
learn1/web/WEB-INF/web.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
|
||||
version="6.0">
|
||||
</web-app>
|
||||
28
learn1/web/course/course.jsp
Normal file
28
learn1/web/course/course.jsp
Normal file
@ -0,0 +1,28 @@
|
||||
<%--
|
||||
Created by IntelliJ IDEA.
|
||||
User: 25589
|
||||
Date: 2024/11/21
|
||||
Time: 下午5:00
|
||||
To change this template use File | Settings | File Templates.
|
||||
--%>
|
||||
<%@ page contentType="text/html;charset=UTF-8" %>
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>课程信息列表</title>
|
||||
<link rel="stylesheet" href="../css/course.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<table id="course-list">
|
||||
</table>
|
||||
<div class="course-editor"></div>
|
||||
</div>
|
||||
</body>
|
||||
<script>
|
||||
let path = "${pageContext.request.contextPath}";
|
||||
</script>
|
||||
<script src="${pageContext.request.contextPath}/js/jquery-3.7.1.min.js"></script>
|
||||
<script src="${pageContext.request.contextPath}/js/course-edit.js"></script>
|
||||
</html>
|
||||
87
learn1/web/course/course_edit.jsp
Normal file
87
learn1/web/course/course_edit.jsp
Normal file
@ -0,0 +1,87 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<div class="container">
|
||||
<form class="course-edit">
|
||||
<input type="hidden" name="id" id="id-input" value="-1">
|
||||
<table class="input-form">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="td_header" colspan="3">课程信息录入,<span class="star">*</span>代表必填</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tr>
|
||||
<td><label for="name-input">名称</label></td>
|
||||
<td>
|
||||
<input name="name" type="text" id="name-input">
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>5~20位字符
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="type-input">性质</label></td>
|
||||
<td>
|
||||
<select name="type" id="type-input">
|
||||
<option value="1">公共基础必修课</option>
|
||||
<option value="2">公共选修课</option>
|
||||
<option value="3">学科基础课</option>
|
||||
<option value="4">专业必修课</option>
|
||||
<option value="5">专业选修课</option>
|
||||
<option value="6">集中性实践教学环节</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="credit-input">学分</label></td>
|
||||
<td>
|
||||
<input name="credit" type="number" id="credit-input">
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>数值
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="grade-input">年份</label></td>
|
||||
<td>
|
||||
<input name="grade" type="text" id="grade-input">
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>4位数年份
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>开设专业</td>
|
||||
<td>
|
||||
<input name="major" value="1" type="radio" id="major-input-1">
|
||||
<label for="major-input-1">软件工程</label>
|
||||
<input name="major" value="2" type="radio" id="major-input-2">
|
||||
<label for="major-input-2">空间信息</label>
|
||||
<input name="major" value="3" type="radio" id="major-input-3">
|
||||
<label for="major-input-3">大数据</label>
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="detail-input">备注</label></td>
|
||||
<td>
|
||||
<textarea rows="5" name="detail" id="detail-input"></textarea>
|
||||
</td>
|
||||
<td>
|
||||
200个字符以内
|
||||
</td>
|
||||
</tr>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<input type="submit">
|
||||
<button onclick="closeEdit()">关闭编辑</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
82
learn1/web/course/tmp
Normal file
82
learn1/web/course/tmp
Normal file
@ -0,0 +1,82 @@
|
||||
<form action="" method="post" class="course-edit">
|
||||
<table class="input-form ">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="td_header" colspan="3">课程信息录入,<span class="star">*</span></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tr>
|
||||
<td><label for="name-input">名称</label></td>
|
||||
<td>
|
||||
<input name="name" type="text" id="name-input">
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>5~20位字符
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="type-input">性质</label></td>
|
||||
<td>
|
||||
<select name="type" id="type-input">
|
||||
<option value="1">公共基础必修课</option>
|
||||
<option value="2">公共选修课</option>
|
||||
<option value="3">学科基础课</option>
|
||||
<option value="4">专业必修课</option>
|
||||
<option value="5">专业选修课</option>
|
||||
<option value="6">集中性实践教学环节</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="score-input">学分</label></td>
|
||||
<td>
|
||||
<input name="credit" type="number" id="score-input">
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>数值
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="year-input">年份</label></td>
|
||||
<td>
|
||||
<input name="grade" type="text" id="year-input">
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>4位数年份
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>开设专业</td>
|
||||
<td>
|
||||
<input name="major" value="1" type="radio" id="major-input-1">
|
||||
<label for="major-input-1">软件工程</label>
|
||||
<input name="major" value="2" type="radio" id="major-input-2">
|
||||
<label for="major-input-2">空间信息</label>
|
||||
<input name="major" value="3" type="radio" id="major-input-3">
|
||||
<label for="major-input-3">大数据</label>
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="note-input">备注</label></td>
|
||||
<td>
|
||||
<textarea rows="5" name="detail" id="note-input"></textarea>
|
||||
</td>
|
||||
<td>
|
||||
200个字符以内
|
||||
</td>
|
||||
</tr>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<input type="submit">
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</form>
|
||||
62
learn1/web/css/course.css
Normal file
62
learn1/web/css/course.css
Normal file
@ -0,0 +1,62 @@
|
||||
|
||||
tr:nth-child(odd){
|
||||
background:#F4F4F4;
|
||||
}
|
||||
|
||||
.tr-head{
|
||||
background-color: #2bf;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
table{
|
||||
width:100%;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
.td1 {
|
||||
BACKGROUND-COLOR: #e6e6e6
|
||||
}
|
||||
.td_header {
|
||||
BACKGROUND-COLOR: #e6e6e6; COLOR: #000000
|
||||
}
|
||||
.td_1 {
|
||||
BACKGROUND-COLOR: #f8fbfb; COLOR: #000000
|
||||
}
|
||||
.td_2 {
|
||||
BACKGROUND-COLOR: #deecec; COLOR: #000000
|
||||
}
|
||||
.td3 {
|
||||
BACKGROUND-COLOR: #a3d1d2; COLOR: black
|
||||
}
|
||||
.underline {
|
||||
BORDER-BOTTOM: #c4c4c4 1pt solid; BORDER-LEFT: #c4c4c4; BORDER-RIGHT: #c4c4c4; BORDER-TOP: #c4c4c4
|
||||
}
|
||||
.button {
|
||||
border:1px solid black;
|
||||
background-color:white;
|
||||
cursor:hand;
|
||||
}
|
||||
.star {
|
||||
COLOR: red
|
||||
}
|
||||
.tb_showall
|
||||
{
|
||||
background:#0078B7;
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.container{
|
||||
margin: auto;
|
||||
width: 80%;
|
||||
text-align: center;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
}
|
||||
.input-form{
|
||||
border: black solid 1px;
|
||||
margin: auto;
|
||||
td{
|
||||
border: black solid 1px;
|
||||
}
|
||||
}
|
||||
|
||||
20
learn1/web/css/index.css
Normal file
20
learn1/web/css/index.css
Normal file
@ -0,0 +1,20 @@
|
||||
.nav-list{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background-color: #2bf;
|
||||
height: 95%;
|
||||
width: 20%;
|
||||
margin: 0;
|
||||
padding: 5px;
|
||||
}
|
||||
.content{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
background-color: #eee;
|
||||
height: 95%;
|
||||
width: 80%;
|
||||
margin: 0;
|
||||
padding: 5px;
|
||||
}
|
||||
25
learn1/web/home.jsp
Normal file
25
learn1/web/home.jsp
Normal file
@ -0,0 +1,25 @@
|
||||
<%--
|
||||
Created by IntelliJ IDEA.
|
||||
User: 25589
|
||||
Date: 2024/12/3
|
||||
Time: 上午12:17
|
||||
To change this template use File | Settings | File Templates.
|
||||
--%>
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<html>
|
||||
<head>
|
||||
<title>主页</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>学生信息管理系统</h1>
|
||||
<%
|
||||
if(session.getAttribute("user")==null){
|
||||
out.println("<a href=\""+request.getContextPath()+"/login/login.jsp\">登录</a>");
|
||||
}else{
|
||||
out.println("<a href=\""+request.getContextPath()+"/UserLogoutAction\">注销</a>");
|
||||
}
|
||||
%>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
24
learn1/web/index.jsp
Normal file
24
learn1/web/index.jsp
Normal file
@ -0,0 +1,24 @@
|
||||
<%--
|
||||
Created by IntelliJ IDEA.
|
||||
User: 25589
|
||||
Date: 2024/11/28
|
||||
Time: 下午1:20
|
||||
To change this template use File | Settings | File Templates.
|
||||
--%>
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<html>
|
||||
<head>
|
||||
<title>学生信息管理系统</title>
|
||||
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/index.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="nav-list">
|
||||
<ul>
|
||||
<li><a href="${pageContext.request.contextPath}/home.jsp" target="content">欢迎页</a></li>
|
||||
<li><a href="${pageContext.request.contextPath}/course/course.jsp" target="content">课程列表</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<iframe src="${pageContext.request.contextPath}/home.jsp" class="content" name="content" height="100%" width="100%"></iframe>
|
||||
</body>
|
||||
<script src="${pageContext.request.contextPath}/js/index.js"></script>
|
||||
</html>
|
||||
122
learn1/web/js/course-edit.js
Normal file
122
learn1/web/js/course-edit.js
Normal file
@ -0,0 +1,122 @@
|
||||
const types = ['', '公共基础必修课', '公共选修课', '学科基础课', '专业必修课', '专业选修课', '集中性实践教学环节']
|
||||
const majors = ['', '软件工程', '空间信息', '大数据'];
|
||||
let courses;
|
||||
function getCourses(){
|
||||
$.ajax({
|
||||
url: path+"/CourseListAction",
|
||||
method: "GET",
|
||||
success: (data, status, xhr)=>{
|
||||
const course_list = document.getElementById('course-list');
|
||||
console.log(xhr.status);
|
||||
course_list.innerHTML = "<tr class=\"tr-head\"><td class=\"tr-head\" colspan=\"6\">课程信息列表</td></tr> <tr> <td>名称</td> <td>性质</td> <td>学分</td> <td>开设年级</td> <td>开设专业</td> </tr>"
|
||||
courses = data;
|
||||
for (let i in data){
|
||||
const course_tr = document.createElement('tr');
|
||||
course_tr.innerHTML="<td>"+ data[i].name +"</td>" +
|
||||
"<td>"+types[data[i].type]+"</td>" +
|
||||
"<td>"+ data[i].credit +"</td>" +
|
||||
"<td>"+ data[i].grade + "</td>" +
|
||||
"<td>"+ majors[data[i].major]+"</td>" +
|
||||
"<td><a href=\"#\" onclick=\"editCourse("+ i + ")\" " +
|
||||
">编辑</a> <a href=\""+path+"/CourseDeleteAction?id=" +
|
||||
data[i].id+"\">删除</a></td>";
|
||||
course_list.appendChild(course_tr);
|
||||
}
|
||||
const end_tr = document.createElement('tr');
|
||||
end_tr.innerHTML="<td><a href=\"#\" onclick=\"addCourse()\">添加</a></td><td></td><td></td><td></td><td>" +
|
||||
"<a href=\"#\" onclick=\"getCourses()\">刷新数据列表</a></td><td></td>";
|
||||
course_list.appendChild(end_tr);
|
||||
},
|
||||
error: ()=>{
|
||||
window.location=path+"/login/login.jsp";
|
||||
}
|
||||
});
|
||||
}
|
||||
$(document).ready(getCourses);
|
||||
|
||||
function editCourse(i){
|
||||
$(".course-editor").load(path+"/course/course_edit.jsp", (response,status,xhr)=>{
|
||||
if (stauts === 403){
|
||||
window.location = path+"/login/login.jsp";
|
||||
}
|
||||
const form = document.querySelector('.course-edit');
|
||||
form.action = path+"/CourseEditAction";
|
||||
form.method = "POST";
|
||||
const idInput = document.getElementById('id-input');
|
||||
idInput.value = courses[i].id;
|
||||
const nameInput = document.getElementById('name-input');
|
||||
nameInput.value = courses[i].name;
|
||||
const typeInput = document.getElementById('type-input');
|
||||
typeInput.value = courses[i].type;
|
||||
const creditInput = document.getElementById('credit-input');
|
||||
creditInput.value = courses[i].credit;
|
||||
const yearInput = document.getElementById('grade-input');
|
||||
yearInput.value = courses[i].grade;
|
||||
const majorInputs = form.querySelectorAll('input[name="major"]');
|
||||
majorInputs.forEach((input) => {
|
||||
if (parseInt(input.value) === courses[i].major) {
|
||||
input.checked = true;
|
||||
}
|
||||
});
|
||||
|
||||
const noteInput = form.querySelector('#detail-input');
|
||||
noteInput.value = courses[i].detail;
|
||||
|
||||
form.addEventListener('submit', function (e) {
|
||||
e.preventDefault();
|
||||
const gradeInput = document.getElementById('grade-input');
|
||||
if (!/^20\d{2}$/.test(gradeInput.value)) {
|
||||
alert('请输入合法的四位年份');
|
||||
return;
|
||||
}
|
||||
|
||||
const nameInput = document.getElementById('name-input');
|
||||
console.log(nameInput.value.length)
|
||||
console.log(nameInput.value)
|
||||
if (nameInput.value.length < 5 || nameInput.value.length > 20){
|
||||
alert('请输入5~20位字符');
|
||||
return;
|
||||
}
|
||||
const detailInput = document.getElementById('detail-input');
|
||||
if (detailInput.value.length > 200){
|
||||
alert('备注超长');
|
||||
return;
|
||||
}
|
||||
$(".course-edit").submit();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function addCourse(){
|
||||
$(".course-editor").load(path+"/course/course_edit.jsp", ()=>{
|
||||
const form = document.querySelector('.course-edit');
|
||||
form.action = path+"/CourseAddAction";
|
||||
form.addEventListener('submit', function (e) {
|
||||
e.preventDefault();
|
||||
const gradeInput = document.getElementById('grade-input');
|
||||
if (!/^20\d{2}$/.test(gradeInput.value)) {
|
||||
alert('请输入合法的四位年份');
|
||||
return;
|
||||
}
|
||||
|
||||
const nameInput = document.getElementById('name-input');
|
||||
console.log(nameInput.value.length)
|
||||
console.log(nameInput.value)
|
||||
if (nameInput.value.length < 5 || nameInput.value.length > 20){
|
||||
alert('请输入5~20位字符');
|
||||
return;
|
||||
}
|
||||
const detailInput = document.getElementById('detail-input');
|
||||
if (detailInput.value.length > 200){
|
||||
alert('备注超长');
|
||||
return;
|
||||
}
|
||||
$(".course-edit").submit();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function closeEdit(){
|
||||
const editor = document.querySelector('.course-editor');
|
||||
editor.innerHTML = "";
|
||||
}
|
||||
0
learn1/web/js/index.js
Normal file
0
learn1/web/js/index.js
Normal file
2
learn1/web/js/jquery-3.7.1.min.js
vendored
Normal file
2
learn1/web/js/jquery-3.7.1.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
39
learn1/web/login/login.jsp
Normal file
39
learn1/web/login/login.jsp
Normal file
@ -0,0 +1,39 @@
|
||||
<%--
|
||||
Created by IntelliJ IDEA.
|
||||
User: 25589
|
||||
Date: 2024/12/1
|
||||
Time: 下午11:58
|
||||
To change this template use File | Settings | File Templates.
|
||||
--%>
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<html>
|
||||
<head>
|
||||
<title>登录</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="login-card">
|
||||
<h1>登录</h1>
|
||||
<form action="${pageContext.request.contextPath}/UserLoginAction" method="POST">
|
||||
<label for="username-input">用户名</label>
|
||||
<input type="text" name="username" id="username-input">
|
||||
<label for="password-input">密码</label>
|
||||
<input type="password" name="password" id="password-input">
|
||||
<input type="submit" value="登录">
|
||||
</form>
|
||||
</div>
|
||||
</body>
|
||||
<script>
|
||||
<%
|
||||
String loginFlag=request.getParameter("loginflag");
|
||||
String username=request.getParameter("username");
|
||||
if(loginFlag==null){ //无登录失败标识,是正常访问登录页面
|
||||
loginFlag="";
|
||||
}
|
||||
if(loginFlag.equals("1")){
|
||||
out.println("alert('用户【"+username+"】不存在!')");
|
||||
}else if(loginFlag.equals("2")){
|
||||
out.println("alert('密码错误!')");
|
||||
}
|
||||
%>
|
||||
</script>
|
||||
</html>
|
||||
BIN
lib/commons-dbcp2-2.9.0.jar
Normal file
BIN
lib/commons-dbcp2-2.9.0.jar
Normal file
Binary file not shown.
BIN
lib/commons-logging-1.3.4.jar
Normal file
BIN
lib/commons-logging-1.3.4.jar
Normal file
Binary file not shown.
BIN
lib/commons-pool2-2.9.0.jar
Normal file
BIN
lib/commons-pool2-2.9.0.jar
Normal file
Binary file not shown.
BIN
lib/lombok.jar
Normal file
BIN
lib/lombok.jar
Normal file
Binary file not shown.
BIN
lib/mysql-connector.jar
Normal file
BIN
lib/mysql-connector.jar
Normal file
Binary file not shown.
BIN
lib/sqlite-jdbc-3.47.0.0.jar
Normal file
BIN
lib/sqlite-jdbc-3.47.0.0.jar
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
6
out/artifacts/homework02_war_exploded/WEB-INF/web.xml
Normal file
6
out/artifacts/homework02_war_exploded/WEB-INF/web.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
|
||||
version="6.0">
|
||||
</web-app>
|
||||
18
out/artifacts/homework02_war_exploded/index.jsp
Normal file
18
out/artifacts/homework02_war_exploded/index.jsp
Normal file
@ -0,0 +1,18 @@
|
||||
<%@ page import="login.UserDB" %><%--
|
||||
Created by IntelliJ IDEA.
|
||||
User: 25589
|
||||
Date: 2024/11/17
|
||||
Time: 下午9:26
|
||||
To change this template use File | Settings | File Templates.
|
||||
--%>
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<html>
|
||||
<head>
|
||||
<title>JDBC应用</title>
|
||||
</head>
|
||||
<body>
|
||||
<% UserDB dbBean = new UserDB();
|
||||
dbBean.ShowCommonUsers();
|
||||
%>
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,41 @@
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
#DriverClassName=com.mysql.cj.jdbc.Driver
|
||||
#url=jdbc:mysql://10.19.38.253:3306/chat?useUnicode=true&characterEncoding=utf-8&useSSL=true
|
||||
#username=admin
|
||||
#password=1227496003131313xY
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
driverClassName=org.sqlite.JDBC
|
||||
url=jdbc:sqlite:F:\\Work_Area\\desk\\database\\ѧϰ\\java²âÊÔÊý¾Ý¿â\\db_student.db
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
|
||||
defaultAutoCommit=true
|
||||
|
||||
defaultReadOnly=false
|
||||
|
||||
initialSize=10
|
||||
|
||||
maxActive=20
|
||||
|
||||
maxIdle=20
|
||||
|
||||
minIdle=5
|
||||
|
||||
maxWait=10000
|
||||
|
||||
testOnBorrow=true
|
||||
|
||||
testOnReturn=false
|
||||
|
||||
validationQuery=select 1
|
||||
|
||||
validationQueryTimeout=1
|
||||
|
||||
testWhileIdle=false
|
||||
|
||||
timeBetweenEvictionRunsMillis=1
|
||||
|
||||
numTestsPerEvictionRun=3
|
||||
|
||||
poolPreparedStatements=true
|
||||
|
||||
maxOpenPreparedStatements=3
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
6
out/artifacts/learn1_war_exploded/WEB-INF/web.xml
Normal file
6
out/artifacts/learn1_war_exploded/WEB-INF/web.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
|
||||
version="6.0">
|
||||
</web-app>
|
||||
28
out/artifacts/learn1_war_exploded/course/course.jsp
Normal file
28
out/artifacts/learn1_war_exploded/course/course.jsp
Normal file
@ -0,0 +1,28 @@
|
||||
<%--
|
||||
Created by IntelliJ IDEA.
|
||||
User: 25589
|
||||
Date: 2024/11/21
|
||||
Time: 下午5:00
|
||||
To change this template use File | Settings | File Templates.
|
||||
--%>
|
||||
<%@ page contentType="text/html;charset=UTF-8" %>
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>课程信息列表</title>
|
||||
<link rel="stylesheet" href="../css/course.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<table id="course-list">
|
||||
</table>
|
||||
<div class="course-editor"></div>
|
||||
</div>
|
||||
</body>
|
||||
<script>
|
||||
let path = "${pageContext.request.contextPath}";
|
||||
</script>
|
||||
<script src="${pageContext.request.contextPath}/js/jquery-3.7.1.min.js"></script>
|
||||
<script src="${pageContext.request.contextPath}/js/course-edit.js"></script>
|
||||
</html>
|
||||
87
out/artifacts/learn1_war_exploded/course/course_edit.jsp
Normal file
87
out/artifacts/learn1_war_exploded/course/course_edit.jsp
Normal file
@ -0,0 +1,87 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<div class="container">
|
||||
<form class="course-edit">
|
||||
<input type="hidden" name="id" id="id-input" value="-1">
|
||||
<table class="input-form">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="td_header" colspan="3">课程信息录入,<span class="star">*</span>代表必填</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tr>
|
||||
<td><label for="name-input">名称</label></td>
|
||||
<td>
|
||||
<input name="name" type="text" id="name-input">
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>5~20位字符
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="type-input">性质</label></td>
|
||||
<td>
|
||||
<select name="type" id="type-input">
|
||||
<option value="1">公共基础必修课</option>
|
||||
<option value="2">公共选修课</option>
|
||||
<option value="3">学科基础课</option>
|
||||
<option value="4">专业必修课</option>
|
||||
<option value="5">专业选修课</option>
|
||||
<option value="6">集中性实践教学环节</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="credit-input">学分</label></td>
|
||||
<td>
|
||||
<input name="credit" type="number" id="credit-input">
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>数值
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="grade-input">年份</label></td>
|
||||
<td>
|
||||
<input name="grade" type="text" id="grade-input">
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>4位数年份
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>开设专业</td>
|
||||
<td>
|
||||
<input name="major" value="1" type="radio" id="major-input-1">
|
||||
<label for="major-input-1">软件工程</label>
|
||||
<input name="major" value="2" type="radio" id="major-input-2">
|
||||
<label for="major-input-2">空间信息</label>
|
||||
<input name="major" value="3" type="radio" id="major-input-3">
|
||||
<label for="major-input-3">大数据</label>
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="detail-input">备注</label></td>
|
||||
<td>
|
||||
<textarea rows="5" name="detail" id="detail-input"></textarea>
|
||||
</td>
|
||||
<td>
|
||||
200个字符以内
|
||||
</td>
|
||||
</tr>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<input type="submit">
|
||||
<button onclick="closeEdit()">关闭编辑</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
82
out/artifacts/learn1_war_exploded/course/tmp
Normal file
82
out/artifacts/learn1_war_exploded/course/tmp
Normal file
@ -0,0 +1,82 @@
|
||||
<form action="" method="post" class="course-edit">
|
||||
<table class="input-form ">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="td_header" colspan="3">课程信息录入,<span class="star">*</span></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tr>
|
||||
<td><label for="name-input">名称</label></td>
|
||||
<td>
|
||||
<input name="name" type="text" id="name-input">
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>5~20位字符
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="type-input">性质</label></td>
|
||||
<td>
|
||||
<select name="type" id="type-input">
|
||||
<option value="1">公共基础必修课</option>
|
||||
<option value="2">公共选修课</option>
|
||||
<option value="3">学科基础课</option>
|
||||
<option value="4">专业必修课</option>
|
||||
<option value="5">专业选修课</option>
|
||||
<option value="6">集中性实践教学环节</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="score-input">学分</label></td>
|
||||
<td>
|
||||
<input name="credit" type="number" id="score-input">
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>数值
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="year-input">年份</label></td>
|
||||
<td>
|
||||
<input name="grade" type="text" id="year-input">
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>4位数年份
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>开设专业</td>
|
||||
<td>
|
||||
<input name="major" value="1" type="radio" id="major-input-1">
|
||||
<label for="major-input-1">软件工程</label>
|
||||
<input name="major" value="2" type="radio" id="major-input-2">
|
||||
<label for="major-input-2">空间信息</label>
|
||||
<input name="major" value="3" type="radio" id="major-input-3">
|
||||
<label for="major-input-3">大数据</label>
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="note-input">备注</label></td>
|
||||
<td>
|
||||
<textarea rows="5" name="detail" id="note-input"></textarea>
|
||||
</td>
|
||||
<td>
|
||||
200个字符以内
|
||||
</td>
|
||||
</tr>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<input type="submit">
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</form>
|
||||
62
out/artifacts/learn1_war_exploded/css/course.css
Normal file
62
out/artifacts/learn1_war_exploded/css/course.css
Normal file
@ -0,0 +1,62 @@
|
||||
|
||||
tr:nth-child(odd){
|
||||
background:#F4F4F4;
|
||||
}
|
||||
|
||||
.tr-head{
|
||||
background-color: #2bf;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
table{
|
||||
width:100%;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
.td1 {
|
||||
BACKGROUND-COLOR: #e6e6e6
|
||||
}
|
||||
.td_header {
|
||||
BACKGROUND-COLOR: #e6e6e6; COLOR: #000000
|
||||
}
|
||||
.td_1 {
|
||||
BACKGROUND-COLOR: #f8fbfb; COLOR: #000000
|
||||
}
|
||||
.td_2 {
|
||||
BACKGROUND-COLOR: #deecec; COLOR: #000000
|
||||
}
|
||||
.td3 {
|
||||
BACKGROUND-COLOR: #a3d1d2; COLOR: black
|
||||
}
|
||||
.underline {
|
||||
BORDER-BOTTOM: #c4c4c4 1pt solid; BORDER-LEFT: #c4c4c4; BORDER-RIGHT: #c4c4c4; BORDER-TOP: #c4c4c4
|
||||
}
|
||||
.button {
|
||||
border:1px solid black;
|
||||
background-color:white;
|
||||
cursor:hand;
|
||||
}
|
||||
.star {
|
||||
COLOR: red
|
||||
}
|
||||
.tb_showall
|
||||
{
|
||||
background:#0078B7;
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.container{
|
||||
margin: auto;
|
||||
width: 80%;
|
||||
text-align: center;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
}
|
||||
.input-form{
|
||||
border: black solid 1px;
|
||||
margin: auto;
|
||||
td{
|
||||
border: black solid 1px;
|
||||
}
|
||||
}
|
||||
|
||||
20
out/artifacts/learn1_war_exploded/css/index.css
Normal file
20
out/artifacts/learn1_war_exploded/css/index.css
Normal file
@ -0,0 +1,20 @@
|
||||
.nav-list{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background-color: #2bf;
|
||||
height: 95%;
|
||||
width: 20%;
|
||||
margin: 0;
|
||||
padding: 5px;
|
||||
}
|
||||
.content{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
background-color: #eee;
|
||||
height: 95%;
|
||||
width: 80%;
|
||||
margin: 0;
|
||||
padding: 5px;
|
||||
}
|
||||
25
out/artifacts/learn1_war_exploded/home.jsp
Normal file
25
out/artifacts/learn1_war_exploded/home.jsp
Normal file
@ -0,0 +1,25 @@
|
||||
<%--
|
||||
Created by IntelliJ IDEA.
|
||||
User: 25589
|
||||
Date: 2024/12/3
|
||||
Time: 上午12:17
|
||||
To change this template use File | Settings | File Templates.
|
||||
--%>
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<html>
|
||||
<head>
|
||||
<title>主页</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>学生信息管理系统</h1>
|
||||
<%
|
||||
if(session.getAttribute("user")==null){
|
||||
out.println("<a href=\""+request.getContextPath()+"/login/login.jsp\">登录</a>");
|
||||
}else{
|
||||
out.println("<a href=\""+request.getContextPath()+"/UserLogoutAction\">注销</a>");
|
||||
}
|
||||
%>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
24
out/artifacts/learn1_war_exploded/index.jsp
Normal file
24
out/artifacts/learn1_war_exploded/index.jsp
Normal file
@ -0,0 +1,24 @@
|
||||
<%--
|
||||
Created by IntelliJ IDEA.
|
||||
User: 25589
|
||||
Date: 2024/11/28
|
||||
Time: 下午1:20
|
||||
To change this template use File | Settings | File Templates.
|
||||
--%>
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<html>
|
||||
<head>
|
||||
<title>学生信息管理系统</title>
|
||||
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/index.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="nav-list">
|
||||
<ul>
|
||||
<li><a href="${pageContext.request.contextPath}/course/course.jsp" target="content">课程列表</a></li>
|
||||
<li><a href="${pageContext.request.contextPath}/home.jsp" target="content">欢迎页</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<iframe src="${pageContext.request.contextPath}/home.jsp" class="content" name="content" height="100%" width="100%"></iframe>
|
||||
</body>
|
||||
<script src="${pageContext.request.contextPath}/js/index.js"></script>
|
||||
</html>
|
||||
122
out/artifacts/learn1_war_exploded/js/course-edit.js
Normal file
122
out/artifacts/learn1_war_exploded/js/course-edit.js
Normal file
@ -0,0 +1,122 @@
|
||||
const types = ['', '公共基础必修课', '公共选修课', '学科基础课', '专业必修课', '专业选修课', '集中性实践教学环节']
|
||||
const majors = ['', '软件工程', '空间信息', '大数据'];
|
||||
let courses;
|
||||
function getCourses(){
|
||||
$.ajax({
|
||||
url: path+"/CourseListAction",
|
||||
method: "GET",
|
||||
success: (data, status, xhr)=>{
|
||||
const course_list = document.getElementById('course-list');
|
||||
console.log(xhr.status);
|
||||
course_list.innerHTML = "<tr class=\"tr-head\"><td class=\"tr-head\" colspan=\"6\">课程信息列表</td></tr> <tr> <td>名称</td> <td>性质</td> <td>学分</td> <td>开设年级</td> <td>开设专业</td> </tr>"
|
||||
courses = data;
|
||||
for (let i in data){
|
||||
const course_tr = document.createElement('tr');
|
||||
course_tr.innerHTML="<td>"+ data[i].name +"</td>" +
|
||||
"<td>"+types[data[i].type]+"</td>" +
|
||||
"<td>"+ data[i].credit +"</td>" +
|
||||
"<td>"+ data[i].grade + "</td>" +
|
||||
"<td>"+ majors[data[i].major]+"</td>" +
|
||||
"<td><a href=\"#\" onclick=\"editCourse("+ i + ")\" " +
|
||||
">编辑</a> <a href=\""+path+"/CourseDeleteAction?id=" +
|
||||
data[i].id+"\">删除</a></td>";
|
||||
course_list.appendChild(course_tr);
|
||||
}
|
||||
const end_tr = document.createElement('tr');
|
||||
end_tr.innerHTML="<td><a href=\"#\" onclick=\"addCourse()\">添加</a></td><td></td><td></td><td></td><td>" +
|
||||
"<a href=\"#\" onclick=\"getCourses()\">刷新数据列表</a></td><td></td>";
|
||||
course_list.appendChild(end_tr);
|
||||
},
|
||||
error: ()=>{
|
||||
window.location=path+"/login/login.jsp";
|
||||
}
|
||||
});
|
||||
}
|
||||
$(document).ready(getCourses);
|
||||
|
||||
function editCourse(i){
|
||||
$(".course-editor").load(path+"/course/course_edit.jsp", (response,status,xhr)=>{
|
||||
if (stauts === 403){
|
||||
window.location = path+"/login/login.jsp";
|
||||
}
|
||||
const form = document.querySelector('.course-edit');
|
||||
form.action = path+"/CourseEditAction";
|
||||
form.method = "POST";
|
||||
const idInput = document.getElementById('id-input');
|
||||
idInput.value = courses[i].id;
|
||||
const nameInput = document.getElementById('name-input');
|
||||
nameInput.value = courses[i].name;
|
||||
const typeInput = document.getElementById('type-input');
|
||||
typeInput.value = courses[i].type;
|
||||
const creditInput = document.getElementById('credit-input');
|
||||
creditInput.value = courses[i].credit;
|
||||
const yearInput = document.getElementById('grade-input');
|
||||
yearInput.value = courses[i].grade;
|
||||
const majorInputs = form.querySelectorAll('input[name="major"]');
|
||||
majorInputs.forEach((input) => {
|
||||
if (parseInt(input.value) === courses[i].major) {
|
||||
input.checked = true;
|
||||
}
|
||||
});
|
||||
|
||||
const noteInput = form.querySelector('#detail-input');
|
||||
noteInput.value = courses[i].detail;
|
||||
|
||||
form.addEventListener('submit', function (e) {
|
||||
e.preventDefault();
|
||||
const gradeInput = document.getElementById('grade-input');
|
||||
if (!/^20\d{2}$/.test(gradeInput.value)) {
|
||||
alert('请输入合法的四位年份');
|
||||
return;
|
||||
}
|
||||
|
||||
const nameInput = document.getElementById('name-input');
|
||||
console.log(nameInput.value.length)
|
||||
console.log(nameInput.value)
|
||||
if (nameInput.value.length < 5 || nameInput.value.length > 20){
|
||||
alert('请输入5~20位字符');
|
||||
return;
|
||||
}
|
||||
const detailInput = document.getElementById('detail-input');
|
||||
if (detailInput.value.length > 200){
|
||||
alert('备注超长');
|
||||
return;
|
||||
}
|
||||
$(".course-edit").submit();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function addCourse(){
|
||||
$(".course-editor").load(path+"/course/course_edit.jsp", ()=>{
|
||||
const form = document.querySelector('.course-edit');
|
||||
form.action = path+"/CourseAddAction";
|
||||
form.addEventListener('submit', function (e) {
|
||||
e.preventDefault();
|
||||
const gradeInput = document.getElementById('grade-input');
|
||||
if (!/^20\d{2}$/.test(gradeInput.value)) {
|
||||
alert('请输入合法的四位年份');
|
||||
return;
|
||||
}
|
||||
|
||||
const nameInput = document.getElementById('name-input');
|
||||
console.log(nameInput.value.length)
|
||||
console.log(nameInput.value)
|
||||
if (nameInput.value.length < 5 || nameInput.value.length > 20){
|
||||
alert('请输入5~20位字符');
|
||||
return;
|
||||
}
|
||||
const detailInput = document.getElementById('detail-input');
|
||||
if (detailInput.value.length > 200){
|
||||
alert('备注超长');
|
||||
return;
|
||||
}
|
||||
$(".course-edit").submit();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function closeEdit(){
|
||||
const editor = document.querySelector('.course-editor');
|
||||
editor.innerHTML = "";
|
||||
}
|
||||
0
out/artifacts/learn1_war_exploded/js/index.js
Normal file
0
out/artifacts/learn1_war_exploded/js/index.js
Normal file
2
out/artifacts/learn1_war_exploded/js/jquery-3.7.1.min.js
vendored
Normal file
2
out/artifacts/learn1_war_exploded/js/jquery-3.7.1.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
39
out/artifacts/learn1_war_exploded/login/login.jsp
Normal file
39
out/artifacts/learn1_war_exploded/login/login.jsp
Normal file
@ -0,0 +1,39 @@
|
||||
<%--
|
||||
Created by IntelliJ IDEA.
|
||||
User: 25589
|
||||
Date: 2024/12/1
|
||||
Time: 下午11:58
|
||||
To change this template use File | Settings | File Templates.
|
||||
--%>
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<html>
|
||||
<head>
|
||||
<title>登录</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="login-card">
|
||||
<h1>登录</h1>
|
||||
<form action="${pageContext.request.contextPath}/UserLoginAction" method="POST">
|
||||
<label for="username-input">用户名</label>
|
||||
<input type="text" name="username" id="username-input">
|
||||
<label for="password-input">密码</label>
|
||||
<input type="password" name="password" id="password-input">
|
||||
<input type="submit" value="登录">
|
||||
</form>
|
||||
</div>
|
||||
</body>
|
||||
<script>
|
||||
<%
|
||||
String loginFlag=request.getParameter("loginflag");
|
||||
String username=request.getParameter("username");
|
||||
if(loginFlag==null){ //无登录失败标识,是正常访问登录页面
|
||||
loginFlag="";
|
||||
}
|
||||
if(loginFlag.equals("1")){
|
||||
out.println("alert('用户【"+username+"】不存在!')");
|
||||
}else if(loginFlag.equals("2")){
|
||||
out.println("alert('密码错误!')");
|
||||
}
|
||||
%>
|
||||
</script>
|
||||
</html>
|
||||
6
out/artifacts/test02_war_exploded/WEB-INF/web.xml
Normal file
6
out/artifacts/test02_war_exploded/WEB-INF/web.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
|
||||
version="6.0">
|
||||
</web-app>
|
||||
117
out/artifacts/test02_war_exploded/course/course_edit.html
Normal file
117
out/artifacts/test02_war_exploded/course/course_edit.html
Normal file
@ -0,0 +1,117 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zn-ch">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>课程信息录入</title>
|
||||
<link rel="stylesheet" href="../css/course.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<form action="" method="post" class="course">
|
||||
<table class="input-form ">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="td_header" colspan="3">课程信息录入,<span class="star">*</span></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tr>
|
||||
<td><label for="name-input">名称</label></td>
|
||||
<td>
|
||||
<input name="cname" type="text" id="name-input">
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>5~20位字符
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="type-input">性质</label></td>
|
||||
<td>
|
||||
<select name="ctype" id="type-input">
|
||||
<option value="专业必修课">专业必修课</option>
|
||||
<option value="专业选修课">专业选修课</option>
|
||||
<option value="通识必修课">通识必修课</option>
|
||||
<option value="通识选修课">通识选修课</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="score-input">学分</label></td>
|
||||
<td>
|
||||
<input name="cscore" type="number" id="score-input">
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>数值
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="year-input">年份</label></td>
|
||||
<td>
|
||||
<input name="cyear" type="text" id="year-input">
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>4位数年份
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>开设专业</td>
|
||||
<td>
|
||||
<input name="cmajor" value="软件工程" type="radio" id="major-input-1">
|
||||
<label for="major-input-1">软件工程</label>
|
||||
<input name="cmajor" value="空间信息" type="radio" id="major-input-2">
|
||||
<label for="major-input-2">空间信息</label>
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="note-input">备注</label></td>
|
||||
<td>
|
||||
<textarea rows="5" name="cnote" id="note-input"></textarea>
|
||||
</td>
|
||||
<td>
|
||||
200个字符以内
|
||||
</td>
|
||||
</tr>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<input type="submit">
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</body>
|
||||
<script>
|
||||
const form = document.querySelector('.course');
|
||||
|
||||
form.addEventListener('submit', function (e) {
|
||||
const cyearInput = document.getElementById('year-input');
|
||||
if (!/^20\d{2}$/.test(cyearInput.value)) {
|
||||
e.preventDefault();
|
||||
alert('请输入合法的四位年份');
|
||||
return;
|
||||
}
|
||||
|
||||
const cnameInput = document.getElementById('name-input');
|
||||
console.log(cnameInput.value.length)
|
||||
console.log(cnameInput.value)
|
||||
if (cnameInput.value.length < 5 || cnameInput.value.length > 20){
|
||||
e.preventDefault();
|
||||
alert('请输入5~20位字符');
|
||||
return
|
||||
}
|
||||
const cnoteInput = document.getElementById('note-input');
|
||||
if (cnameInput.value.length > 200){
|
||||
e.preventDefault();
|
||||
alert('备注超长');
|
||||
}
|
||||
alert('正常提交');
|
||||
});
|
||||
</script>
|
||||
</html>
|
||||
54
out/artifacts/test02_war_exploded/course/course_list.html
Normal file
54
out/artifacts/test02_war_exploded/course/course_list.html
Normal file
@ -0,0 +1,54 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>课程信息列表</title>
|
||||
<link rel="stylesheet" href="../css/course.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<table>
|
||||
<tr class="tr-head"><td class="tr-head" colspan="6">课程信息列表</td></tr>
|
||||
<tr >
|
||||
<td>名称</td>
|
||||
<td>性质</td>
|
||||
<td>学分</td>
|
||||
<td>开设年级</td>
|
||||
<td>开设专业</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>java</td>
|
||||
<td>专业课必修</td>
|
||||
<td>3</td>
|
||||
<td>2015</td>
|
||||
<td>软件工程</td>
|
||||
<td><a href="./course_edit.html">编辑</a> <a href="#">删除</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>java</td>
|
||||
<td>专业课必修</td>
|
||||
<td>3</td>
|
||||
<td>2015</td>
|
||||
<td>软件工程</td>
|
||||
<td><a href="./course_edit.html">编辑</a> <a href="#">删除</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>java</td>
|
||||
<td>专业课必修</td>
|
||||
<td>3</td>
|
||||
<td>2015</td>
|
||||
<td>软件工程</td>
|
||||
<td><a href="./course_edit.html">编辑</a> <a href="#">删除</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="#">添加</a></td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td><a href="#">刷新数据列表</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
115
out/artifacts/test02_war_exploded/course/index.html
Normal file
115
out/artifacts/test02_war_exploded/course/index.html
Normal file
@ -0,0 +1,115 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zn-ch">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>课程信息录入</title>
|
||||
<link rel="stylesheet" href="../css/course.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<form action="" method="post" class="course">
|
||||
<table class="input-form ">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="td_header" colspan="3">课程信息录入,<span class="star">*</span></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tr>
|
||||
<td><label for="name-input">名称</label></td>
|
||||
<td>
|
||||
<input name="cname" type="text" id="name-input">
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>5~20位字符
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="type-input">名称</label></td>
|
||||
<td>
|
||||
<select name="ctype" id="type-input">
|
||||
<option value="专业必修课">专业必修课</option>
|
||||
<option value="专业选修课">专业选修课</option>
|
||||
<option value="通识必修课">通识必修课</option>
|
||||
<option value="通识选修课">通识选修课</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="score-input">学分</label></td>
|
||||
<td>
|
||||
<input name="cscore" type="number" id="score-input">
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>数值
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="year-input">年份</label></td>
|
||||
<td>
|
||||
<input name="cyear" type="text" id="year-input">
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>4位数年份
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>开设专业</td>
|
||||
<td>
|
||||
<input name="cmajor" value="软件工程" type="radio" id="major-input-1">
|
||||
<label for="major-input-1">软件工程</label>
|
||||
<input name="cmajor" value="空间信息" type="radio" id="major-input-2">
|
||||
<label for="major-input-2">空间信息</label>
|
||||
</td>
|
||||
<td>
|
||||
<span class="star">*</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="note-input">备注</label></td>
|
||||
<td>
|
||||
<textarea rows="5" name="cnote" id="note-input"></textarea>
|
||||
</td>
|
||||
<td>
|
||||
200个字符以内
|
||||
</td>
|
||||
</tr>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<input type="submit">
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</body>
|
||||
<script>
|
||||
const form = document.querySelector('.course');
|
||||
|
||||
form.addEventListener('submit', function (e) {
|
||||
const cyearInput = document.getElementById('year-input');
|
||||
if (!/^\d{4}$/.test(cyearInput.value)) {
|
||||
e.preventDefault();
|
||||
alert('请输入合法的四位年份');
|
||||
return;
|
||||
}
|
||||
|
||||
const cnameInput = document.getElementById('type-input');
|
||||
if (!(cnameInput.value.length > 5 && cnameInput.value < 20)){
|
||||
e.preventDefault();
|
||||
alert('请输入5~20位字符');
|
||||
return
|
||||
}
|
||||
const cnoteInput = document.getElementById('note-input');
|
||||
if (cnameInput.value.length > 200){
|
||||
e.preventDefault();
|
||||
alert('请输入5~20位字符');
|
||||
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</html>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user