优化部分UI

This commit is contained in:
sishenjieshuo 2025-02-12 15:40:57 +08:00
parent c14dc33a21
commit 1ad04a2354
54 changed files with 13081 additions and 159 deletions

View File

@ -11,6 +11,26 @@
</webroots>
</configuration>
</facet>
<facet type="web" name="Web3">
<configuration>
<descriptors>
<deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/conf/web.xml" />
</descriptors>
<webroots>
<root url="file://$MODULE_DIR$/conf" relative="/WEB-INF" />
</webroots>
</configuration>
</facet>
<facet type="web" name="Web2">
<configuration>
<descriptors>
<deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/.smarttomcat/School-ST/conf/web.xml" />
</descriptors>
<webroots>
<root url="file://$MODULE_DIR$/.smarttomcat/School-ST/conf" relative="/WEB-INF" />
</webroots>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />

View File

@ -0,0 +1,198 @@
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# List of comma-separated paths defining the contents of the "common"
# classloader. Prefixes should be used to define what is the repository type.
# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.
# If left as blank,the JVM system loader will be used as Catalina's "common"
# loader.
# Examples:
# "foo": Add this folder as a class repository
# "foo/*.jar": Add all the JARs of the specified folder as class
# repositories
# "foo/bar.jar": Add bar.jar as a class repository
#
# Note: Values are enclosed in double quotes ("...") in case either the
# ${catalina.base} path or the ${catalina.home} path contains a comma.
# Because double quotes are used for quoting, the double quote character
# may not appear in a path.
common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar"
#
# List of comma-separated paths defining the contents of the "server"
# classloader. Prefixes should be used to define what is the repository type.
# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.
# If left as blank, the "common" loader will be used as Catalina's "server"
# loader.
# Examples:
# "foo": Add this folder as a class repository
# "foo/*.jar": Add all the JARs of the specified folder as class
# repositories
# "foo/bar.jar": Add bar.jar as a class repository
#
# Note: Values may be enclosed in double quotes ("...") in case either the
# ${catalina.base} path or the ${catalina.home} path contains a comma.
# Because double quotes are used for quoting, the double quote character
# may not appear in a path.
server.loader=
#
# List of comma-separated paths defining the contents of the "shared"
# classloader. Prefixes should be used to define what is the repository type.
# Path may be relative to the CATALINA_BASE path or absolute. If left as blank,
# the "common" loader will be used as Catalina's "shared" loader.
# Examples:
# "foo": Add this folder as a class repository
# "foo/*.jar": Add all the JARs of the specified folder as class
# repositories
# "foo/bar.jar": Add bar.jar as a class repository
# Please note that for single jars, e.g. bar.jar, you need the URL form
# starting with file:.
#
# Note: Values may be enclosed in double quotes ("...") in case either the
# ${catalina.base} path or the ${catalina.home} path contains a comma.
# Because double quotes are used for quoting, the double quote character
# may not appear in a path.
shared.loader=
# Default list of JAR files that should not be scanned using the JarScanner
# functionality. This is typically used to scan JARs for configuration
# information. JARs that do not contain such information may be excluded from
# the scan to speed up the scanning process. This is the default list. JARs on
# this list are excluded from all scans. The list must be a comma separated list
# of JAR file names.
# The list of JARs to skip may be over-ridden at a Context level for individual
# scan types by configuring a JarScanner with a nested JarScanFilter.
# The JARs listed below include:
# - Tomcat Bootstrap JARs
# - Tomcat API JARs
# - Catalina JARs
# - Jasper JARs
# - Tomcat JARs
# - Common non-Tomcat JARs
# - Test JARs (JUnit, Cobertura and dependencies)
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\
annotations-api.jar,\
ant-junit*.jar,\
ant-launcher*.jar,\
ant*.jar,\
asm-*.jar,\
aspectj*.jar,\
bcel*.jar,\
biz.aQute.bnd*.jar,\
bootstrap.jar,\
catalina-ant.jar,\
catalina-ha.jar,\
catalina-ssi.jar,\
catalina-storeconfig.jar,\
catalina-tribes.jar,\
catalina.jar,\
cglib-*.jar,\
cobertura-*.jar,\
commons-beanutils*.jar,\
commons-codec*.jar,\
commons-collections*.jar,\
commons-compress*.jar,\
commons-daemon.jar,\
commons-dbcp*.jar,\
commons-digester*.jar,\
commons-fileupload*.jar,\
commons-httpclient*.jar,\
commons-io*.jar,\
commons-lang*.jar,\
commons-logging*.jar,\
commons-math*.jar,\
commons-pool*.jar,\
derby-*.jar,\
dom4j-*.jar,\
easymock-*.jar,\
ecj-*.jar,\
el-api.jar,\
geronimo-spec-jaxrpc*.jar,\
h2*.jar,\
ha-api-*.jar,\
hamcrest-*.jar,\
hibernate*.jar,\
httpclient*.jar,\
icu4j-*.jar,\
jakartaee-migration-*.jar,\
jasper-el.jar,\
jasper.jar,\
jaspic-api.jar,\
jaxb-*.jar,\
jaxen-*.jar,\
jaxws-rt-*.jar,\
jdom-*.jar,\
jetty-*.jar,\
jmx-tools.jar,\
jmx.jar,\
jsp-api.jar,\
jstl.jar,\
jta*.jar,\
junit-*.jar,\
junit.jar,\
log4j*.jar,\
mail*.jar,\
objenesis-*.jar,\
oraclepki.jar,\
org.hamcrest.core_*.jar,\
org.junit_*.jar,\
oro-*.jar,\
servlet-api-*.jar,\
servlet-api.jar,\
slf4j*.jar,\
taglibs-standard-spec-*.jar,\
tagsoup-*.jar,\
tomcat-api.jar,\
tomcat-coyote.jar,\
tomcat-coyote-ffm.jar,\
tomcat-dbcp.jar,\
tomcat-i18n-*.jar,\
tomcat-jdbc.jar,\
tomcat-jni.jar,\
tomcat-juli-adapters.jar,\
tomcat-juli.jar,\
tomcat-util-scan.jar,\
tomcat-util.jar,\
tomcat-websocket.jar,\
tools.jar,\
unboundid-ldapsdk-*.jar,\
websocket-api.jar,\
websocket-client-api.jar,\
wsdl4j*.jar,\
xercesImpl.jar,\
xml-apis.jar,\
xmlParserAPIs-*.jar,\
xmlParserAPIs.jar,\
xom-*.jar
# Default list of JAR files that should be scanned that overrides the default
# jarsToSkip list above. This is typically used to include a specific JAR that
# has been excluded by a broad file name pattern in the jarsToSkip list.
# The list of JARs to scan may be over-ridden at a Context level for individual
# scan types by configuring a JarScanner with a nested JarScanFilter.
tomcat.util.scan.StandardJarScanFilter.jarsToScan=\
log4j-taglib*.jar,\
log4j-jakarta-web*.jar,\
log4javascript*.jar,\
slf4j-taglib*.jar
# String cache configuration.
tomcat.util.buf.StringCache.byte.enabled=true
#tomcat.util.buf.StringCache.char.enabled=true
#tomcat.util.buf.StringCache.trainThreshold=500000
#tomcat.util.buf.StringCache.cacheSize=5000

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- The contents of this file will be loaded for each web application -->
<Context>
<!-- Default set of monitored resources. If one of these changes, the -->
<!-- web application will be reloaded. -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<!-- Uncomment this to enable session persistence across Tomcat restarts -->
<!--
<Manager pathname="SESSIONS.ser" />
-->
</Context>

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<jaspic-providers xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml jaspic-providers.xsd"
version="1.0">
<!-- No JASPIC providers configured by default -->
</jaspic-providers>

View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<xs:schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://tomcat.apache.org/xml"
xmlns:jaspic="http://tomcat.apache.org/xml"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.0">
<xs:element name="jaspic-providers">
<xs:complexType>
<xs:sequence>
<xs:element name="provider" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="property" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name" use="required" type="jaspic:propertyname" />
<xs:attribute name="value" use="required" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="className" type="xs:string" />
<xs:attribute name="layer" type="xs:string" />
<xs:attribute name="appContext" type="xs:string" />
<xs:attribute name="description" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="version" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:simpleType name="propertyname">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View File

@ -0,0 +1,76 @@
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
1catalina.org.apache.juli.AsyncFileHandler.level = ALL
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90
1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8
2localhost.org.apache.juli.AsyncFileHandler.level = ALL
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
2localhost.org.apache.juli.AsyncFileHandler.maxDays = 90
2localhost.org.apache.juli.AsyncFileHandler.encoding = UTF-8
3manager.org.apache.juli.AsyncFileHandler.level = ALL
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
3manager.org.apache.juli.AsyncFileHandler.maxDays = 90
3manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8
4host-manager.org.apache.juli.AsyncFileHandler.level = ALL
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 90
4host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = UTF-8
############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler
# For example, set the org.apache.catalina.util.LifecycleBase logger to log
# each component that extends LifecycleBase changing state:
#org.apache.catalina.util.LifecycleBase.level = FINE
# To see debug messages for HTTP/2 handling, uncomment the following line:
#org.apache.coyote.http2.level = FINE
# To see debug messages for WebSocket handling, uncomment the following line:
#org.apache.tomcat.websocket.level = FINE

View File

@ -0,0 +1,154 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- Note: A "Server" is not itself a "Container", so you may not
define subcomponents such as "Valves" at this level.
Documentation at /docs/config/server.html
-->
<Server port="-1" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<!-- Security listener. Documentation at /docs/config/listeners.html
<Listener className="org.apache.catalina.security.SecurityListener" />
-->
<!-- OpenSSL support using Tomcat Native -->
<Listener className="org.apache.catalina.core.AprLifecycleListener" />
<!-- OpenSSL support using FFM API from Java 22 -->
<!-- <Listener className="org.apache.catalina.core.OpenSSLLifecycleListener" /> -->
<!-- Prevent memory leaks due to use of particular java/javax APIs-->
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<!-- Global JNDI resources
Documentation at /docs/jndi-resources-howto.html
-->
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<!-- A "Service" is a collection of one or more "Connectors" that share
a single "Container" Note: A "Service" is not itself a "Container",
so you may not define subcomponents such as "Valves" at this level.
Documentation at /docs/config/service.html
-->
<Service name="Catalina">
<!--The connectors can use a shared executor, you can define one or more named thread pools-->
<!--
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>
-->
<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Documentation at :
HTTP Connector: /docs/config/http.html
AJP Connector: /docs/config/ajp.html
Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
-->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- A "Connector" using the shared thread pool-->
<!--
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
<!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2
This connector uses the NIO implementation. The default
SSLImplementation will depend on the presence of the APR/native
library and the useOpenSSL attribute of the AprLifecycleListener.
Either JSSE or OpenSSL style configuration may be used regardless of
the SSLImplementation selected. JSSE style configuration is used below.
-->
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
certificateKeystorePassword="changeit" type="RSA" />
</SSLHostConfig>
</Connector>
-->
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!--
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443" />
-->
<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
analyzes the HTTP headers included with the request, and passes them
on to the appropriate Host (virtual host).
Documentation at /docs/config/engine.html -->
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
-->
<Engine name="Catalina" defaultHost="localhost">
<!--For clustering, please take a look at documentation at:
/docs/cluster-howto.html (simple how to)
/docs/config/cluster.html (reference documentation) -->
<!--
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-->
<!-- Use the LockOutRealm to prevent attempts to guess user passwords
via a brute-force attack -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
</Service>
</Server>

View File

@ -0,0 +1,56 @@
<?xml version='1.0' encoding='cp936'?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<!--
By default, no user is included in the "manager-gui" role required
to operate the "/manager/html" web application. If you wish to use this app,
you must define such a user - the username and password are arbitrary.
Built-in Tomcat manager roles:
- manager-gui - allows access to the HTML GUI and the status pages
- manager-script - allows access to the HTTP API and the status pages
- manager-jmx - allows access to the JMX proxy and the status pages
- manager-status - allows access to the status pages only
The users below are wrapped in a comment and are therefore ignored. If you
wish to configure one or more of these users for use with the manager web
application, do not forget to remove the <!.. ..> that surrounds them. You
will also need to set the passwords to something appropriate.
-->
<!--
<user username="admin" password="<must-be-changed>" roles="manager-gui"/>
<user username="robot" password="<must-be-changed>" roles="manager-script"/>
-->
<!--
The sample user and role entries below are intended for use with the
examples web application. They are wrapped in a comment and thus are ignored
when reading this file. If you wish to configure these users for use with the
examples web application, do not forget to remove the <!.. ..> that surrounds
them. You will also need to set the passwords to something appropriate.
-->
<!--
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
<user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
<user username="role1" password="<must-be-changed>" roles="role1"/>
-->
</tomcat-users>

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<xs:schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://tomcat.apache.org/xml"
xmlns:users="http://tomcat.apache.org/xml"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.0">
<xs:element name="tomcat-users">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="role">
<xs:complexType>
<xs:attribute name="rolename" use="required" type="users:entityname" />
<xs:attribute name="description" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="group">
<xs:complexType>
<xs:attribute name="groupname" use="required" type="users:entityname" />
<xs:attribute name="description" type="xs:string" />
<xs:attribute name="roles" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="user">
<xs:complexType>
<xs:attribute name="username" use="required" type="users:entityname" />
<xs:attribute name="fullname" type="xs:string" />
<xs:attribute name="password" type="xs:string" />
<xs:attribute name="roles" type="xs:string" />
<xs:attribute name="groups" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:choice>
<xs:attribute name="version" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:simpleType name="entityname">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

File diff suppressed because it is too large Load Diff

View File

@ -1,2 +1,27 @@
# School-ST
### 仓库创建日期2025-2-10
### 语言Java(Jsp)
### 项目简介
- 本项目是一个学生管理系统,主要功能有:学生信息管理、课程信息管理、成绩信息管理、教师信息管理、班级信息管理、学生选课管理、教师授课管理、学生成绩查询、学生选课查询、教师授课查询等。
- 学生信息管理:对学生信息进行增删改查。
- 课程信息管理:对课程信息进行增删改查。
- 成绩信息管理:对成绩信息进行增删改查。
- 教师信息管理:对教师信息进行增删改查。
- 班级信息管理:对班级信息进行增删改查。
- 学生选课管理:对学生选课信息进行增删改查。
- 教师授课管理:对教师授课信息进行增删改查。
- 学生成绩查询:查询学生成绩信息。
- 学生选课查询:查询学生选课信息。
- 教师授课查询:查询教师授课信息。
- 系统登录:用户登录系统。
- 系统退出:用户退出系统。
### 项目结构
```
School-ST
│ .idea
│ .settings
│ build
├─doc
│ src
```
###

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Context docBase="F:\Coding\JetBrains\Idea\KTT\School-ST\src\main\webapp"/>

198
conf/catalina.properties Normal file
View File

@ -0,0 +1,198 @@
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# List of comma-separated paths defining the contents of the "common"
# classloader. Prefixes should be used to define what is the repository type.
# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.
# If left as blank,the JVM system loader will be used as Catalina's "common"
# loader.
# Examples:
# "foo": Add this folder as a class repository
# "foo/*.jar": Add all the JARs of the specified folder as class
# repositories
# "foo/bar.jar": Add bar.jar as a class repository
#
# Note: Values are enclosed in double quotes ("...") in case either the
# ${catalina.base} path or the ${catalina.home} path contains a comma.
# Because double quotes are used for quoting, the double quote character
# may not appear in a path.
common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar"
#
# List of comma-separated paths defining the contents of the "server"
# classloader. Prefixes should be used to define what is the repository type.
# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.
# If left as blank, the "common" loader will be used as Catalina's "server"
# loader.
# Examples:
# "foo": Add this folder as a class repository
# "foo/*.jar": Add all the JARs of the specified folder as class
# repositories
# "foo/bar.jar": Add bar.jar as a class repository
#
# Note: Values may be enclosed in double quotes ("...") in case either the
# ${catalina.base} path or the ${catalina.home} path contains a comma.
# Because double quotes are used for quoting, the double quote character
# may not appear in a path.
server.loader=
#
# List of comma-separated paths defining the contents of the "shared"
# classloader. Prefixes should be used to define what is the repository type.
# Path may be relative to the CATALINA_BASE path or absolute. If left as blank,
# the "common" loader will be used as Catalina's "shared" loader.
# Examples:
# "foo": Add this folder as a class repository
# "foo/*.jar": Add all the JARs of the specified folder as class
# repositories
# "foo/bar.jar": Add bar.jar as a class repository
# Please note that for single jars, e.g. bar.jar, you need the URL form
# starting with file:.
#
# Note: Values may be enclosed in double quotes ("...") in case either the
# ${catalina.base} path or the ${catalina.home} path contains a comma.
# Because double quotes are used for quoting, the double quote character
# may not appear in a path.
shared.loader=
# Default list of JAR files that should not be scanned using the JarScanner
# functionality. This is typically used to scan JARs for configuration
# information. JARs that do not contain such information may be excluded from
# the scan to speed up the scanning process. This is the default list. JARs on
# this list are excluded from all scans. The list must be a comma separated list
# of JAR file names.
# The list of JARs to skip may be over-ridden at a Context level for individual
# scan types by configuring a JarScanner with a nested JarScanFilter.
# The JARs listed below include:
# - Tomcat Bootstrap JARs
# - Tomcat API JARs
# - Catalina JARs
# - Jasper JARs
# - Tomcat JARs
# - Common non-Tomcat JARs
# - Test JARs (JUnit, Cobertura and dependencies)
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\
annotations-api.jar,\
ant-junit*.jar,\
ant-launcher*.jar,\
ant*.jar,\
asm-*.jar,\
aspectj*.jar,\
bcel*.jar,\
biz.aQute.bnd*.jar,\
bootstrap.jar,\
catalina-ant.jar,\
catalina-ha.jar,\
catalina-ssi.jar,\
catalina-storeconfig.jar,\
catalina-tribes.jar,\
catalina.jar,\
cglib-*.jar,\
cobertura-*.jar,\
commons-beanutils*.jar,\
commons-codec*.jar,\
commons-collections*.jar,\
commons-compress*.jar,\
commons-daemon.jar,\
commons-dbcp*.jar,\
commons-digester*.jar,\
commons-fileupload*.jar,\
commons-httpclient*.jar,\
commons-io*.jar,\
commons-lang*.jar,\
commons-logging*.jar,\
commons-math*.jar,\
commons-pool*.jar,\
derby-*.jar,\
dom4j-*.jar,\
easymock-*.jar,\
ecj-*.jar,\
el-api.jar,\
geronimo-spec-jaxrpc*.jar,\
h2*.jar,\
ha-api-*.jar,\
hamcrest-*.jar,\
hibernate*.jar,\
httpclient*.jar,\
icu4j-*.jar,\
jakartaee-migration-*.jar,\
jasper-el.jar,\
jasper.jar,\
jaspic-api.jar,\
jaxb-*.jar,\
jaxen-*.jar,\
jaxws-rt-*.jar,\
jdom-*.jar,\
jetty-*.jar,\
jmx-tools.jar,\
jmx.jar,\
jsp-api.jar,\
jstl.jar,\
jta*.jar,\
junit-*.jar,\
junit.jar,\
log4j*.jar,\
mail*.jar,\
objenesis-*.jar,\
oraclepki.jar,\
org.hamcrest.core_*.jar,\
org.junit_*.jar,\
oro-*.jar,\
servlet-api-*.jar,\
servlet-api.jar,\
slf4j*.jar,\
taglibs-standard-spec-*.jar,\
tagsoup-*.jar,\
tomcat-api.jar,\
tomcat-coyote.jar,\
tomcat-coyote-ffm.jar,\
tomcat-dbcp.jar,\
tomcat-i18n-*.jar,\
tomcat-jdbc.jar,\
tomcat-jni.jar,\
tomcat-juli-adapters.jar,\
tomcat-juli.jar,\
tomcat-util-scan.jar,\
tomcat-util.jar,\
tomcat-websocket.jar,\
tools.jar,\
unboundid-ldapsdk-*.jar,\
websocket-api.jar,\
websocket-client-api.jar,\
wsdl4j*.jar,\
xercesImpl.jar,\
xml-apis.jar,\
xmlParserAPIs-*.jar,\
xmlParserAPIs.jar,\
xom-*.jar
# Default list of JAR files that should be scanned that overrides the default
# jarsToSkip list above. This is typically used to include a specific JAR that
# has been excluded by a broad file name pattern in the jarsToSkip list.
# The list of JARs to scan may be over-ridden at a Context level for individual
# scan types by configuring a JarScanner with a nested JarScanFilter.
tomcat.util.scan.StandardJarScanFilter.jarsToScan=\
log4j-taglib*.jar,\
log4j-jakarta-web*.jar,\
log4javascript*.jar,\
slf4j-taglib*.jar
# String cache configuration.
tomcat.util.buf.StringCache.byte.enabled=true
#tomcat.util.buf.StringCache.char.enabled=true
#tomcat.util.buf.StringCache.trainThreshold=500000
#tomcat.util.buf.StringCache.cacheSize=5000

31
conf/context.xml Normal file
View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- The contents of this file will be loaded for each web application -->
<Context>
<!-- Default set of monitored resources. If one of these changes, the -->
<!-- web application will be reloaded. -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<!-- Uncomment this to enable session persistence across Tomcat restarts -->
<!--
<Manager pathname="SESSIONS.ser" />
-->
</Context>

23
conf/jaspic-providers.xml Normal file
View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<jaspic-providers xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml jaspic-providers.xsd"
version="1.0">
<!-- No JASPIC providers configured by default -->
</jaspic-providers>

53
conf/jaspic-providers.xsd Normal file
View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<xs:schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://tomcat.apache.org/xml"
xmlns:jaspic="http://tomcat.apache.org/xml"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.0">
<xs:element name="jaspic-providers">
<xs:complexType>
<xs:sequence>
<xs:element name="provider" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="property" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name" use="required" type="jaspic:propertyname" />
<xs:attribute name="value" use="required" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="className" type="xs:string" />
<xs:attribute name="layer" type="xs:string" />
<xs:attribute name="appContext" type="xs:string" />
<xs:attribute name="description" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="version" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:simpleType name="propertyname">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

76
conf/logging.properties Normal file
View File

@ -0,0 +1,76 @@
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
1catalina.org.apache.juli.AsyncFileHandler.level = ALL
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90
1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8
2localhost.org.apache.juli.AsyncFileHandler.level = ALL
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
2localhost.org.apache.juli.AsyncFileHandler.maxDays = 90
2localhost.org.apache.juli.AsyncFileHandler.encoding = UTF-8
3manager.org.apache.juli.AsyncFileHandler.level = ALL
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
3manager.org.apache.juli.AsyncFileHandler.maxDays = 90
3manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8
4host-manager.org.apache.juli.AsyncFileHandler.level = ALL
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 90
4host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = UTF-8
############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler
# For example, set the org.apache.catalina.util.LifecycleBase logger to log
# each component that extends LifecycleBase changing state:
#org.apache.catalina.util.LifecycleBase.level = FINE
# To see debug messages for HTTP/2 handling, uncomment the following line:
#org.apache.coyote.http2.level = FINE
# To see debug messages for WebSocket handling, uncomment the following line:
#org.apache.tomcat.websocket.level = FINE

174
conf/server.xml Normal file
View File

@ -0,0 +1,174 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
--><!-- Note: A "Server" is not itself a "Container", so you may not
define subcomponents such as "Valves" at this level.
Documentation at /docs/config/server.html
--><Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener"/>
<!-- Security listener. Documentation at /docs/config/listeners.html
<Listener className="org.apache.catalina.security.SecurityListener" />
-->
<!-- OpenSSL support using Tomcat Native -->
<Listener className="org.apache.catalina.core.AprLifecycleListener"/>
<!-- OpenSSL support using FFM API from Java 22 -->
<!-- <Listener className="org.apache.catalina.core.OpenSSLLifecycleListener" /> -->
<!-- Prevent memory leaks due to use of particular java/javax APIs-->
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
<!-- Global JNDI resources
Documentation at /docs/jndi-resources-howto.html
-->
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
</GlobalNamingResources>
<!-- A "Service" is a collection of one or more "Connectors" that share
a single "Container" Note: A "Service" is not itself a "Container",
so you may not define subcomponents such as "Valves" at this level.
Documentation at /docs/config/service.html
-->
<Service name="Catalina">
<!--The connectors can use a shared executor, you can define one or more named thread pools-->
<!--
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>
-->
<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Documentation at :
HTTP Connector: /docs/config/http.html
AJP Connector: /docs/config/ajp.html
Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
-->
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1"/>
<!-- A "Connector" using the shared thread pool-->
<!--
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
<!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2
This connector uses the NIO implementation. The default
SSLImplementation will depend on the presence of the APR/native
library and the useOpenSSL attribute of the AprLifecycleListener.
Either JSSE or OpenSSL style configuration may be used regardless of
the SSLImplementation selected. JSSE style configuration is used below.
-->
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
certificateKeystorePassword="changeit" type="RSA" />
</SSLHostConfig>
</Connector>
-->
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!--
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443" />
-->
<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
analyzes the HTTP headers included with the request, and passes them
on to the appropriate Host (virtual host).
Documentation at /docs/config/engine.html -->
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
-->
<Engine defaultHost="localhost" name="Catalina">
<!--For clustering, please take a look at documentation at:
/docs/cluster-howto.html (simple how to)
/docs/config/cluster.html (reference documentation) -->
<!--
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-->
<!-- Use the LockOutRealm to prevent attempts to guess user passwords
via a brute-force attack -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log" suffix=".txt"/>
</Host>
</Engine>
</Service>
</Server>

56
conf/tomcat-users.xml Normal file
View File

@ -0,0 +1,56 @@
<?xml version='1.0' encoding='cp936'?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<!--
By default, no user is included in the "manager-gui" role required
to operate the "/manager/html" web application. If you wish to use this app,
you must define such a user - the username and password are arbitrary.
Built-in Tomcat manager roles:
- manager-gui - allows access to the HTML GUI and the status pages
- manager-script - allows access to the HTTP API and the status pages
- manager-jmx - allows access to the JMX proxy and the status pages
- manager-status - allows access to the status pages only
The users below are wrapped in a comment and are therefore ignored. If you
wish to configure one or more of these users for use with the manager web
application, do not forget to remove the <!.. ..> that surrounds them. You
will also need to set the passwords to something appropriate.
-->
<!--
<user username="admin" password="<must-be-changed>" roles="manager-gui"/>
<user username="robot" password="<must-be-changed>" roles="manager-script"/>
-->
<!--
The sample user and role entries below are intended for use with the
examples web application. They are wrapped in a comment and thus are ignored
when reading this file. If you wish to configure these users for use with the
examples web application, do not forget to remove the <!.. ..> that surrounds
them. You will also need to set the passwords to something appropriate.
-->
<!--
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
<user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
<user username="role1" password="<must-be-changed>" roles="role1"/>
-->
</tomcat-users>

59
conf/tomcat-users.xsd Normal file
View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<xs:schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://tomcat.apache.org/xml"
xmlns:users="http://tomcat.apache.org/xml"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.0">
<xs:element name="tomcat-users">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="role">
<xs:complexType>
<xs:attribute name="rolename" use="required" type="users:entityname" />
<xs:attribute name="description" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="group">
<xs:complexType>
<xs:attribute name="groupname" use="required" type="users:entityname" />
<xs:attribute name="description" type="xs:string" />
<xs:attribute name="roles" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="user">
<xs:complexType>
<xs:attribute name="username" use="required" type="users:entityname" />
<xs:attribute name="fullname" type="xs:string" />
<xs:attribute name="password" type="xs:string" />
<xs:attribute name="roles" type="xs:string" />
<xs:attribute name="groups" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:choice>
<xs:attribute name="version" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:simpleType name="entityname">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

4735
conf/web.xml Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,318 @@
10-Feb-2025 13:53:20.027 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/9.0.98
10-Feb-2025 13:53:20.030 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Dec 5 2024 19:50:29 UTC
10-Feb-2025 13:53:20.030 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号: 9.0.98.0
10-Feb-2025 13:53:20.031 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Windows 11
10-Feb-2025 13:53:20.031 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 10.0
10-Feb-2025 13:53:20.031 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64
10-Feb-2025 13:53:20.031 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: C:\Users\douyi\.jdks\corretto-11.0.25
10-Feb-2025 13:53:20.031 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 11.0.25+9-LTS
10-Feb-2025 13:53:20.031 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Amazon.com Inc.
10-Feb-2025 13:53:20.031 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: F:\Coding\JetBrains\Idea\KTT\School-ST
10-Feb-2025 13:53:20.031 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
10-Feb-2025 13:53:20.037 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.lang=ALL-UNNAMED
10-Feb-2025 13:53:20.037 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.io=ALL-UNNAMED
10-Feb-2025 13:53:20.037 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util=ALL-UNNAMED
10-Feb-2025 13:53:20.037 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
10-Feb-2025 13:53:20.037 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
10-Feb-2025 13:53:20.038 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.home=C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
10-Feb-2025 13:53:20.038 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.base=F:\Coding\JetBrains\Idea\KTT\School-ST
10-Feb-2025 13:53:20.038 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.io.tmpdir=F:\Coding\JetBrains\Idea\KTT\School-ST\temp
10-Feb-2025 13:53:20.038 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.config.file=F:\Coding\JetBrains\Idea\KTT\School-ST\conf\logging.properties
10-Feb-2025 13:53:20.038 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
10-Feb-2025 13:53:20.038 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -javaagent:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\lib\idea_rt.jar=10882:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\bin
10-Feb-2025 13:53:20.038 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dfile.encoding=UTF-8
10-Feb-2025 13:53:20.041 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 使用APR版本[1.7.4]加载了基于APR的Apache Tomcat本机库[1.3.1]。
10-Feb-2025 13:53:20.041 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR功能IPv6[true]、sendfile[true]、accept filters[false]、random[true]、UDS [true]。
10-Feb-2025 13:53:20.041 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL配置useAprConnector[false]useOpenSSL[true]
10-Feb-2025 13:53:20.047 信息 [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL成功初始化 [OpenSSL 3.0.14 4 Jun 2024]
10-Feb-2025 13:53:20.273 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8080"]
10-Feb-2025 13:53:20.295 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[432]毫秒内初始化
10-Feb-2025 13:53:20.356 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina]
10-Feb-2025 13:53:20.356 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.98]
10-Feb-2025 13:53:20.365 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 正在部署部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]。
10-Feb-2025 13:53:20.462 警告 [main] org.apache.tomcat.util.descriptor.web.WebXml.setVersion 未知版本字符串 [6.1]。将使用默认版本。
10-Feb-2025 13:53:20.937 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
10-Feb-2025 13:53:21.419 警告 [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 使用[SHA1PRNG]创建会话ID生成的SecureRandom实例花费了[463]毫秒。
10-Feb-2025 13:53:21.437 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]的部署已在[1,073]ms内完成
10-Feb-2025 13:53:21.444 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"]
10-Feb-2025 13:53:21.841 信息 [main] org.apache.catalina.startup.Catalina.start [1544]毫秒后服务器启动
10-Feb-2025 13:56:35.181 信息 [Thread-1] org.apache.coyote.AbstractProtocol.pause 暂停ProtocolHandler["http-nio-8080"]
10-Feb-2025 13:56:35.913 信息 [Thread-1] org.apache.catalina.core.StandardService.stopInternal 正在停止服务[Catalina]
10-Feb-2025 13:56:35.924 警告 [Thread-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [School-ST] 注册了JDBC驱动程序 [com.mysql.cj.jdbc.Driver]但在Web应用程序停止时无法注销它。 为防止内存泄漏JDBC驱动程序已被强制取消注册。
10-Feb-2025 13:56:35.924 警告 [Thread-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[School-ST]似乎启动了一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[
java.base@11.0.25/java.lang.Object.wait(Native Method)
java.base@11.0.25/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:91)
java.base@11.0.25/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
java.base@11.0.25/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.25/java.lang.Thread.run(Thread.java:829)]
10-Feb-2025 13:56:35.929 信息 [Thread-1] org.apache.coyote.AbstractProtocol.stop 正在停止ProtocolHandler ["http-nio-8080"]
10-Feb-2025 13:56:35.937 信息 [Thread-1] org.apache.coyote.AbstractProtocol.destroy 正在销毁协议处理器 ["http-nio-8080"]
10-Feb-2025 13:56:37.128 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/9.0.98
10-Feb-2025 13:56:37.132 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Dec 5 2024 19:50:29 UTC
10-Feb-2025 13:56:37.132 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号: 9.0.98.0
10-Feb-2025 13:56:37.132 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Windows 11
10-Feb-2025 13:56:37.132 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 10.0
10-Feb-2025 13:56:37.132 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64
10-Feb-2025 13:56:37.132 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: C:\Users\douyi\.jdks\corretto-11.0.25
10-Feb-2025 13:56:37.132 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 11.0.25+9-LTS
10-Feb-2025 13:56:37.132 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Amazon.com Inc.
10-Feb-2025 13:56:37.132 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: F:\Coding\JetBrains\Idea\KTT\School-ST
10-Feb-2025 13:56:37.133 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
10-Feb-2025 13:56:37.139 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.lang=ALL-UNNAMED
10-Feb-2025 13:56:37.139 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.io=ALL-UNNAMED
10-Feb-2025 13:56:37.139 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util=ALL-UNNAMED
10-Feb-2025 13:56:37.139 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
10-Feb-2025 13:56:37.139 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
10-Feb-2025 13:56:37.139 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.home=C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
10-Feb-2025 13:56:37.139 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.base=F:\Coding\JetBrains\Idea\KTT\School-ST
10-Feb-2025 13:56:37.139 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.io.tmpdir=F:\Coding\JetBrains\Idea\KTT\School-ST\temp
10-Feb-2025 13:56:37.139 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.config.file=F:\Coding\JetBrains\Idea\KTT\School-ST\conf\logging.properties
10-Feb-2025 13:56:37.139 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
10-Feb-2025 13:56:37.139 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -javaagent:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\lib\idea_rt.jar=11414:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\bin
10-Feb-2025 13:56:37.139 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dfile.encoding=UTF-8
10-Feb-2025 13:56:37.142 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 使用APR版本[1.7.4]加载了基于APR的Apache Tomcat本机库[1.3.1]。
10-Feb-2025 13:56:37.142 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR功能IPv6[true]、sendfile[true]、accept filters[false]、random[true]、UDS [true]。
10-Feb-2025 13:56:37.142 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL配置useAprConnector[false]useOpenSSL[true]
10-Feb-2025 13:56:37.149 信息 [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL成功初始化 [OpenSSL 3.0.14 4 Jun 2024]
10-Feb-2025 13:56:37.416 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8080"]
10-Feb-2025 13:56:37.439 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[464]毫秒内初始化
10-Feb-2025 13:56:37.519 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina]
10-Feb-2025 13:56:37.519 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.98]
10-Feb-2025 13:56:37.527 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 正在部署部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]。
10-Feb-2025 13:56:37.633 警告 [main] org.apache.tomcat.util.descriptor.web.WebXml.setVersion 未知版本字符串 [6.1]。将使用默认版本。
10-Feb-2025 13:56:38.127 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
10-Feb-2025 13:56:38.565 警告 [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 使用[SHA1PRNG]创建会话ID生成的SecureRandom实例花费了[419]毫秒。
10-Feb-2025 13:56:38.589 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]的部署已在[1,062]ms内完成
10-Feb-2025 13:56:38.593 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"]
10-Feb-2025 13:56:38.980 信息 [main] org.apache.catalina.startup.Catalina.start [1540]毫秒后服务器启动
10-Feb-2025 13:58:07.239 信息 [Thread-1] org.apache.coyote.AbstractProtocol.pause 暂停ProtocolHandler["http-nio-8080"]
10-Feb-2025 13:58:08.933 信息 [Thread-1] org.apache.catalina.core.StandardService.stopInternal 正在停止服务[Catalina]
10-Feb-2025 13:58:08.947 警告 [Thread-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [School-ST] 注册了JDBC驱动程序 [com.mysql.cj.jdbc.Driver]但在Web应用程序停止时无法注销它。 为防止内存泄漏JDBC驱动程序已被强制取消注册。
10-Feb-2025 13:58:08.949 警告 [Thread-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[School-ST]似乎启动了一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[
java.base@11.0.25/java.lang.Object.wait(Native Method)
java.base@11.0.25/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:91)
java.base@11.0.25/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
java.base@11.0.25/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.25/java.lang.Thread.run(Thread.java:829)]
10-Feb-2025 13:58:08.954 信息 [Thread-1] org.apache.coyote.AbstractProtocol.stop 正在停止ProtocolHandler ["http-nio-8080"]
10-Feb-2025 13:58:08.971 信息 [Thread-1] org.apache.coyote.AbstractProtocol.destroy 正在销毁协议处理器 ["http-nio-8080"]
10-Feb-2025 13:58:10.503 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/9.0.98
10-Feb-2025 13:58:10.506 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Dec 5 2024 19:50:29 UTC
10-Feb-2025 13:58:10.506 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号: 9.0.98.0
10-Feb-2025 13:58:10.506 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Windows 11
10-Feb-2025 13:58:10.506 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 10.0
10-Feb-2025 13:58:10.506 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64
10-Feb-2025 13:58:10.506 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: C:\Users\douyi\.jdks\corretto-11.0.25
10-Feb-2025 13:58:10.506 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 11.0.25+9-LTS
10-Feb-2025 13:58:10.506 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Amazon.com Inc.
10-Feb-2025 13:58:10.506 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: F:\Coding\JetBrains\Idea\KTT\School-ST
10-Feb-2025 13:58:10.506 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
10-Feb-2025 13:58:10.513 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.lang=ALL-UNNAMED
10-Feb-2025 13:58:10.513 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.io=ALL-UNNAMED
10-Feb-2025 13:58:10.513 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util=ALL-UNNAMED
10-Feb-2025 13:58:10.513 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
10-Feb-2025 13:58:10.513 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
10-Feb-2025 13:58:10.513 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.home=C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
10-Feb-2025 13:58:10.513 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.base=F:\Coding\JetBrains\Idea\KTT\School-ST
10-Feb-2025 13:58:10.513 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.io.tmpdir=F:\Coding\JetBrains\Idea\KTT\School-ST\temp
10-Feb-2025 13:58:10.513 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.config.file=F:\Coding\JetBrains\Idea\KTT\School-ST\conf\logging.properties
10-Feb-2025 13:58:10.514 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
10-Feb-2025 13:58:10.514 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -javaagent:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\lib\idea_rt.jar=11761:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\bin
10-Feb-2025 13:58:10.514 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dfile.encoding=UTF-8
10-Feb-2025 13:58:10.516 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 使用APR版本[1.7.4]加载了基于APR的Apache Tomcat本机库[1.3.1]。
10-Feb-2025 13:58:10.516 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR功能IPv6[true]、sendfile[true]、accept filters[false]、random[true]、UDS [true]。
10-Feb-2025 13:58:10.516 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL配置useAprConnector[false]useOpenSSL[true]
10-Feb-2025 13:58:10.522 信息 [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL成功初始化 [OpenSSL 3.0.14 4 Jun 2024]
10-Feb-2025 13:58:10.753 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8080"]
10-Feb-2025 13:58:10.774 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[429]毫秒内初始化
10-Feb-2025 13:58:10.834 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina]
10-Feb-2025 13:58:10.834 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.98]
10-Feb-2025 13:58:10.841 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 正在部署部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]。
10-Feb-2025 13:58:10.931 警告 [main] org.apache.tomcat.util.descriptor.web.WebXml.setVersion 未知版本字符串 [6.1]。将使用默认版本。
10-Feb-2025 13:58:11.394 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
10-Feb-2025 13:58:11.819 警告 [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 使用[SHA1PRNG]创建会话ID生成的SecureRandom实例花费了[406]毫秒。
10-Feb-2025 13:58:11.841 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]的部署已在[1,000]ms内完成
10-Feb-2025 13:58:11.846 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"]
10-Feb-2025 13:58:12.301 信息 [main] org.apache.catalina.startup.Catalina.start [1527]毫秒后服务器启动
10-Feb-2025 14:12:34.036 信息 [Thread-1] org.apache.coyote.AbstractProtocol.pause 暂停ProtocolHandler["http-nio-8080"]
10-Feb-2025 14:12:34.767 信息 [Thread-1] org.apache.catalina.core.StandardService.stopInternal 正在停止服务[Catalina]
10-Feb-2025 14:12:34.774 警告 [Thread-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [School-ST] 注册了JDBC驱动程序 [com.mysql.cj.jdbc.Driver]但在Web应用程序停止时无法注销它。 为防止内存泄漏JDBC驱动程序已被强制取消注册。
10-Feb-2025 14:12:34.775 警告 [Thread-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[School-ST]似乎启动了一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[
java.base@11.0.25/java.lang.Object.wait(Native Method)
java.base@11.0.25/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:91)
java.base@11.0.25/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
java.base@11.0.25/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.25/java.lang.Thread.run(Thread.java:829)]
10-Feb-2025 14:12:34.778 信息 [Thread-1] org.apache.coyote.AbstractProtocol.stop 正在停止ProtocolHandler ["http-nio-8080"]
10-Feb-2025 14:12:34.781 信息 [Thread-1] org.apache.coyote.AbstractProtocol.destroy 正在销毁协议处理器 ["http-nio-8080"]
10-Feb-2025 14:12:35.974 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/9.0.98
10-Feb-2025 14:12:35.976 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Dec 5 2024 19:50:29 UTC
10-Feb-2025 14:12:35.977 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号: 9.0.98.0
10-Feb-2025 14:12:35.977 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Windows 11
10-Feb-2025 14:12:35.977 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 10.0
10-Feb-2025 14:12:35.977 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64
10-Feb-2025 14:12:35.977 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: C:\Users\douyi\.jdks\corretto-11.0.25
10-Feb-2025 14:12:35.977 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 11.0.25+9-LTS
10-Feb-2025 14:12:35.977 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Amazon.com Inc.
10-Feb-2025 14:12:35.977 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: F:\Coding\JetBrains\Idea\KTT\School-ST
10-Feb-2025 14:12:35.977 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
10-Feb-2025 14:12:35.984 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.lang=ALL-UNNAMED
10-Feb-2025 14:12:35.984 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.io=ALL-UNNAMED
10-Feb-2025 14:12:35.984 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util=ALL-UNNAMED
10-Feb-2025 14:12:35.985 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
10-Feb-2025 14:12:35.985 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
10-Feb-2025 14:12:35.985 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.home=C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
10-Feb-2025 14:12:35.985 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.base=F:\Coding\JetBrains\Idea\KTT\School-ST
10-Feb-2025 14:12:35.985 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.io.tmpdir=F:\Coding\JetBrains\Idea\KTT\School-ST\temp
10-Feb-2025 14:12:35.985 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.config.file=F:\Coding\JetBrains\Idea\KTT\School-ST\conf\logging.properties
10-Feb-2025 14:12:35.985 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
10-Feb-2025 14:12:35.985 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -javaagent:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\lib\idea_rt.jar=13438:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\bin
10-Feb-2025 14:12:35.986 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dfile.encoding=UTF-8
10-Feb-2025 14:12:35.988 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 使用APR版本[1.7.4]加载了基于APR的Apache Tomcat本机库[1.3.1]。
10-Feb-2025 14:12:35.988 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR功能IPv6[true]、sendfile[true]、accept filters[false]、random[true]、UDS [true]。
10-Feb-2025 14:12:35.988 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL配置useAprConnector[false]useOpenSSL[true]
10-Feb-2025 14:12:35.993 信息 [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL成功初始化 [OpenSSL 3.0.14 4 Jun 2024]
10-Feb-2025 14:12:36.223 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8080"]
10-Feb-2025 14:12:36.246 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[428]毫秒内初始化
10-Feb-2025 14:12:36.358 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina]
10-Feb-2025 14:12:36.358 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.98]
10-Feb-2025 14:12:36.367 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 正在部署部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]。
10-Feb-2025 14:12:36.470 警告 [main] org.apache.tomcat.util.descriptor.web.WebXml.setVersion 未知版本字符串 [6.1]。将使用默认版本。
10-Feb-2025 14:12:36.923 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
10-Feb-2025 14:12:37.331 警告 [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 使用[SHA1PRNG]创建会话ID生成的SecureRandom实例花费了[393]毫秒。
10-Feb-2025 14:12:37.353 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]的部署已在[986]ms内完成
10-Feb-2025 14:12:37.357 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"]
10-Feb-2025 14:12:37.767 信息 [main] org.apache.catalina.startup.Catalina.start [1521]毫秒后服务器启动
10-Feb-2025 14:14:10.361 信息 [Thread-1] org.apache.coyote.AbstractProtocol.pause 暂停ProtocolHandler["http-nio-8080"]
10-Feb-2025 14:14:11.097 信息 [Thread-1] org.apache.catalina.core.StandardService.stopInternal 正在停止服务[Catalina]
10-Feb-2025 14:14:11.103 警告 [Thread-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [School-ST] 注册了JDBC驱动程序 [com.mysql.cj.jdbc.Driver]但在Web应用程序停止时无法注销它。 为防止内存泄漏JDBC驱动程序已被强制取消注册。
10-Feb-2025 14:14:11.103 警告 [Thread-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[School-ST]似乎启动了一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[
java.base@11.0.25/java.lang.Object.wait(Native Method)
java.base@11.0.25/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:91)
java.base@11.0.25/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
java.base@11.0.25/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.25/java.lang.Thread.run(Thread.java:829)]
10-Feb-2025 14:14:11.106 信息 [Thread-1] org.apache.coyote.AbstractProtocol.stop 正在停止ProtocolHandler ["http-nio-8080"]
10-Feb-2025 14:14:11.109 信息 [Thread-1] org.apache.coyote.AbstractProtocol.destroy 正在销毁协议处理器 ["http-nio-8080"]
10-Feb-2025 14:14:12.330 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/9.0.98
10-Feb-2025 14:14:12.334 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Dec 5 2024 19:50:29 UTC
10-Feb-2025 14:14:12.334 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号: 9.0.98.0
10-Feb-2025 14:14:12.334 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Windows 11
10-Feb-2025 14:14:12.334 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 10.0
10-Feb-2025 14:14:12.334 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64
10-Feb-2025 14:14:12.334 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: C:\Users\douyi\.jdks\corretto-11.0.25
10-Feb-2025 14:14:12.334 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 11.0.25+9-LTS
10-Feb-2025 14:14:12.334 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Amazon.com Inc.
10-Feb-2025 14:14:12.334 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: F:\Coding\JetBrains\Idea\KTT\School-ST
10-Feb-2025 14:14:12.334 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
10-Feb-2025 14:14:12.343 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.lang=ALL-UNNAMED
10-Feb-2025 14:14:12.343 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.io=ALL-UNNAMED
10-Feb-2025 14:14:12.344 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util=ALL-UNNAMED
10-Feb-2025 14:14:12.344 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
10-Feb-2025 14:14:12.344 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
10-Feb-2025 14:14:12.344 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.home=C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
10-Feb-2025 14:14:12.344 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.base=F:\Coding\JetBrains\Idea\KTT\School-ST
10-Feb-2025 14:14:12.344 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.io.tmpdir=F:\Coding\JetBrains\Idea\KTT\School-ST\temp
10-Feb-2025 14:14:12.344 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.config.file=F:\Coding\JetBrains\Idea\KTT\School-ST\conf\logging.properties
10-Feb-2025 14:14:12.344 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
10-Feb-2025 14:14:12.345 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -javaagent:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\lib\idea_rt.jar=13721:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\bin
10-Feb-2025 14:14:12.345 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dfile.encoding=UTF-8
10-Feb-2025 14:14:12.347 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 使用APR版本[1.7.4]加载了基于APR的Apache Tomcat本机库[1.3.1]。
10-Feb-2025 14:14:12.348 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR功能IPv6[true]、sendfile[true]、accept filters[false]、random[true]、UDS [true]。
10-Feb-2025 14:14:12.348 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL配置useAprConnector[false]useOpenSSL[true]
10-Feb-2025 14:14:12.354 信息 [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL成功初始化 [OpenSSL 3.0.14 4 Jun 2024]
10-Feb-2025 14:14:12.585 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8080"]
10-Feb-2025 14:14:12.606 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[461]毫秒内初始化
10-Feb-2025 14:14:12.701 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina]
10-Feb-2025 14:14:12.701 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.98]
10-Feb-2025 14:14:12.717 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 正在部署部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]。
10-Feb-2025 14:14:12.825 警告 [main] org.apache.tomcat.util.descriptor.web.WebXml.setVersion 未知版本字符串 [6.1]。将使用默认版本。
10-Feb-2025 14:14:13.273 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
10-Feb-2025 14:14:13.670 警告 [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 使用[SHA1PRNG]创建会话ID生成的SecureRandom实例花费了[381]毫秒。
10-Feb-2025 14:14:13.693 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]的部署已在[977]ms内完成
10-Feb-2025 14:14:13.697 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"]
10-Feb-2025 14:14:14.087 信息 [main] org.apache.catalina.startup.Catalina.start [1479]毫秒后服务器启动
10-Feb-2025 15:36:01.587 信息 [Thread-1] org.apache.coyote.AbstractProtocol.pause 暂停ProtocolHandler["http-nio-8080"]
10-Feb-2025 15:36:02.306 信息 [Thread-1] org.apache.catalina.core.StandardService.stopInternal 正在停止服务[Catalina]
10-Feb-2025 15:36:02.318 警告 [Thread-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [School-ST] 注册了JDBC驱动程序 [com.mysql.cj.jdbc.Driver]但在Web应用程序停止时无法注销它。 为防止内存泄漏JDBC驱动程序已被强制取消注册。
10-Feb-2025 15:36:02.319 警告 [Thread-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[School-ST]似乎启动了一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[
java.base@11.0.25/java.lang.Object.wait(Native Method)
java.base@11.0.25/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:91)
java.base@11.0.25/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
java.base@11.0.25/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.25/java.lang.Thread.run(Thread.java:829)]
10-Feb-2025 15:36:02.325 信息 [Thread-1] org.apache.coyote.AbstractProtocol.stop 正在停止ProtocolHandler ["http-nio-8080"]
10-Feb-2025 15:36:02.330 信息 [Thread-1] org.apache.coyote.AbstractProtocol.destroy 正在销毁协议处理器 ["http-nio-8080"]
10-Feb-2025 15:36:02.358 信息 [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
java.lang.IllegalStateException: 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1369)
at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:995)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:123)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:90)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
10-Feb-2025 15:36:03.574 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/9.0.98
10-Feb-2025 15:36:03.576 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Dec 5 2024 19:50:29 UTC
10-Feb-2025 15:36:03.576 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号: 9.0.98.0
10-Feb-2025 15:36:03.576 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Windows 11
10-Feb-2025 15:36:03.576 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 10.0
10-Feb-2025 15:36:03.577 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64
10-Feb-2025 15:36:03.577 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: C:\Users\douyi\.jdks\corretto-11.0.25
10-Feb-2025 15:36:03.577 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 11.0.25+9-LTS
10-Feb-2025 15:36:03.577 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Amazon.com Inc.
10-Feb-2025 15:36:03.577 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: F:\Coding\JetBrains\Idea\KTT\School-ST
10-Feb-2025 15:36:03.577 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
10-Feb-2025 15:36:03.584 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.lang=ALL-UNNAMED
10-Feb-2025 15:36:03.584 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.io=ALL-UNNAMED
10-Feb-2025 15:36:03.585 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util=ALL-UNNAMED
10-Feb-2025 15:36:03.585 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
10-Feb-2025 15:36:03.585 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
10-Feb-2025 15:36:03.585 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.home=C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
10-Feb-2025 15:36:03.585 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.base=F:\Coding\JetBrains\Idea\KTT\School-ST
10-Feb-2025 15:36:03.585 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.io.tmpdir=F:\Coding\JetBrains\Idea\KTT\School-ST\temp
10-Feb-2025 15:36:03.585 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.config.file=F:\Coding\JetBrains\Idea\KTT\School-ST\conf\logging.properties
10-Feb-2025 15:36:03.585 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
10-Feb-2025 15:36:03.586 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -javaagent:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\lib\idea_rt.jar=7223:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\bin
10-Feb-2025 15:36:03.586 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dfile.encoding=UTF-8
10-Feb-2025 15:36:03.588 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 使用APR版本[1.7.4]加载了基于APR的Apache Tomcat本机库[1.3.1]。
10-Feb-2025 15:36:03.588 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR功能IPv6[true]、sendfile[true]、accept filters[false]、random[true]、UDS [true]。
10-Feb-2025 15:36:03.588 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL配置useAprConnector[false]useOpenSSL[true]
10-Feb-2025 15:36:03.593 信息 [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL成功初始化 [OpenSSL 3.0.14 4 Jun 2024]
10-Feb-2025 15:36:03.895 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8080"]
10-Feb-2025 15:36:03.909 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[483]毫秒内初始化
10-Feb-2025 15:36:03.989 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina]
10-Feb-2025 15:36:03.989 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.98]
10-Feb-2025 15:36:03.998 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 正在部署部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]。
10-Feb-2025 15:36:04.092 警告 [main] org.apache.tomcat.util.descriptor.web.WebXml.setVersion 未知版本字符串 [6.1]。将使用默认版本。
10-Feb-2025 15:36:04.541 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
10-Feb-2025 15:36:04.930 警告 [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 使用[SHA1PRNG]创建会话ID生成的SecureRandom实例花费了[370]毫秒。
10-Feb-2025 15:36:04.952 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]的部署已在[954]ms内完成
10-Feb-2025 15:36:04.956 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"]
10-Feb-2025 15:36:05.328 信息 [main] org.apache.catalina.startup.Catalina.start [1418]毫秒后服务器启动
10-Feb-2025 17:30:27.521 信息 [Thread-1] org.apache.coyote.AbstractProtocol.pause 暂停ProtocolHandler["http-nio-8080"]
10-Feb-2025 17:30:28.635 信息 [Thread-1] org.apache.catalina.core.StandardService.stopInternal 正在停止服务[Catalina]
10-Feb-2025 17:30:28.656 警告 [Thread-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [School-ST] 注册了JDBC驱动程序 [com.mysql.cj.jdbc.Driver]但在Web应用程序停止时无法注销它。 为防止内存泄漏JDBC驱动程序已被强制取消注册。
10-Feb-2025 17:30:28.658 警告 [Thread-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[School-ST]似乎启动了一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[
java.base@11.0.25/java.lang.Object.wait(Native Method)
java.base@11.0.25/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:91)
java.base@11.0.25/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
java.base@11.0.25/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.25/java.lang.Thread.run(Thread.java:829)]
10-Feb-2025 17:30:28.681 信息 [Thread-1] org.apache.coyote.AbstractProtocol.stop 正在停止ProtocolHandler ["http-nio-8080"]
10-Feb-2025 17:30:28.692 信息 [Thread-1] org.apache.coyote.AbstractProtocol.destroy 正在销毁协议处理器 ["http-nio-8080"]
10-Feb-2025 17:30:28.744 信息 [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
java.lang.IllegalStateException: 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1369)
at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:995)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:123)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:90)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)

View File

@ -0,0 +1,106 @@
11-Feb-2025 14:59:04.365 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/9.0.98
11-Feb-2025 14:59:04.367 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Dec 5 2024 19:50:29 UTC
11-Feb-2025 14:59:04.368 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号: 9.0.98.0
11-Feb-2025 14:59:04.368 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Windows 11
11-Feb-2025 14:59:04.368 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 10.0
11-Feb-2025 14:59:04.368 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64
11-Feb-2025 14:59:04.368 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: C:\Users\douyi\.jdks\corretto-11.0.25
11-Feb-2025 14:59:04.368 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 11.0.25+9-LTS
11-Feb-2025 14:59:04.368 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Amazon.com Inc.
11-Feb-2025 14:59:04.368 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: F:\Coding\JetBrains\Idea\KTT\School-ST
11-Feb-2025 14:59:04.368 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
11-Feb-2025 14:59:04.376 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.lang=ALL-UNNAMED
11-Feb-2025 14:59:04.376 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.io=ALL-UNNAMED
11-Feb-2025 14:59:04.376 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util=ALL-UNNAMED
11-Feb-2025 14:59:04.376 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
11-Feb-2025 14:59:04.376 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
11-Feb-2025 14:59:04.376 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.home=C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
11-Feb-2025 14:59:04.377 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.base=F:\Coding\JetBrains\Idea\KTT\School-ST
11-Feb-2025 14:59:04.377 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.io.tmpdir=F:\Coding\JetBrains\Idea\KTT\School-ST\temp
11-Feb-2025 14:59:04.377 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.config.file=F:\Coding\JetBrains\Idea\KTT\School-ST\conf\logging.properties
11-Feb-2025 14:59:04.377 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
11-Feb-2025 14:59:04.377 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -javaagent:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\lib\idea_rt.jar=3798:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\bin
11-Feb-2025 14:59:04.377 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dfile.encoding=UTF-8
11-Feb-2025 14:59:04.382 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 使用APR版本[1.7.4]加载了基于APR的Apache Tomcat本机库[1.3.1]。
11-Feb-2025 14:59:04.382 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR功能IPv6[true]、sendfile[true]、accept filters[false]、random[true]、UDS [true]。
11-Feb-2025 14:59:04.382 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL配置useAprConnector[false]useOpenSSL[true]
11-Feb-2025 14:59:04.398 信息 [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL成功初始化 [OpenSSL 3.0.14 4 Jun 2024]
11-Feb-2025 14:59:04.646 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8080"]
11-Feb-2025 14:59:04.671 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[486]毫秒内初始化
11-Feb-2025 14:59:04.760 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina]
11-Feb-2025 14:59:04.760 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.98]
11-Feb-2025 14:59:04.769 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 正在部署部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]。
11-Feb-2025 14:59:04.869 警告 [main] org.apache.tomcat.util.descriptor.web.WebXml.setVersion 未知版本字符串 [6.1]。将使用默认版本。
11-Feb-2025 14:59:05.340 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
11-Feb-2025 14:59:05.778 警告 [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 使用[SHA1PRNG]创建会话ID生成的SecureRandom实例花费了[420]毫秒。
11-Feb-2025 14:59:05.795 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]的部署已在[1,026]ms内完成
11-Feb-2025 14:59:05.799 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"]
11-Feb-2025 14:59:06.195 信息 [main] org.apache.catalina.startup.Catalina.start [1524]毫秒后服务器启动
11-Feb-2025 16:55:42.428 信息 [Thread-1] org.apache.coyote.AbstractProtocol.pause 暂停ProtocolHandler["http-nio-8080"]
11-Feb-2025 16:55:43.213 信息 [Thread-1] org.apache.catalina.core.StandardService.stopInternal 正在停止服务[Catalina]
11-Feb-2025 16:55:43.232 警告 [Thread-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [School-ST] 注册了JDBC驱动程序 [com.mysql.cj.jdbc.Driver]但在Web应用程序停止时无法注销它。 为防止内存泄漏JDBC驱动程序已被强制取消注册。
11-Feb-2025 16:55:43.233 警告 [Thread-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[School-ST]似乎启动了一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[
java.base@11.0.25/java.lang.Object.wait(Native Method)
java.base@11.0.25/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:91)
java.base@11.0.25/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
java.base@11.0.25/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.25/java.lang.Thread.run(Thread.java:829)]
11-Feb-2025 16:55:43.245 信息 [Thread-1] org.apache.coyote.AbstractProtocol.stop 正在停止ProtocolHandler ["http-nio-8080"]
11-Feb-2025 16:55:43.249 信息 [Thread-1] org.apache.coyote.AbstractProtocol.destroy 正在销毁协议处理器 ["http-nio-8080"]
11-Feb-2025 16:55:43.279 信息 [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
java.lang.IllegalStateException: 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1369)
at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:995)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:123)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:90)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
11-Feb-2025 16:55:43.280 信息 [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
java.lang.IllegalStateException: 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1369)
at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:995)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:123)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:90)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
11-Feb-2025 16:55:44.580 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/9.0.98
11-Feb-2025 16:55:44.583 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Dec 5 2024 19:50:29 UTC
11-Feb-2025 16:55:44.583 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号: 9.0.98.0
11-Feb-2025 16:55:44.583 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Windows 11
11-Feb-2025 16:55:44.583 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 10.0
11-Feb-2025 16:55:44.583 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64
11-Feb-2025 16:55:44.583 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: C:\Users\douyi\.jdks\corretto-11.0.25
11-Feb-2025 16:55:44.583 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 11.0.25+9-LTS
11-Feb-2025 16:55:44.583 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Amazon.com Inc.
11-Feb-2025 16:55:44.584 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: F:\Coding\JetBrains\Idea\KTT\School-ST
11-Feb-2025 16:55:44.584 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
11-Feb-2025 16:55:44.590 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.lang=ALL-UNNAMED
11-Feb-2025 16:55:44.590 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.io=ALL-UNNAMED
11-Feb-2025 16:55:44.590 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util=ALL-UNNAMED
11-Feb-2025 16:55:44.591 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
11-Feb-2025 16:55:44.591 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
11-Feb-2025 16:55:44.591 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.home=C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
11-Feb-2025 16:55:44.591 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.base=F:\Coding\JetBrains\Idea\KTT\School-ST
11-Feb-2025 16:55:44.591 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.io.tmpdir=F:\Coding\JetBrains\Idea\KTT\School-ST\temp
11-Feb-2025 16:55:44.591 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.config.file=F:\Coding\JetBrains\Idea\KTT\School-ST\conf\logging.properties
11-Feb-2025 16:55:44.591 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
11-Feb-2025 16:55:44.591 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -javaagent:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\lib\idea_rt.jar=12289:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\bin
11-Feb-2025 16:55:44.591 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dfile.encoding=UTF-8
11-Feb-2025 16:55:44.593 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 使用APR版本[1.7.4]加载了基于APR的Apache Tomcat本机库[1.3.1]。
11-Feb-2025 16:55:44.593 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR功能IPv6[true]、sendfile[true]、accept filters[false]、random[true]、UDS [true]。
11-Feb-2025 16:55:44.593 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL配置useAprConnector[false]useOpenSSL[true]
11-Feb-2025 16:55:44.598 信息 [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL成功初始化 [OpenSSL 3.0.14 4 Jun 2024]
11-Feb-2025 16:55:44.830 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8080"]
11-Feb-2025 16:55:44.849 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[410]毫秒内初始化
11-Feb-2025 16:55:44.962 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina]
11-Feb-2025 16:55:44.963 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.98]
11-Feb-2025 16:55:44.971 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 正在部署部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]。
11-Feb-2025 16:55:45.081 警告 [main] org.apache.tomcat.util.descriptor.web.WebXml.setVersion 未知版本字符串 [6.1]。将使用默认版本。
11-Feb-2025 16:55:45.518 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
11-Feb-2025 16:55:45.902 警告 [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 使用[SHA1PRNG]创建会话ID生成的SecureRandom实例花费了[367]毫秒。
11-Feb-2025 16:55:45.917 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]的部署已在[946]ms内完成
11-Feb-2025 16:55:45.922 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"]
11-Feb-2025 16:55:46.308 信息 [main] org.apache.catalina.startup.Catalina.start [1459]毫秒后服务器启动

View File

@ -0,0 +1,173 @@
12-Feb-2025 13:46:17.947 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/9.0.98
12-Feb-2025 13:46:17.951 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Dec 5 2024 19:50:29 UTC
12-Feb-2025 13:46:17.951 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号: 9.0.98.0
12-Feb-2025 13:46:17.951 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Windows 11
12-Feb-2025 13:46:17.951 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 10.0
12-Feb-2025 13:46:17.952 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64
12-Feb-2025 13:46:17.952 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: C:\Users\douyi\.jdks\corretto-11.0.25
12-Feb-2025 13:46:17.952 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 11.0.25+9-LTS
12-Feb-2025 13:46:17.952 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Amazon.com Inc.
12-Feb-2025 13:46:17.952 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: F:\Coding\JetBrains\Idea\KTT\School-ST
12-Feb-2025 13:46:17.952 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
12-Feb-2025 13:46:17.960 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.lang=ALL-UNNAMED
12-Feb-2025 13:46:17.961 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.io=ALL-UNNAMED
12-Feb-2025 13:46:17.961 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util=ALL-UNNAMED
12-Feb-2025 13:46:17.961 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
12-Feb-2025 13:46:17.961 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
12-Feb-2025 13:46:17.961 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.home=C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
12-Feb-2025 13:46:17.961 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.base=F:\Coding\JetBrains\Idea\KTT\School-ST
12-Feb-2025 13:46:17.962 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.io.tmpdir=F:\Coding\JetBrains\Idea\KTT\School-ST\temp
12-Feb-2025 13:46:17.962 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.config.file=F:\Coding\JetBrains\Idea\KTT\School-ST\conf\logging.properties
12-Feb-2025 13:46:17.962 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
12-Feb-2025 13:46:17.962 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -javaagent:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\lib\idea_rt.jar=11117:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\bin
12-Feb-2025 13:46:17.962 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dfile.encoding=UTF-8
12-Feb-2025 13:46:17.968 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 使用APR版本[1.7.4]加载了基于APR的Apache Tomcat本机库[1.3.1]。
12-Feb-2025 13:46:17.969 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR功能IPv6[true]、sendfile[true]、accept filters[false]、random[true]、UDS [true]。
12-Feb-2025 13:46:17.969 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL配置useAprConnector[false]useOpenSSL[true]
12-Feb-2025 13:46:17.990 信息 [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL成功初始化 [OpenSSL 3.0.14 4 Jun 2024]
12-Feb-2025 13:46:18.330 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8080"]
12-Feb-2025 13:46:18.358 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[638]毫秒内初始化
12-Feb-2025 13:46:18.475 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina]
12-Feb-2025 13:46:18.475 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.98]
12-Feb-2025 13:46:18.487 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 正在部署部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]。
12-Feb-2025 13:46:18.633 警告 [main] org.apache.tomcat.util.descriptor.web.WebXml.setVersion 未知版本字符串 [6.1]。将使用默认版本。
12-Feb-2025 13:46:19.313 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
12-Feb-2025 13:46:19.929 警告 [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 使用[SHA1PRNG]创建会话ID生成的SecureRandom实例花费了[593]毫秒。
12-Feb-2025 13:46:19.952 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]的部署已在[1,466]ms内完成
12-Feb-2025 13:46:19.958 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"]
12-Feb-2025 13:46:20.527 信息 [main] org.apache.catalina.startup.Catalina.start [2168]毫秒后服务器启动
12-Feb-2025 13:47:06.248 信息 [Thread-1] org.apache.coyote.AbstractProtocol.pause 暂停ProtocolHandler["http-nio-8080"]
12-Feb-2025 13:47:07.045 信息 [Thread-1] org.apache.catalina.core.StandardService.stopInternal 正在停止服务[Catalina]
12-Feb-2025 13:47:07.061 信息 [Thread-1] org.apache.coyote.AbstractProtocol.stop 正在停止ProtocolHandler ["http-nio-8080"]
12-Feb-2025 13:47:07.070 信息 [Thread-1] org.apache.coyote.AbstractProtocol.destroy 正在销毁协议处理器 ["http-nio-8080"]
12-Feb-2025 13:47:49.357 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/9.0.98
12-Feb-2025 13:47:49.360 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Dec 5 2024 19:50:29 UTC
12-Feb-2025 13:47:49.360 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号: 9.0.98.0
12-Feb-2025 13:47:49.360 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Windows 11
12-Feb-2025 13:47:49.360 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 10.0
12-Feb-2025 13:47:49.360 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64
12-Feb-2025 13:47:49.360 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: C:\Users\douyi\.jdks\corretto-11.0.25
12-Feb-2025 13:47:49.360 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 11.0.25+9-LTS
12-Feb-2025 13:47:49.360 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Amazon.com Inc.
12-Feb-2025 13:47:49.360 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: F:\Coding\JetBrains\Idea\KTT\School-ST
12-Feb-2025 13:47:49.360 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
12-Feb-2025 13:47:49.368 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.lang=ALL-UNNAMED
12-Feb-2025 13:47:49.368 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.io=ALL-UNNAMED
12-Feb-2025 13:47:49.369 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util=ALL-UNNAMED
12-Feb-2025 13:47:49.369 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
12-Feb-2025 13:47:49.369 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
12-Feb-2025 13:47:49.369 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.home=C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.98
12-Feb-2025 13:47:49.370 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.base=F:\Coding\JetBrains\Idea\KTT\School-ST
12-Feb-2025 13:47:49.370 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.io.tmpdir=F:\Coding\JetBrains\Idea\KTT\School-ST\temp
12-Feb-2025 13:47:49.370 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.config.file=F:\Coding\JetBrains\Idea\KTT\School-ST\conf\logging.properties
12-Feb-2025 13:47:49.370 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
12-Feb-2025 13:47:49.370 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -javaagent:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\lib\idea_rt.jar=11487:C:\Users\douyi\AppData\Local\Programs\IntelliJ IDEA Ultimate 2\bin
12-Feb-2025 13:47:49.370 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dfile.encoding=UTF-8
12-Feb-2025 13:47:49.372 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 使用APR版本[1.7.4]加载了基于APR的Apache Tomcat本机库[1.3.1]。
12-Feb-2025 13:47:49.372 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR功能IPv6[true]、sendfile[true]、accept filters[false]、random[true]、UDS [true]。
12-Feb-2025 13:47:49.372 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL配置useAprConnector[false]useOpenSSL[true]
12-Feb-2025 13:47:49.378 信息 [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL成功初始化 [OpenSSL 3.0.14 4 Jun 2024]
12-Feb-2025 13:47:49.665 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8080"]
12-Feb-2025 13:47:49.691 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[516]毫秒内初始化
12-Feb-2025 13:47:49.796 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina]
12-Feb-2025 13:47:49.796 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.98]
12-Feb-2025 13:47:49.808 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 正在部署部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]。
12-Feb-2025 13:47:49.946 警告 [main] org.apache.tomcat.util.descriptor.web.WebXml.setVersion 未知版本字符串 [6.1]。将使用默认版本。
12-Feb-2025 13:47:50.490 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
12-Feb-2025 13:47:50.960 警告 [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 使用[SHA1PRNG]创建会话ID生成的SecureRandom实例花费了[451]毫秒。
12-Feb-2025 13:47:50.977 信息 [main] org.apache.catalina.startup.HostConfig.deployDescriptor 部署描述符[F:\Coding\JetBrains\Idea\KTT\School-ST\conf\Catalina\localhost\School-ST.xml]的部署已在[1,170]ms内完成
12-Feb-2025 13:47:50.982 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"]
12-Feb-2025 13:47:51.530 信息 [main] org.apache.catalina.startup.Catalina.start [1839]毫秒后服务器启动
12-Feb-2025 14:49:59.970 信息 [Thread-1] org.apache.coyote.AbstractProtocol.pause 暂停ProtocolHandler["http-nio-8080"]
12-Feb-2025 14:50:01.838 信息 [Thread-1] org.apache.catalina.core.StandardService.stopInternal 正在停止服务[Catalina]
12-Feb-2025 14:50:01.866 警告 [Thread-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [School-ST] 注册了JDBC驱动程序 [com.mysql.cj.jdbc.Driver]但在Web应用程序停止时无法注销它。 为防止内存泄漏JDBC驱动程序已被强制取消注册。
12-Feb-2025 14:50:01.869 警告 [Thread-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[School-ST]似乎启动了一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[
java.base@11.0.25/java.lang.Object.wait(Native Method)
java.base@11.0.25/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:91)
java.base@11.0.25/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
java.base@11.0.25/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.25/java.lang.Thread.run(Thread.java:829)]
12-Feb-2025 14:50:01.883 信息 [Thread-1] org.apache.coyote.AbstractProtocol.stop 正在停止ProtocolHandler ["http-nio-8080"]
12-Feb-2025 14:50:01.901 信息 [Thread-1] org.apache.coyote.AbstractProtocol.destroy 正在销毁协议处理器 ["http-nio-8080"]
12-Feb-2025 14:50:01.975 信息 [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
java.lang.IllegalStateException: 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1369)
at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:995)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:123)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:90)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
12-Feb-2025 14:50:01.977 信息 [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
java.lang.IllegalStateException: 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1369)
at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:995)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:123)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:90)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
12-Feb-2025 14:50:01.977 信息 [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
java.lang.IllegalStateException: 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1369)
at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:995)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:123)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:90)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
12-Feb-2025 14:50:01.977 信息 [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
java.lang.IllegalStateException: 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1369)
at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:995)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:123)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:90)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
12-Feb-2025 14:50:01.978 信息 [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
java.lang.IllegalStateException: 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1369)
at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:995)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:123)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:90)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
12-Feb-2025 14:50:01.978 信息 [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
java.lang.IllegalStateException: 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1369)
at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:995)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:123)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:90)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
12-Feb-2025 14:50:01.978 信息 [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
java.lang.IllegalStateException: 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1369)
at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:995)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:123)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:90)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
12-Feb-2025 14:50:01.978 信息 [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
java.lang.IllegalStateException: 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1369)
at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:995)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:123)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:90)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
12-Feb-2025 14:50:01.978 信息 [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
java.lang.IllegalStateException: 非法访问此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1369)
at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:995)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:123)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:90)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)

View File

View File

View File

View File

View File

@ -0,0 +1,88 @@
11-Feb-2025 14:59:31.445 严重 [http-nio-8080-exec-6] org.apache.catalina.core.StandardWrapperValve.invoke 在路径为[/School-ST]的上下文中Servlet[jsp]的Servlet.service引发了具有根本原因的异常[无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri[http://java.sun.com/jsp/jstl/core]]
org.apache.jasper.JasperException: 无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri[http://java.sun.com/jsp/jstl/core]
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:37)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:270)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:77)
at org.apache.jasper.compiler.TagLibraryInfoImpl.generateTldResourcePath(TagLibraryInfoImpl.java:253)
at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:124)
at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:443)
at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:501)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1458)
at org.apache.jasper.compiler.Parser.parse(Parser.java:144)
at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:264)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:109)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:192)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:365)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:343)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:329)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:399)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:376)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:324)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:396)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:937)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Thread.java:829)
11-Feb-2025 15:00:10.843 严重 [http-nio-8080-exec-9] org.apache.catalina.core.StandardWrapperValve.invoke 在路径为[/School-ST]的上下文中Servlet[jsp]的Servlet.service引发了具有根本原因的异常[无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri[http://java.sun.com/jsp/jstl/core]]
org.apache.jasper.JasperException: 无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri[http://java.sun.com/jsp/jstl/core]
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:37)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:270)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:77)
at org.apache.jasper.compiler.TagLibraryInfoImpl.generateTldResourcePath(TagLibraryInfoImpl.java:253)
at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:124)
at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:443)
at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:501)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1458)
at org.apache.jasper.compiler.Parser.parse(Parser.java:144)
at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:264)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:109)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:192)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:365)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:343)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:329)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:399)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:376)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:324)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:396)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:937)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Thread.java:829)

View File

View File

@ -0,0 +1,40 @@
0:0:0:0:0:0:0:1 - - [10/Feb/2025:13:53:24 +0800] "GET /School-ST HTTP/1.1" 302 -
0:0:0:0:0:0:0:1 - - [10/Feb/2025:13:53:24 +0800] "GET /School-ST/ HTTP/1.1" 404 714
0:0:0:0:0:0:0:1 - - [10/Feb/2025:13:53:25 +0800] "GET /favicon.ico HTTP/1.1" 404 648
0:0:0:0:0:0:0:1 - - [10/Feb/2025:13:53:37 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 3653
0:0:0:0:0:0:0:1 - - [10/Feb/2025:13:53:40 +0800] "GET /School-ST/evaluationPage.jsp?college=&teacher=&course= HTTP/1.1" 200 1882
0:0:0:0:0:0:0:1 - - [10/Feb/2025:13:56:52 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 3653
0:0:0:0:0:0:0:1 - - [10/Feb/2025:13:56:56 +0800] "GET /School-ST/evaluationPage.jsp?college=&teacher=&course= HTTP/1.1" 200 1882
0:0:0:0:0:0:0:1 - - [10/Feb/2025:13:58:16 +0800] "POST /School-ST/submitEvaluation.jsp HTTP/1.1" 200 79
0:0:0:0:0:0:0:1 - - [10/Feb/2025:13:58:22 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 3653
0:0:0:0:0:0:0:1 - - [10/Feb/2025:13:58:24 +0800] "GET /School-ST/evaluationPage.jsp?college=&teacher=&course= HTTP/1.1" 200 1882
0:0:0:0:0:0:0:1 - - [10/Feb/2025:14:12:26 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 3653
0:0:0:0:0:0:0:1 - - [10/Feb/2025:14:12:28 +0800] "GET /School-ST/loadTeachers.jsp?college=%E4%BF%A1%E6%81%AF%E5%B7%A5%E7%A8%8B%E5%AD%A6%E9%99%A2 HTTP/1.1" 200 4
0:0:0:0:0:0:0:1 - - [10/Feb/2025:14:12:28 +0800] "GET /School-ST/evaluationPage.jsp?college=%E4%BF%A1%E6%81%AF%E5%B7%A5%E7%A8%8B%E5%AD%A6%E9%99%A2&course= HTTP/1.1" 302 -
0:0:0:0:0:0:0:1 - - [10/Feb/2025:14:12:28 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 3653
0:0:0:0:0:0:0:1 - - [10/Feb/2025:14:12:54 +0800] "GET /School-ST/evaluationPage.jsp?college=&teacher=&course= HTTP/1.1" 200 1882
0:0:0:0:0:0:0:1 - - [10/Feb/2025:14:14:16 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 3653
0:0:0:0:0:0:0:1 - - [10/Feb/2025:14:14:18 +0800] "GET /School-ST/evaluationPage.jsp?college=&teacher=&course= HTTP/1.1" 200 1882
0:0:0:0:0:0:0:1 - - [10/Feb/2025:15:33:56 +0800] "GET /School-ST/evaluationPage.jsp?college=&teacher=&course= HTTP/1.1" 200 6529
0:0:0:0:0:0:0:1 - - [10/Feb/2025:15:33:59 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 3653
0:0:0:0:0:0:0:1 - - [10/Feb/2025:15:36:11 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 3194
0:0:0:0:0:0:0:1 - - [10/Feb/2025:15:36:14 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 3194
0:0:0:0:0:0:0:1 - - [10/Feb/2025:15:36:16 +0800] "GET /School-ST/loadTeachers.jsp?college=%E4%BF%A1%E6%81%AF%E5%B7%A5%E7%A8%8B%E5%AD%A6%E9%99%A2 HTTP/1.1" 200 130
0:0:0:0:0:0:0:1 - - [10/Feb/2025:15:36:19 +0800] "GET /School-ST/evaluationPage.jsp?college=%E4%BF%A1%E6%81%AF%E5%B7%A5%E7%A8%8B%E5%AD%A6%E9%99%A2&teacher=1&course= HTTP/1.1" 200 6301
0:0:0:0:0:0:0:1 - - [10/Feb/2025:15:36:32 +0800] "POST /School-ST/submitEvaluation.jsp HTTP/1.1" 200 101
0:0:0:0:0:0:0:1 - - [10/Feb/2025:15:37:39 +0800] "GET /School-ST/loadTeachers.jsp?college=%E4%BF%A1%E6%81%AF%E5%B7%A5%E7%A8%8B%E5%AD%A6%E9%99%A2 HTTP/1.1" 200 130
0:0:0:0:0:0:0:1 - - [10/Feb/2025:15:37:42 +0800] "GET /School-ST/loadCourses.jsp?teacher=2 HTTP/1.1" 200 92
0:0:0:0:0:0:0:1 - - [10/Feb/2025:15:37:43 +0800] "GET /School-ST/loadCourses.jsp?teacher=3 HTTP/1.1" 200 6
0:0:0:0:0:0:0:1 - - [10/Feb/2025:15:37:44 +0800] "GET /School-ST/loadCourses.jsp?teacher=4 HTTP/1.1" 200 6
0:0:0:0:0:0:0:1 - - [10/Feb/2025:15:37:46 +0800] "GET /School-ST/loadCourses.jsp?teacher=1 HTTP/1.1" 200 76
0:0:0:0:0:0:0:1 - - [10/Feb/2025:15:37:47 +0800] "GET /School-ST/loadTeachers.jsp?college=%E6%99%BA%E8%83%BD%E5%B7%A5%E5%AD%A6%E9%99%A2 HTTP/1.1" 200 34
0:0:0:0:0:0:0:1 - - [10/Feb/2025:15:37:50 +0800] "GET /School-ST/loadTeachers.jsp?college=%E4%BF%A1%E6%81%AF%E5%B7%A5%E7%A8%8B%E5%AD%A6%E9%99%A2 HTTP/1.1" 200 130
0:0:0:0:0:0:0:1 - - [10/Feb/2025:15:37:52 +0800] "GET /School-ST/evaluationPage.jsp?college=%E4%BF%A1%E6%81%AF%E5%B7%A5%E7%A8%8B%E5%AD%A6%E9%99%A2&teacher=1&course=1 HTTP/1.1" 200 6302
0:0:0:0:0:0:0:1 - - [10/Feb/2025:15:38:08 +0800] "POST /School-ST/submitEvaluation.jsp HTTP/1.1" 200 21
0:0:0:0:0:0:0:1 - - [10/Feb/2025:15:52:00 +0800] "GET /School-ST/admin.jsp HTTP/1.1" 200 1332
0:0:0:0:0:0:0:1 - - [10/Feb/2025:16:01:26 +0800] "GET /School-ST/admin.jsp HTTP/1.1" 200 1316
0:0:0:0:0:0:0:1 - - [10/Feb/2025:16:45:22 +0800] "GET /School-ST/admin.jsp HTTP/1.1" 200 1401
0:0:0:0:0:0:0:1 - - [10/Feb/2025:16:45:32 +0800] "GET /School-ST/admin.jsp HTTP/1.1" 200 1401
0:0:0:0:0:0:0:1 - - [10/Feb/2025:16:45:37 +0800] "GET /School-ST/admin.jsp HTTP/1.1" 200 1401
0:0:0:0:0:0:0:1 - - [10/Feb/2025:16:45:48 +0800] "GET /School-ST/admin.jsp HTTP/1.1" 200 347
0:0:0:0:0:0:0:1 - - [10/Feb/2025:16:45:55 +0800] "GET /School-ST/admin.jsp HTTP/1.1" 200 1332

View File

@ -0,0 +1,13 @@
0:0:0:0:0:0:0:1 - - [11/Feb/2025:14:59:17 +0800] "GET /School-ST HTTP/1.1" 302 -
0:0:0:0:0:0:0:1 - - [11/Feb/2025:14:59:17 +0800] "GET /School-ST/ HTTP/1.1" 404 714
0:0:0:0:0:0:0:1 - - [11/Feb/2025:14:59:17 +0800] "GET /favicon.ico HTTP/1.1" 404 648
0:0:0:0:0:0:0:1 - - [11/Feb/2025:14:59:31 +0800] "GET /School-ST/evaluationPage.jsp HTTP/1.1" 500 2658
0:0:0:0:0:0:0:1 - - [11/Feb/2025:14:59:57 +0800] "GET /School-ST/evaluation.jsp HTTP/1.1" 404 707
0:0:0:0:0:0:0:1 - - [11/Feb/2025:15:00:05 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 3198
0:0:0:0:0:0:0:1 - - [11/Feb/2025:15:00:08 +0800] "GET /School-ST/loadTeachers.jsp?college=%E4%BF%A1%E6%81%AF%E5%B7%A5%E7%A8%8B%E5%AD%A6%E9%99%A2 HTTP/1.1" 200 130
0:0:0:0:0:0:0:1 - - [11/Feb/2025:15:00:09 +0800] "GET /School-ST/loadCourses.jsp?teacher=2 HTTP/1.1" 200 92
0:0:0:0:0:0:0:1 - - [11/Feb/2025:15:00:10 +0800] "GET /School-ST/evaluationPage.jsp?college=%E4%BF%A1%E6%81%AF%E5%B7%A5%E7%A8%8B%E5%AD%A6%E9%99%A2&teacher=2&course=3 HTTP/1.1" 500 2658
0:0:0:0:0:0:0:1 - - [11/Feb/2025:17:00:14 +0800] "GET /School-ST/evaluationPage.jsp?college=%E4%BF%A1%E6%81%AF%E5%B7%A5%E7%A8%8B%E5%AD%A6%E9%99%A2&teacher=2&course=3 HTTP/1.1" 200 6302
0:0:0:0:0:0:0:1 - - [11/Feb/2025:17:01:35 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 5649
0:0:0:0:0:0:0:1 - - [11/Feb/2025:17:09:39 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 5788
0:0:0:0:0:0:0:1 - - [11/Feb/2025:17:32:17 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 5782

View File

@ -0,0 +1,37 @@
127.0.0.1 - - [12/Feb/2025:13:52:19 +0800] "GET / HTTP/1.1" 404 648
127.0.0.1 - - [12/Feb/2025:13:52:19 +0800] "GET /favicon.ico HTTP/1.1" 404 648
127.0.0.1 - - [12/Feb/2025:13:52:29 +0800] "GET /favicon.ico HTTP/1.1" 404 648
127.0.0.1 - - [12/Feb/2025:13:52:42 +0800] "GET /School-ST HTTP/1.1" 302 -
127.0.0.1 - - [12/Feb/2025:13:52:42 +0800] "GET /School-ST/ HTTP/1.1" 404 714
127.0.0.1 - - [12/Feb/2025:13:52:58 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 5782
127.0.0.1 - - [12/Feb/2025:13:53:05 +0800] "GET /School-ST/loadTeachers.jsp?college=%E6%99%BA%E8%83%BD%E5%B7%A5%E5%AD%A6%E9%99%A2 HTTP/1.1" 200 34
127.0.0.1 - - [12/Feb/2025:13:53:05 +0800] "GET /School-ST/loadTeachers.jsp?college=%E4%BF%A1%E6%81%AF%E5%B7%A5%E7%A8%8B%E5%AD%A6%E9%99%A2 HTTP/1.1" 200 130
127.0.0.1 - - [12/Feb/2025:13:54:50 +0800] "GET /School-ST/loadCourses.jsp?teacher=3 HTTP/1.1" 200 6
127.0.0.1 - - [12/Feb/2025:13:54:51 +0800] "GET /School-ST/loadCourses.jsp?teacher=2 HTTP/1.1" 200 92
127.0.0.1 - - [12/Feb/2025:13:54:52 +0800] "GET /School-ST/evaluationPage.jsp?college=%E4%BF%A1%E6%81%AF%E5%B7%A5%E7%A8%8B%E5%AD%A6%E9%99%A2&teacher=2&course=3 HTTP/1.1" 200 6302
127.0.0.1 - - [12/Feb/2025:13:55:03 +0800] "GET /School-ST/loadTeachers.jsp?college=%E4%BF%A1%E6%81%AF%E5%B7%A5%E7%A8%8B%E5%AD%A6%E9%99%A2 HTTP/1.1" 200 130
127.0.0.1 - - [12/Feb/2025:13:55:06 +0800] "GET /School-ST/loadTeachers.jsp?college=%E4%BF%A1%E6%81%AF%E5%B7%A5%E7%A8%8B%E5%AD%A6%E9%99%A2 HTTP/1.1" 200 130
127.0.0.1 - - [12/Feb/2025:13:55:08 +0800] "GET /School-ST/loadTeachers.jsp?college=%E6%99%BA%E8%83%BD%E5%B7%A5%E5%AD%A6%E9%99%A2 HTTP/1.1" 200 34
127.0.0.1 - - [12/Feb/2025:13:55:09 +0800] "GET /School-ST/loadTeachers.jsp?college=%E7%89%A9%E7%90%86%E5%AD%A6%E9%99%A2 HTTP/1.1" 200 4
127.0.0.1 - - [12/Feb/2025:13:55:10 +0800] "GET /School-ST/loadTeachers.jsp?college=%E4%BF%A1%E6%81%AF%E5%B7%A5%E7%A8%8B%E5%AD%A6%E9%99%A2 HTTP/1.1" 200 130
127.0.0.1 - - [12/Feb/2025:14:03:39 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 5782
127.0.0.1 - - [12/Feb/2025:14:03:45 +0800] "GET /School-ST/evaluationPage.jsp?college=&teacher=&course= HTTP/1.1" 200 6282
127.0.0.1 - - [12/Feb/2025:14:03:58 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 5782
127.0.0.1 - - [12/Feb/2025:14:04:11 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 5782
127.0.0.1 - - [12/Feb/2025:14:04:38 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 5782
127.0.0.1 - - [12/Feb/2025:14:04:38 +0800] "GET /favicon.ico HTTP/1.1" 404 648
127.0.0.1 - - [12/Feb/2025:14:04:41 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 5782
127.0.0.1 - - [12/Feb/2025:14:04:50 +0800] "GET /School-ST/evaluationPage.jsp?college=&teacher=&course= HTTP/1.1" 200 6282
127.0.0.1 - - [12/Feb/2025:14:05:36 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 5782
127.0.0.1 - - [12/Feb/2025:14:05:39 +0800] "GET /School-ST/evaluationPage.jsp?college=&teacher=&course= HTTP/1.1" 200 6282
127.0.0.1 - - [12/Feb/2025:14:05:55 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 5758
127.0.0.1 - - [12/Feb/2025:14:06:11 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 5758
127.0.0.1 - - [12/Feb/2025:14:06:11 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 5758
127.0.0.1 - - [12/Feb/2025:14:06:25 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 5758
127.0.0.1 - - [12/Feb/2025:14:06:34 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 5758
127.0.0.1 - - [12/Feb/2025:14:06:48 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 5809
127.0.0.1 - - [12/Feb/2025:14:06:55 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 5809
127.0.0.1 - - [12/Feb/2025:14:07:11 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 5760
127.0.0.1 - - [12/Feb/2025:14:08:05 +0800] "GET /School-ST/evaluate.jsp HTTP/1.1" 200 5788
127.0.0.1 - - [12/Feb/2025:14:08:37 +0800] "GET /School-ST/admin.jsp HTTP/1.1" 200 1332
127.0.0.1 - - [12/Feb/2025:14:08:55 +0800] "GET /School-ST/admin.jsp HTTP/1.1" 200 1332

View File

View File

View File

View File

@ -4,23 +4,61 @@
<html>
<head>
<title>管理员查看评教统计</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f4f4f4;
}
.container {
width: 80%;
margin: 0 auto;
padding: 20px;
background-color: #fff;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
h1 {
text-align: center;
color: #333;
}
table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
th, td {
padding: 12px;
text-align: left;
border-bottom: 1px solid #ddd;
}
th {
background-color: #4CAF50;
color: white;
}
tr:hover {
background-color: #f5f5f5;
}
</style>
</head>
<body>
<div class="container">
<h1>评教统计</h1>
<table border="1">
<table>
<tr>
<th>老师姓名</th>
<th>平均得分</th>
</tr>
<%
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
String sql = "SELECT t.name, AVG(e.total_score) as avg_score FROM teachers t JOIN evaluations e ON t.teacher_id = e.teacher_id GROUP BY t.teacher_id";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
out.println("<tr><td>" + rs.getString("name") + "</td><td>" + rs.getDouble("avg_score") + "</td></tr>");
try {//加载数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");//连接数据库
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "SchoolST", "123456");//查询语句
String sql = "SELECT t.name, AVG(e.total_score) as avg_score FROM teachers t JOIN evaluations e ON t.teacher_id = e.teacher_id GROUP BY t.teacher_id";//创建Statement对象
Statement stmt = conn.createStatement();//执行查询
ResultSet rs = stmt.executeQuery(sql);//遍历结果集
while (rs.next()) {//输出结果 //老师姓名 //平均得分
out.println("<tr><td>" + rs.getString("name") + "</td><td>" + rs.getDouble("avg_score") + "</td></tr>");//关闭连接
}
rs.close();
stmt.close();
@ -30,5 +68,6 @@
}
%>
</table>
</div>
</body>
</html>

View File

@ -3,82 +3,160 @@
<html>
<head>
<title>学生评教系统</title>
</head>
<body>
<h1>学生评教系统</h1>
<form id="evaluationForm" action="evaluationPage.jsp" method="get">
<label for="college">选择学院:</label>
<select id="college" name="college" onchange="loadTeachers()">
<option value="">--请选择学院--</option>
<option value="信息工程学院">信息工程学院</option>
<option value="智能工学院">智能工学院</option>
<option value="物理学院">物理学院</option>
</select>
<label for="teacher">选择老师:</label>
<select id="teacher" name="teacher" onchange="loadCourses()">
<option value="">--请选择老师--</option>
</select>
<label for="course">选择课程:</label>
<select id="course" name="course">
<option value="">--请选择课程--</option>
</select>
<button type="submit">进入评教页面</button>
</form>
<style>
/* 全局样式 */
body {
font-family: Arial, sans-serif;
background-color: #f0f2f5;
margin: 0;
padding: 20px;
}
h1 {
text-align: center;
color: #2c3e50;
}
.container {
max-width: 800px;
margin: 0 auto;
background: white;
padding: 20px;
border-radius: 10px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
text-align: center;
}
/* 表单样式 */
.form-group {
margin-bottom: 15px;
text-align: left;
}
form {
display: flex;
flex-direction: column;
gap: 15px;
align-items: center;
}
label {
font-weight: bold;
color: #34495e;
margin-bottom: 5px;
}
select {
padding: 8px;
border: 1px solid #bdc3c7;
border-radius: 4px;
outline: none;
appearance: none;
background-color: white;
background-image: url('https://cdn.jsdelivr.net/gh/a854451261/cdn/icon/select-arrow.svg');
background-repeat: no-repeat;
background-position: right 8px center;
background-size: 12px 8px;
text-align: center;
cursor: pointer;
width: calc(100% - 16px);
}
button {
background: linear-gradient(#3498db, #2980b9);
color: white;
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
transition: background 0.3s;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
button:hover {
background: linear-gradient(#2980b9, #3498db);
}
/* 提示语 */
.hint {
color: #7f8c8d;
font-size: 0.9em;
margin-top: 10px;
}
</style>
<script>
function loadTeachers() {
var college = document.getElementById("college").value;
// 动态加载老师和课程
function loadTeachers(college) {
const teachersSelect = document.getElementById("teacher");
const courseSelect = document.getElementById("course");
if (college) {
var xhr = new XMLHttpRequest();
xhr.open("GET", "loadTeachers.jsp?college=" + college, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
document.getElementById("teacher").innerHTML = xhr.responseText;
}
};
xhr.send();
fetch(`loadTeachers.jsp?college=${college}`)
.then(response => response.json())
.then(data => {
populateSelect(teachersSelect, data, "--请选择老师--");
})
.catch(error => {
console.error("加载老师失败:", error);
});
} else {
teachersSelect.innerHTML = "<option value=''>--请选择老师--</option>";
courseSelect.innerHTML = "<option value=''>--请选择课程--</option>";
}
}
function loadCourses() {
var teacher = document.getElementById("teacher").value;
function loadCourses(teacher) {
const courseSelect = document.getElementById("course");
if (teacher) {
var xhr = new XMLHttpRequest();
xhr.open("GET", "loadCourses.jsp?teacher=" + teacher, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
console.log("Debug: Response from loadCourses.jsp: " + xhr.responseText); // 调试信息
try {
var courses = JSON.parse(xhr.responseText);
var courseSelect = document.getElementById("course");
courseSelect.innerHTML = ""; // 清空课程选项
// 添加默认选项
var defaultOption = document.createElement("option");
defaultOption.value = "";
defaultOption.text = "--请选择课程--";
courseSelect.appendChild(defaultOption);
// 添加课程选项
courses.forEach(function(course) {
var option = document.createElement("option");
option.value = course.course_id;
option.text = course.course_name;
courseSelect.appendChild(option);
});
} catch (e) {
console.error("Debug: Error parsing JSON data: " + e.message); // 调试信息
}
} else {
console.error("Debug: AJAX request failed with status: " + xhr.status); // 调试信息
}
};
xhr.send();
fetch(`loadCourses.jsp?teacher=${teacher}`)
.then(response => response.json())
.then(data => {
populateSelect(courseSelect, data, "--请选择课程--");
})
.catch(error => {
console.error("加载课程失败:", error);
});
} else {
courseSelect.innerHTML = "<option value=''>--请选择课程--</option>";
}
}
function populateSelect(selectElement, data, placeholder) {
selectElement.innerHTML = "";
const defaultOption = document.createElement("option");
defaultOption.value = "";
defaultOption.text = placeholder;
selectElement.appendChild(defaultOption);
data.forEach(item => {
const option = document.createElement("option");
option.value = item.value || item.course_id;
option.text = item.text || item.course_name;
selectElement.appendChild(option);
});
}
</script>
</head>
<body>
<div class="container">
<h1>学生评教系统</h1>
<form id="evaluationForm" action="evaluationPage.jsp" method="get">
<div class="form-group">
<label for="college">选择学院:</label>
<select id="college" name="college" onchange="loadTeachers(this.value)">
<option value="">--请选择学院--</option>
<option value="信息工程学院">信息工程学院</option>
<option value="智能工学院">智能工学院</option>
<option value="物理学院">物理学院</option>
</select>
</div>
<div class="form-group">
<label for="teacher">选择老师:</label>
<select id="teacher" name="teacher" onchange="loadCourses(this.value)">
<option value="">--请选择老师--</option>
</select>
</div>
<div class="form-group">
<label for="course">选择课程:</label>
<select id="course" name="course">
<option value="">--请选择课程--</option>
</select>
</div>
<button type="submit">进入评教页面</button>
</form>
<div class="hint">请选择学院、老师以及课程,然后进入评教页面。</div>
</div>
</body>
</html>

View File

@ -1,27 +1,25 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*, org.json.JSONArray, org.json.JSONObject" %>
<%
// 获取选择的学院、老师和课程
String college = request.getParameter("college");
String teacher = request.getParameter("teacher");
String course = request.getParameter("course");
if (college == null || teacher == null || course == null) {
response.sendRedirect("evaluate.jsp"); // 如果参数缺失,跳回选择页面
response.sendRedirect("evaluation.jsp");
return;
}
// 查询所有维度和题目
JSONArray dimensions = new JSONArray();
int totalQuestionCount = 0; // 总题目数量
int totalQuestionCount = 0;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "SchoolST", "123456");
String sql = "SELECT d.dimension_id, d.name AS dimension_name, d.weight, q.question_id, q.question_text " +
"FROM dimensions d " +
"JOIN questions q ON d.dimension_id = q.dimension_id " +
"ORDER BY d.dimension_id, q.question_id";
"FROM dimensions d " +
"JOIN questions q ON d.dimension_id = q.dimension_id " +
"ORDER BY d.dimension_id, q.question_id";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
@ -31,7 +29,6 @@
while (rs.next()) {
int dimensionId = rs.getInt("dimension_id");
if (dimensionId != lastDimensionId) {
// 新维度
if (currentDimension != null) {
dimensions.put(currentDimension);
}
@ -43,17 +40,14 @@
lastDimensionId = dimensionId;
}
// 添加题目
JSONObject question = new JSONObject();
question.put("question_id", rs.getInt("question_id"));
question.put("question_text", rs.getString("question_text"));
currentDimension.getJSONArray("questions").put(question);
// 统计总题目数量
totalQuestionCount++;
}
// 添加最后一个维度
if (currentDimension != null) {
dimensions.put(currentDimension);
}
@ -70,7 +64,6 @@
<head>
<title>评教页面</title>
<style>
/* 表格样式 */
table {
width: 100%;
border-collapse: collapse;
@ -96,60 +89,57 @@
</style>
</head>
<body>
<h1>评教页面</h1>
<form action="submitEvaluation.jsp" method="post" onsubmit="return validateForm()" >
<input type="hidden" name="college" value="<%= college %>">
<input type="hidden" name="teacher" value="<%= teacher %>">
<input type="hidden" name="course" value="<%= course %>">
<h1>评教页面</h1>
<form action="submitEvaluation.jsp" method="post" onsubmit="return validateForm()">
<input type="hidden" name="college" value="<%= college %>">
<input type="hidden" name="teacher" value="<%= teacher %>">
<input type="hidden" name="course" value="<%= course %>">
<%
// 渲染每个维度的题目表格
for (int i = 0; i < dimensions.length(); i++) {
JSONObject dimension = dimensions.getJSONObject(i);
out.println("<div class='dimension-title'>" + dimension.getString("dimension_name") + "(权重:" + dimension.getFloat("weight") + "%</div>");
out.println("<table>");
out.println("<thead><tr><th>题目</th><th>符合</th><th>不符合</th></tr></thead>");
out.println("<tbody>");
<%
for (int i = 0; i < dimensions.length(); i++) {
JSONObject dimension = dimensions.getJSONObject(i);
out.println("<div class='dimension-title'>" + dimension.getString("dimension_name") + "(权重:" + dimension.getFloat("weight") + "%</div>");
out.println("<table>");
out.println("<thead><tr><th>题目</th><th>符合</th><th>不符合</th></tr></thead>");
out.println("<tbody>");
JSONArray questions = dimension.getJSONArray("questions");
for (int j = 0; j < questions.length(); j++) {
JSONObject question = questions.getJSONObject(j);
out.println("<tr>");
out.println("<td class='question-text'>" + question.getString("question_text") + "</td>");
out.println("<td><input type='radio' name='question_" + question.getInt("question_id") + "' value='1' required></td>");
out.println("<td><input type='radio' name='question_" + question.getInt("question_id") + "' value='0' required></td>");
out.println("</tr>");
}
out.println("</tbody></table>");
JSONArray questions = dimension.getJSONArray("questions");
for (int j = 0; j < questions.length(); j++) {
JSONObject question = questions.getJSONObject(j);
out.println("<tr>");
out.println("<td class='question-text'>" + question.getString("question_text") + "</td>");
out.println("<td><input type='radio' name='question_" + question.getInt("question_id") + "' value='1' required></td>");
out.println("<td><input type='radio' name='question_" + question.getInt("question_id") + "' value='0' required></td>");
out.println("</tr>");
}
%>
<button type="submit">提交评价</button>
</form>
<script>
// 总题目数量(从后端传递)
const totalQuestionCount = <%= totalQuestionCount %>;
function validateForm() {
const allQuestions = document.querySelectorAll("input[type='radio']");
const answered = new Set();
// 检查每个题目的单选按钮是否被选中
allQuestions.forEach(input => {
if (input.checked) {
const questionId = input.name.replace("question_", "");
answered.add(questionId);
}
});
if (answered.size !== totalQuestionCount) {
alert("请完成所有题目的评价后再提交!");
return false;
}
return true;
out.println("</tbody></table>");
}
</script>
%>
<button type="submit">提交评价</button>
</form>
<script>
const totalQuestionCount = <%= totalQuestionCount %>;
function validateForm() {
const allQuestions = document.querySelectorAll("input[type='radio']");
const answered = new Set();
allQuestions.forEach(input => {
if (input.checked) {
const questionId = input.name.replace("question_", "");
answered.add(questionId);
}
});
if (answered.size !== totalQuestionCount) {
alert("请完成所有题目的评价后再提交!");
return false;
}
return true;
}
</script>
</body>
</html>

View File

@ -0,0 +1,72 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%
// 数据库连接信息
String url = "jdbc:mysql://localhost:3306/test";
String user = "SchoolST";
String password = "123456";
// 创建表的 SQL 语句
String createTablesSQL = ""
+ "CREATE TABLE IF NOT EXISTS teachers ("
+ " teacher_id INT AUTO_INCREMENT PRIMARY KEY, "
+ " name VARCHAR(255) NOT NULL, "
+ " college VARCHAR(255) NOT NULL"
+ ");"
+ "CREATE TABLE IF NOT EXISTS courses ("
+ " course_id INT AUTO_INCREMENT PRIMARY KEY, "
+ " course_name VARCHAR(255) NOT NULL, "
+ " teacher_id INT, "
+ " FOREIGN KEY (teacher_id) REFERENCES teachers(teacher_id)"
+ ");"
+ "CREATE TABLE IF NOT EXISTS dimensions ("
+ " dimension_id INT AUTO_INCREMENT PRIMARY KEY, "
+ " name VARCHAR(255) NOT NULL, "
+ " weight FLOAT NOT NULL"
+ ");"
+ "CREATE TABLE IF NOT EXISTS questions ("
+ " question_id INT AUTO_INCREMENT PRIMARY KEY, "
+ " question_text VARCHAR(255) NOT NULL, "
+ " dimension_id INT, "
+ " FOREIGN KEY (dimension_id) REFERENCES dimensions(dimension_id)"
+ ");"
+ "CREATE TABLE IF NOT EXISTS evaluations ("
+ " evaluation_id INT AUTO_INCREMENT PRIMARY KEY, "
+ " student_id VARCHAR(255) NOT NULL, "
+ " teacher_id INT, "
+ " course_id INT, "
+ " total_score FLOAT, "
+ " FOREIGN KEY (teacher_id) REFERENCES teachers(teacher_id), "
+ " FOREIGN KEY (course_id) REFERENCES courses(course_id)"
+ ");"
+ "CREATE TABLE IF NOT EXISTS evaluation_answers ("
+ " answer_id INT AUTO_INCREMENT PRIMARY KEY, "
+ " evaluation_id INT, "
+ " question_id INT, "
+ " answer VARCHAR(255), "
+ " FOREIGN KEY (evaluation_id) REFERENCES evaluations(evaluation_id), "
+ " FOREIGN KEY (question_id) REFERENCES questions(question_id)"
+ ");";
try {
// 加载数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立连接
Connection conn = DriverManager.getConnection(url, user, password);
// 执行创建表的 SQL 语句
Statement stmt = conn.createStatement();
stmt.execute(createTablesSQL);
// 输出调试信息
out.println("数据库表初始化成功!");
} catch (Exception e) {
e.printStackTrace();
out.println("数据库表初始化失败:" + e.getMessage());
}
%>

View File

@ -7,7 +7,7 @@
if (teacherId != null && !teacherId.isEmpty()) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "SchoolST", "123456");
String sql = "SELECT * FROM courses WHERE teacher_id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, teacherId);
@ -28,5 +28,5 @@
}
}
out.print(courses.toString()); // 输出 JSON 数据
out.print(courses.toString());
%>

View File

@ -3,7 +3,7 @@
<%
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "SchoolST", "123456");
// 查询所有维度和题目
String sql = "SELECT d.dimension_id, d.name AS dimension_name, d.weight, q.question_id, q.question_text " +

View File

@ -5,7 +5,7 @@
if (college != null && !college.isEmpty()) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "SchoolST", "123456");
String sql = "SELECT * FROM teachers WHERE college = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, college);

View File

@ -8,13 +8,12 @@
if (teacherId != null && courseId != null) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "SchoolST", "123456");
// 1. 查询每个维度的权重和题目数量
String sql = "SELECT d.dimension_id, d.weight, COUNT(q.question_id) AS question_count " +
"FROM dimensions d " +
"LEFT JOIN questions q ON d.dimension_id = q.dimension_id " +
"GROUP BY d.dimension_id";
"FROM dimensions d " +
"LEFT JOIN questions q ON d.dimension_id = q.dimension_id " +
"GROUP BY d.dimension_id";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
@ -28,7 +27,6 @@
rs.close();
stmt.close();
// 2. 查询每个题目所属的维度
Map<Integer, Integer> questionToDimension = new HashMap<>();
sql = "SELECT question_id, dimension_id FROM questions";
stmt = conn.createStatement();
@ -39,7 +37,6 @@
rs.close();
stmt.close();
// 3. 计算每个维度的得分总和
Map<Integer, Float> dimensionScores = new HashMap<>();
for (String paramName : request.getParameterMap().keySet()) {
if (paramName.startsWith("question_")) {
@ -52,7 +49,6 @@
}
}
// 4. 按权重和题目数量计算总分
float totalScore = 0;
for (Map.Entry<Integer, Float> entry : dimensionScores.entrySet()) {
int dimensionId = entry.getKey();
@ -60,12 +56,10 @@
float weight = dimensionWeights.get(dimensionId);
int questionCount = dimensionQuestionCounts.get(dimensionId);
// 关键修正:按实际题目数量计算得分
float dimensionScore = (scoreSum / questionCount) * (weight / 100) * 100;
totalScore += dimensionScore;
}
// 5. 插入评价记录
sql = "INSERT INTO evaluations (student_id, teacher_id, course_id, total_score) VALUES (?, ?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, studentId);
@ -75,10 +69,7 @@
pstmt.executeUpdate();
pstmt.close();
// 6. 插入每个题目的选择(略,同之前代码)
conn.close();
//out.println("提交成功!总得分:" + totalScore);
out.println("提交成功!");
} catch (Exception e) {
e.printStackTrace();

View File

@ -0,0 +1,211 @@
/*
* Generated by the Jasper component of Apache Tomcat
* Version: Apache Tomcat/9.0.98
* Generated at: 2025-02-12 06:08:37 UTC
* Note: The last modified time of this file was set to
* the last modified time of the source file after
* generation to assist with modification tracking.
*/
package org.apache.jsp;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.sql.*;
public final class admin_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent,
org.apache.jasper.runtime.JspSourceImports {
private static final javax.servlet.jsp.JspFactory _jspxFactory =
javax.servlet.jsp.JspFactory.getDefaultFactory();
private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;
private static final java.util.Set<java.lang.String> _jspx_imports_packages;
private static final java.util.Set<java.lang.String> _jspx_imports_classes;
static {
_jspx_imports_packages = new java.util.LinkedHashSet<>(6);
_jspx_imports_packages.add("java.sql");
_jspx_imports_packages.add("javax.servlet");
_jspx_imports_packages.add("javax.servlet.http");
_jspx_imports_packages.add("javax.servlet.jsp");
_jspx_imports_classes = null;
}
private volatile javax.el.ExpressionFactory _el_expressionfactory;
private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;
public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
return _jspx_dependants;
}
public java.util.Set<java.lang.String> getPackageImports() {
return _jspx_imports_packages;
}
public java.util.Set<java.lang.String> getClassImports() {
return _jspx_imports_classes;
}
public javax.el.ExpressionFactory _jsp_getExpressionFactory() {
if (_el_expressionfactory == null) {
synchronized (this) {
if (_el_expressionfactory == null) {
_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
}
}
}
return _el_expressionfactory;
}
public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {
if (_jsp_instancemanager == null) {
synchronized (this) {
if (_jsp_instancemanager == null) {
_jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
}
}
}
return _jsp_instancemanager;
}
public void _jspInit() {
}
public void _jspDestroy() {
}
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
if (!javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
final java.lang.String _jspx_method = request.getMethod();
if ("OPTIONS".equals(_jspx_method)) {
response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
return;
}
if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method)) {
response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OPTIONS");
return;
}
}
final javax.servlet.jsp.PageContext pageContext;
javax.servlet.http.HttpSession session = null;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this;
javax.servlet.jsp.JspWriter _jspx_out = null;
javax.servlet.jsp.PageContext _jspx_page_context = null;
try {
response.setContentType("text/html; charset=UTF-8");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
out.write("\r\n");
out.write("\r\n");
out.write("<!DOCTYPE html>\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write(" <title>管理员查看评教统计</title>\r\n");
out.write(" <style>\r\n");
out.write(" body {\r\n");
out.write(" font-family: Arial, sans-serif;\r\n");
out.write(" margin: 0;\r\n");
out.write(" padding: 0;\r\n");
out.write(" background-color: #f4f4f4;\r\n");
out.write(" }\r\n");
out.write(" .container {\r\n");
out.write(" width: 80%;\r\n");
out.write(" margin: 0 auto;\r\n");
out.write(" padding: 20px;\r\n");
out.write(" background-color: #fff;\r\n");
out.write(" border-radius: 8px;\r\n");
out.write(" box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\r\n");
out.write(" }\r\n");
out.write(" h1 {\r\n");
out.write(" text-align: center;\r\n");
out.write(" color: #333;\r\n");
out.write(" }\r\n");
out.write(" table {\r\n");
out.write(" width: 100%;\r\n");
out.write(" border-collapse: collapse;\r\n");
out.write(" margin-top: 20px;\r\n");
out.write(" }\r\n");
out.write(" th, td {\r\n");
out.write(" padding: 12px;\r\n");
out.write(" text-align: left;\r\n");
out.write(" border-bottom: 1px solid #ddd;\r\n");
out.write(" }\r\n");
out.write(" th {\r\n");
out.write(" background-color: #4CAF50;\r\n");
out.write(" color: white;\r\n");
out.write(" }\r\n");
out.write(" tr:hover {\r\n");
out.write(" background-color: #f5f5f5;\r\n");
out.write(" }\r\n");
out.write(" </style>\r\n");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write("<div class=\"container\">\r\n");
out.write(" <h1>评教统计</h1>\r\n");
out.write(" <table>\r\n");
out.write(" <tr>\r\n");
out.write(" <th>老师姓名</th>\r\n");
out.write(" <th>平均得分</th>\r\n");
out.write(" </tr>\r\n");
out.write(" ");
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "SchoolST", "123456");
String sql = "SELECT t.name, AVG(e.total_score) as avg_score FROM teachers t JOIN evaluations e ON t.teacher_id = e.teacher_id GROUP BY t.teacher_id";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
out.println("<tr><td>" + rs.getString("name") + "</td><td>" + rs.getDouble("avg_score") + "</td></tr>");
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
out.write("\r\n");
out.write(" </table>\r\n");
out.write("</div>\r\n");
out.write("</body>\r\n");
out.write("</html>");
} catch (java.lang.Throwable t) {
if (!(t instanceof javax.servlet.jsp.SkipPageException)){
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
try {
if (response.isCommitted()) {
out.flush();
} else {
out.clearBuffer();
}
} catch (java.io.IOException e) {}
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
else throw new ServletException(t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}
}

View File

@ -0,0 +1,302 @@
/*
* Generated by the Jasper component of Apache Tomcat
* Version: Apache Tomcat/9.0.98
* Generated at: 2025-02-12 06:08:05 UTC
* Note: The last modified time of this file was set to
* the last modified time of the source file after
* generation to assist with modification tracking.
*/
package org.apache.jsp;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
public final class evaluate_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent,
org.apache.jasper.runtime.JspSourceImports {
private static final javax.servlet.jsp.JspFactory _jspxFactory =
javax.servlet.jsp.JspFactory.getDefaultFactory();
private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;
private static final java.util.Set<java.lang.String> _jspx_imports_packages;
private static final java.util.Set<java.lang.String> _jspx_imports_classes;
static {
_jspx_imports_packages = new java.util.LinkedHashSet<>(4);
_jspx_imports_packages.add("javax.servlet");
_jspx_imports_packages.add("javax.servlet.http");
_jspx_imports_packages.add("javax.servlet.jsp");
_jspx_imports_classes = null;
}
private volatile javax.el.ExpressionFactory _el_expressionfactory;
private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;
public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
return _jspx_dependants;
}
public java.util.Set<java.lang.String> getPackageImports() {
return _jspx_imports_packages;
}
public java.util.Set<java.lang.String> getClassImports() {
return _jspx_imports_classes;
}
public javax.el.ExpressionFactory _jsp_getExpressionFactory() {
if (_el_expressionfactory == null) {
synchronized (this) {
if (_el_expressionfactory == null) {
_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
}
}
}
return _el_expressionfactory;
}
public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {
if (_jsp_instancemanager == null) {
synchronized (this) {
if (_jsp_instancemanager == null) {
_jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
}
}
}
return _jsp_instancemanager;
}
public void _jspInit() {
}
public void _jspDestroy() {
}
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
if (!javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
final java.lang.String _jspx_method = request.getMethod();
if ("OPTIONS".equals(_jspx_method)) {
response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
return;
}
if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method)) {
response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OPTIONS");
return;
}
}
final javax.servlet.jsp.PageContext pageContext;
javax.servlet.http.HttpSession session = null;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this;
javax.servlet.jsp.JspWriter _jspx_out = null;
javax.servlet.jsp.PageContext _jspx_page_context = null;
try {
response.setContentType("text/html; charset=UTF-8");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
out.write("\r\n");
out.write("<!DOCTYPE html>\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write(" <title>学生评教系统</title>\r\n");
out.write(" <style>\r\n");
out.write(" /* 全局样式 */\r\n");
out.write(" body {\r\n");
out.write(" font-family: Arial, sans-serif;\r\n");
out.write(" background-color: #f0f2f5;\r\n");
out.write(" margin: 0;\r\n");
out.write(" padding: 20px;\r\n");
out.write(" }\r\n");
out.write(" h1 {\r\n");
out.write(" text-align: center;\r\n");
out.write(" color: #2c3e50;\r\n");
out.write(" }\r\n");
out.write(" .container {\r\n");
out.write(" max-width: 800px;\r\n");
out.write(" margin: 0 auto;\r\n");
out.write(" background: white;\r\n");
out.write(" padding: 20px;\r\n");
out.write(" border-radius: 10px;\r\n");
out.write(" box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\r\n");
out.write(" text-align: center;\r\n");
out.write(" }\r\n");
out.write(" /* 表单样式 */\r\n");
out.write(" .form-group {\r\n");
out.write(" margin-bottom: 15px;\r\n");
out.write(" text-align: left;\r\n");
out.write(" }\r\n");
out.write(" form {\r\n");
out.write(" display: flex;\r\n");
out.write(" flex-direction: column;\r\n");
out.write(" gap: 15px;\r\n");
out.write(" align-items: center;\r\n");
out.write(" }\r\n");
out.write(" label {\r\n");
out.write(" font-weight: bold;\r\n");
out.write(" color: #34495e;\r\n");
out.write(" margin-bottom: 5px;\r\n");
out.write(" }\r\n");
out.write(" select {\r\n");
out.write(" padding: 8px;\r\n");
out.write(" border: 1px solid #bdc3c7;\r\n");
out.write(" border-radius: 4px;\r\n");
out.write(" outline: none;\r\n");
out.write(" appearance: none;\r\n");
out.write(" background-color: white;\r\n");
out.write(" background-image: url('https://cdn.jsdelivr.net/gh/a854451261/cdn/icon/select-arrow.svg');\r\n");
out.write(" background-repeat: no-repeat;\r\n");
out.write(" background-position: right 8px center;\r\n");
out.write(" background-size: 12px 8px;\r\n");
out.write(" text-align: center;\r\n");
out.write(" cursor: pointer;\r\n");
out.write(" width: calc(100% - 16px);\r\n");
out.write(" }\r\n");
out.write(" button {\r\n");
out.write(" background: linear-gradient(#3498db, #2980b9);\r\n");
out.write(" color: white;\r\n");
out.write(" padding: 10px 20px;\r\n");
out.write(" border: none;\r\n");
out.write(" border-radius: 5px;\r\n");
out.write(" cursor: pointer;\r\n");
out.write(" transition: background 0.3s;\r\n");
out.write(" box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\r\n");
out.write(" }\r\n");
out.write(" button:hover {\r\n");
out.write(" background: linear-gradient(#2980b9, #3498db);\r\n");
out.write(" }\r\n");
out.write(" /* 提示语 */\r\n");
out.write(" .hint {\r\n");
out.write(" color: #7f8c8d;\r\n");
out.write(" font-size: 0.9em;\r\n");
out.write(" margin-top: 10px;\r\n");
out.write(" }\r\n");
out.write(" </style>\r\n");
out.write(" <script>\r\n");
out.write(" // 动态加载老师和课程\r\n");
out.write(" function loadTeachers(college) {\r\n");
out.write(" const teachersSelect = document.getElementById(\"teacher\");\r\n");
out.write(" const courseSelect = document.getElementById(\"course\");\r\n");
out.write("\r\n");
out.write(" if (college) {\r\n");
out.write(" fetch(`loadTeachers.jsp?college=");
out.write((java.lang.String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${college}", java.lang.String.class, (javax.servlet.jsp.PageContext)_jspx_page_context, null));
out.write("`)\r\n");
out.write(" .then(response => response.json())\r\n");
out.write(" .then(data => {\r\n");
out.write(" populateSelect(teachersSelect, data, \"--请选择老师--\");\r\n");
out.write(" })\r\n");
out.write(" .catch(error => {\r\n");
out.write(" console.error(\"加载老师失败:\", error);\r\n");
out.write(" });\r\n");
out.write(" } else {\r\n");
out.write(" teachersSelect.innerHTML = \"<option value=''>--请选择老师--</option>\";\r\n");
out.write(" courseSelect.innerHTML = \"<option value=''>--请选择课程--</option>\";\r\n");
out.write(" }\r\n");
out.write(" }\r\n");
out.write("\r\n");
out.write(" function loadCourses(teacher) {\r\n");
out.write(" const courseSelect = document.getElementById(\"course\");\r\n");
out.write("\r\n");
out.write(" if (teacher) {\r\n");
out.write(" fetch(`loadCourses.jsp?teacher=");
out.write((java.lang.String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${teacher}", java.lang.String.class, (javax.servlet.jsp.PageContext)_jspx_page_context, null));
out.write("`)\r\n");
out.write(" .then(response => response.json())\r\n");
out.write(" .then(data => {\r\n");
out.write(" populateSelect(courseSelect, data, \"--请选择课程--\");\r\n");
out.write(" })\r\n");
out.write(" .catch(error => {\r\n");
out.write(" console.error(\"加载课程失败:\", error);\r\n");
out.write(" });\r\n");
out.write(" } else {\r\n");
out.write(" courseSelect.innerHTML = \"<option value=''>--请选择课程--</option>\";\r\n");
out.write(" }\r\n");
out.write(" }\r\n");
out.write("\r\n");
out.write(" function populateSelect(selectElement, data, placeholder) {\r\n");
out.write(" selectElement.innerHTML = \"\";\r\n");
out.write(" const defaultOption = document.createElement(\"option\");\r\n");
out.write(" defaultOption.value = \"\";\r\n");
out.write(" defaultOption.text = placeholder;\r\n");
out.write(" selectElement.appendChild(defaultOption);\r\n");
out.write("\r\n");
out.write(" data.forEach(item => {\r\n");
out.write(" const option = document.createElement(\"option\");\r\n");
out.write(" option.value = item.value || item.course_id;\r\n");
out.write(" option.text = item.text || item.course_name;\r\n");
out.write(" selectElement.appendChild(option);\r\n");
out.write(" });\r\n");
out.write(" }\r\n");
out.write(" </script>\r\n");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write("<div class=\"container\">\r\n");
out.write(" <h1>学生评教系统</h1>\r\n");
out.write(" <form id=\"evaluationForm\" action=\"evaluationPage.jsp\" method=\"get\">\r\n");
out.write(" <div class=\"form-group\">\r\n");
out.write(" <label for=\"college\">选择学院:</label>\r\n");
out.write(" <select id=\"college\" name=\"college\" onchange=\"loadTeachers(this.value)\">\r\n");
out.write(" <option value=\"\">--请选择学院--</option>\r\n");
out.write(" <option value=\"信息工程学院\">信息工程学院</option>\r\n");
out.write(" <option value=\"智能工学院\">智能工学院</option>\r\n");
out.write(" <option value=\"物理学院\">物理学院</option>\r\n");
out.write(" </select>\r\n");
out.write(" </div>\r\n");
out.write(" <div class=\"form-group\">\r\n");
out.write(" <label for=\"teacher\">选择老师:</label>\r\n");
out.write(" <select id=\"teacher\" name=\"teacher\" onchange=\"loadCourses(this.value)\">\r\n");
out.write(" <option value=\"\">--请选择老师--</option>\r\n");
out.write(" </select>\r\n");
out.write(" </div>\r\n");
out.write(" <div class=\"form-group\">\r\n");
out.write(" <label for=\"course\">选择课程:</label>\r\n");
out.write(" <select id=\"course\" name=\"course\">\r\n");
out.write(" <option value=\"\">--请选择课程--</option>\r\n");
out.write(" </select>\r\n");
out.write(" </div>\r\n");
out.write(" <button type=\"submit\">进入评教页面</button>\r\n");
out.write(" </form>\r\n");
out.write(" <div class=\"hint\">请选择学院、老师以及课程,然后进入评教页面。</div>\r\n");
out.write(" <div class=\"hint\">");
out.write("</div>\r\n");
out.write("</div>\r\n");
out.write("</body>\r\n");
out.write("</html>");
} catch (java.lang.Throwable t) {
if (!(t instanceof javax.servlet.jsp.SkipPageException)){
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
try {
if (response.isCommitted()) {
out.flush();
} else {
out.clearBuffer();
}
} catch (java.io.IOException e) {}
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
else throw new ServletException(t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}
}

View File

@ -0,0 +1,296 @@
/*
* Generated by the Jasper component of Apache Tomcat
* Version: Apache Tomcat/9.0.98
* Generated at: 2025-02-12 05:54:52 UTC
* Note: The last modified time of this file was set to
* the last modified time of the source file after
* generation to assist with modification tracking.
*/
package org.apache.jsp;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.sql.*;
import org.json.JSONArray;
import org.json.JSONObject;
public final class evaluationPage_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent,
org.apache.jasper.runtime.JspSourceImports {
private static final javax.servlet.jsp.JspFactory _jspxFactory =
javax.servlet.jsp.JspFactory.getDefaultFactory();
private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;
private static final java.util.Set<java.lang.String> _jspx_imports_packages;
private static final java.util.Set<java.lang.String> _jspx_imports_classes;
static {
_jspx_imports_packages = new java.util.LinkedHashSet<>(6);
_jspx_imports_packages.add("java.sql");
_jspx_imports_packages.add("javax.servlet");
_jspx_imports_packages.add("javax.servlet.http");
_jspx_imports_packages.add("javax.servlet.jsp");
_jspx_imports_classes = new java.util.LinkedHashSet<>(3);
_jspx_imports_classes.add("org.json.JSONObject");
_jspx_imports_classes.add("org.json.JSONArray");
}
private volatile javax.el.ExpressionFactory _el_expressionfactory;
private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;
public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
return _jspx_dependants;
}
public java.util.Set<java.lang.String> getPackageImports() {
return _jspx_imports_packages;
}
public java.util.Set<java.lang.String> getClassImports() {
return _jspx_imports_classes;
}
public javax.el.ExpressionFactory _jsp_getExpressionFactory() {
if (_el_expressionfactory == null) {
synchronized (this) {
if (_el_expressionfactory == null) {
_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
}
}
}
return _el_expressionfactory;
}
public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {
if (_jsp_instancemanager == null) {
synchronized (this) {
if (_jsp_instancemanager == null) {
_jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
}
}
}
return _jsp_instancemanager;
}
public void _jspInit() {
}
public void _jspDestroy() {
}
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
if (!javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
final java.lang.String _jspx_method = request.getMethod();
if ("OPTIONS".equals(_jspx_method)) {
response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
return;
}
if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method)) {
response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OPTIONS");
return;
}
}
final javax.servlet.jsp.PageContext pageContext;
javax.servlet.http.HttpSession session = null;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this;
javax.servlet.jsp.JspWriter _jspx_out = null;
javax.servlet.jsp.PageContext _jspx_page_context = null;
try {
response.setContentType("text/html; charset=UTF-8");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
out.write("\r\n");
out.write("\r\n");
String college = request.getParameter("college");
String teacher = request.getParameter("teacher");
String course = request.getParameter("course");
if (college == null || teacher == null || course == null) {
response.sendRedirect("evaluation.jsp");
return;
}
JSONArray dimensions = new JSONArray();
int totalQuestionCount = 0;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "SchoolST", "123456");
String sql = "SELECT d.dimension_id, d.name AS dimension_name, d.weight, q.question_id, q.question_text " +
"FROM dimensions d " +
"JOIN questions q ON d.dimension_id = q.dimension_id " +
"ORDER BY d.dimension_id, q.question_id";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
JSONObject currentDimension = null;
int lastDimensionId = -1;
while (rs.next()) {
int dimensionId = rs.getInt("dimension_id");
if (dimensionId != lastDimensionId) {
if (currentDimension != null) {
dimensions.put(currentDimension);
}
currentDimension = new JSONObject();
currentDimension.put("dimension_id", dimensionId);
currentDimension.put("dimension_name", rs.getString("dimension_name"));
currentDimension.put("weight", rs.getFloat("weight"));
currentDimension.put("questions", new JSONArray());
lastDimensionId = dimensionId;
}
JSONObject question = new JSONObject();
question.put("question_id", rs.getInt("question_id"));
question.put("question_text", rs.getString("question_text"));
currentDimension.getJSONArray("questions").put(question);
totalQuestionCount++;
}
if (currentDimension != null) {
dimensions.put(currentDimension);
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
out.write("\r\n");
out.write("<!DOCTYPE html>\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write(" <title>评教页面</title>\r\n");
out.write(" <style>\r\n");
out.write(" table {\r\n");
out.write(" width: 100%;\r\n");
out.write(" border-collapse: collapse;\r\n");
out.write(" margin-bottom: 20px;\r\n");
out.write(" }\r\n");
out.write(" th, td {\r\n");
out.write(" padding: 10px;\r\n");
out.write(" border: 1px solid #ddd;\r\n");
out.write(" text-align: left;\r\n");
out.write(" }\r\n");
out.write(" th {\r\n");
out.write(" background-color: #f2f2f2;\r\n");
out.write(" }\r\n");
out.write(" .dimension-title {\r\n");
out.write(" font-size: 18px;\r\n");
out.write(" font-weight: bold;\r\n");
out.write(" margin-top: 20px;\r\n");
out.write(" margin-bottom: 10px;\r\n");
out.write(" }\r\n");
out.write(" .question-text {\r\n");
out.write(" font-weight: normal;\r\n");
out.write(" }\r\n");
out.write(" </style>\r\n");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write("<h1>评教页面</h1>\r\n");
out.write("<form action=\"submitEvaluation.jsp\" method=\"post\" onsubmit=\"return validateForm()\">\r\n");
out.write(" <input type=\"hidden\" name=\"college\" value=\"");
out.print( college );
out.write("\">\r\n");
out.write(" <input type=\"hidden\" name=\"teacher\" value=\"");
out.print( teacher );
out.write("\">\r\n");
out.write(" <input type=\"hidden\" name=\"course\" value=\"");
out.print( course );
out.write("\">\r\n");
out.write("\r\n");
out.write(" ");
for (int i = 0; i < dimensions.length(); i++) {
JSONObject dimension = dimensions.getJSONObject(i);
out.println("<div class='dimension-title'>" + dimension.getString("dimension_name") + "(权重:" + dimension.getFloat("weight") + "%</div>");
out.println("<table>");
out.println("<thead><tr><th>题目</th><th>符合</th><th>不符合</th></tr></thead>");
out.println("<tbody>");
JSONArray questions = dimension.getJSONArray("questions");
for (int j = 0; j < questions.length(); j++) {
JSONObject question = questions.getJSONObject(j);
out.println("<tr>");
out.println("<td class='question-text'>" + question.getString("question_text") + "</td>");
out.println("<td><input type='radio' name='question_" + question.getInt("question_id") + "' value='1' required></td>");
out.println("<td><input type='radio' name='question_" + question.getInt("question_id") + "' value='0' required></td>");
out.println("</tr>");
}
out.println("</tbody></table>");
}
out.write("\r\n");
out.write("\r\n");
out.write(" <button type=\"submit\">提交评价</button>\r\n");
out.write("</form>\r\n");
out.write("\r\n");
out.write("<script>\r\n");
out.write(" const totalQuestionCount = ");
out.print( totalQuestionCount );
out.write(";\r\n");
out.write("\r\n");
out.write(" function validateForm() {\r\n");
out.write(" const allQuestions = document.querySelectorAll(\"input[type='radio']\");\r\n");
out.write(" const answered = new Set();\r\n");
out.write("\r\n");
out.write(" allQuestions.forEach(input => {\r\n");
out.write(" if (input.checked) {\r\n");
out.write(" const questionId = input.name.replace(\"question_\", \"\");\r\n");
out.write(" answered.add(questionId);\r\n");
out.write(" }\r\n");
out.write(" });\r\n");
out.write("\r\n");
out.write(" if (answered.size !== totalQuestionCount) {\r\n");
out.write(" alert(\"请完成所有题目的评价后再提交!\");\r\n");
out.write(" return false;\r\n");
out.write(" }\r\n");
out.write(" return true;\r\n");
out.write(" }\r\n");
out.write("</script>\r\n");
out.write("</body>\r\n");
out.write("</html>");
} catch (java.lang.Throwable t) {
if (!(t instanceof javax.servlet.jsp.SkipPageException)){
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
try {
if (response.isCommitted()) {
out.flush();
} else {
out.clearBuffer();
}
} catch (java.io.IOException e) {}
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
else throw new ServletException(t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}
}

View File

@ -0,0 +1,172 @@
/*
* Generated by the Jasper component of Apache Tomcat
* Version: Apache Tomcat/9.0.98
* Generated at: 2025-02-12 05:54:50 UTC
* Note: The last modified time of this file was set to
* the last modified time of the source file after
* generation to assist with modification tracking.
*/
package org.apache.jsp;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.sql.*;
import org.json.JSONArray;
import org.json.JSONObject;
public final class loadCourses_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent,
org.apache.jasper.runtime.JspSourceImports {
private static final javax.servlet.jsp.JspFactory _jspxFactory =
javax.servlet.jsp.JspFactory.getDefaultFactory();
private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;
private static final java.util.Set<java.lang.String> _jspx_imports_packages;
private static final java.util.Set<java.lang.String> _jspx_imports_classes;
static {
_jspx_imports_packages = new java.util.LinkedHashSet<>(6);
_jspx_imports_packages.add("java.sql");
_jspx_imports_packages.add("javax.servlet");
_jspx_imports_packages.add("javax.servlet.http");
_jspx_imports_packages.add("javax.servlet.jsp");
_jspx_imports_classes = new java.util.LinkedHashSet<>(3);
_jspx_imports_classes.add("org.json.JSONObject");
_jspx_imports_classes.add("org.json.JSONArray");
}
private volatile javax.el.ExpressionFactory _el_expressionfactory;
private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;
public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
return _jspx_dependants;
}
public java.util.Set<java.lang.String> getPackageImports() {
return _jspx_imports_packages;
}
public java.util.Set<java.lang.String> getClassImports() {
return _jspx_imports_classes;
}
public javax.el.ExpressionFactory _jsp_getExpressionFactory() {
if (_el_expressionfactory == null) {
synchronized (this) {
if (_el_expressionfactory == null) {
_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
}
}
}
return _el_expressionfactory;
}
public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {
if (_jsp_instancemanager == null) {
synchronized (this) {
if (_jsp_instancemanager == null) {
_jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
}
}
}
return _jsp_instancemanager;
}
public void _jspInit() {
}
public void _jspDestroy() {
}
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
if (!javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
final java.lang.String _jspx_method = request.getMethod();
if ("OPTIONS".equals(_jspx_method)) {
response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
return;
}
if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method)) {
response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OPTIONS");
return;
}
}
final javax.servlet.jsp.PageContext pageContext;
javax.servlet.http.HttpSession session = null;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this;
javax.servlet.jsp.JspWriter _jspx_out = null;
javax.servlet.jsp.PageContext _jspx_page_context = null;
try {
response.setContentType("application/json; charset=UTF-8");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
out.write("\r\n");
out.write("\r\n");
String teacherId = request.getParameter("teacher");
JSONArray courses = new JSONArray();
if (teacherId != null && !teacherId.isEmpty()) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "SchoolST", "123456");
String sql = "SELECT * FROM courses WHERE teacher_id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, teacherId);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
JSONObject course = new JSONObject();
course.put("course_id", rs.getInt("course_id"));
course.put("course_name", rs.getString("course_name"));
courses.put(course);
}
rs.close();
pstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
out.print(courses.toString());
} catch (java.lang.Throwable t) {
if (!(t instanceof javax.servlet.jsp.SkipPageException)){
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
try {
if (response.isCommitted()) {
out.flush();
} else {
out.clearBuffer();
}
} catch (java.io.IOException e) {}
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
else throw new ServletException(t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}
}

View File

@ -0,0 +1,159 @@
/*
* Generated by the Jasper component of Apache Tomcat
* Version: Apache Tomcat/9.0.98
* Generated at: 2025-02-12 05:53:04 UTC
* Note: The last modified time of this file was set to
* the last modified time of the source file after
* generation to assist with modification tracking.
*/
package org.apache.jsp;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.sql.*;
public final class loadTeachers_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent,
org.apache.jasper.runtime.JspSourceImports {
private static final javax.servlet.jsp.JspFactory _jspxFactory =
javax.servlet.jsp.JspFactory.getDefaultFactory();
private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;
private static final java.util.Set<java.lang.String> _jspx_imports_packages;
private static final java.util.Set<java.lang.String> _jspx_imports_classes;
static {
_jspx_imports_packages = new java.util.LinkedHashSet<>(6);
_jspx_imports_packages.add("java.sql");
_jspx_imports_packages.add("javax.servlet");
_jspx_imports_packages.add("javax.servlet.http");
_jspx_imports_packages.add("javax.servlet.jsp");
_jspx_imports_classes = null;
}
private volatile javax.el.ExpressionFactory _el_expressionfactory;
private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;
public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
return _jspx_dependants;
}
public java.util.Set<java.lang.String> getPackageImports() {
return _jspx_imports_packages;
}
public java.util.Set<java.lang.String> getClassImports() {
return _jspx_imports_classes;
}
public javax.el.ExpressionFactory _jsp_getExpressionFactory() {
if (_el_expressionfactory == null) {
synchronized (this) {
if (_el_expressionfactory == null) {
_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
}
}
}
return _el_expressionfactory;
}
public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {
if (_jsp_instancemanager == null) {
synchronized (this) {
if (_jsp_instancemanager == null) {
_jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
}
}
}
return _jsp_instancemanager;
}
public void _jspInit() {
}
public void _jspDestroy() {
}
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
if (!javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
final java.lang.String _jspx_method = request.getMethod();
if ("OPTIONS".equals(_jspx_method)) {
response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
return;
}
if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method)) {
response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OPTIONS");
return;
}
}
final javax.servlet.jsp.PageContext pageContext;
javax.servlet.http.HttpSession session = null;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this;
javax.servlet.jsp.JspWriter _jspx_out = null;
javax.servlet.jsp.PageContext _jspx_page_context = null;
try {
response.setContentType("text/html; charset=UTF-8");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
out.write("\r\n");
out.write("\r\n");
String college = request.getParameter("college");
if (college != null && !college.isEmpty()) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "SchoolST", "123456");
String sql = "SELECT * FROM teachers WHERE college = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, college);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
out.println("<option value='" + rs.getInt("teacher_id") + "'>" + rs.getString("name") + "</option>");
}
rs.close();
pstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (java.lang.Throwable t) {
if (!(t instanceof javax.servlet.jsp.SkipPageException)){
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
try {
if (response.isCommitted()) {
out.flush();
} else {
out.clearBuffer();
}
} catch (java.io.IOException e) {}
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
else throw new ServletException(t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}
}