学生管理システム
前書き: これは 2 年生向けに設計されたコースです (まだ学生管理システムです...)。 1人あたり4名です チームで協力して行いましたが、この「でも」に注意してください、コードとドキュメントのすべての責任は依然として私にあります... コードとドキュメントは基本的に一人で書きました。まず血を吐いていたのですが、これが後のWeb版の機能の一部が未完成の理由です。
#プロジェクトの概要プロジェクトは、JavaSwing で記述された GUI デスクトップ アプリケーションと、半完成の Web アプリケーションに分かれています。次の図は、プロジェクトの全体的な機能構造を示しています
スコア統計
http://localhost:8080 URL にジャンプします
#使用方法
IDEA を使用してプロジェクトを開きます。プロジェクトの構造は次のとおりです:
プロジェクトを開始したら、ビュー パッケージで LoginFrm を実行します
発生した問題
依存関係の注入に Spring を使用するときに発生した問題
Swing は GUI 開発用の Java パッケージです。コースでは Spring を使用してコンテナを管理しました。しかし、コンテナの依存関係注入に Spring アノテーションを使用するときに問題が発生しました。依存関係の注入は null であり、エラーが次のように報告されました。
スレッド「AWT-EventQueue-0」java.lang.NullPointerExceptionat com.view.LoginFrm.loginAct(LoginFrm.java:187)
での例外at com.view.LoginFrm$2.actionPerformed(LoginFrm.java:96)
Baidu で長い間検索しましたが、問題が見つかりませんでした。Spring 構成は除外しました。ファイルの記述が間違っているか、@Service アノテーションが追加されていないため、問題が発生するのを待っていたところ、インターネットで次のような説明を見つけました。
理由は次のとおりです: 新しいスレッドが Spring コンテナ内にないため、Spring で Bean オブジェクトを取得できません
JavaSwing はスレッドセーフではありません。プロジェクト内のいくつかの場所はマルチによって実行されます。 -スレッド、および多くの UI スレッド内部で同時に実行されるため、これらのスレッドは Spring で管理されるスレッドではないため、Spring インジェクションは失敗します。
また、Spring では、マルチスレッド状況での依存関係の注入にアノテーションを使用することはできません。したがって、必要な Bean オブジェクトを取得するには、手動でのみ行うことができます。必要な Bean オブジェクトを取得するには、コードは次のとおりです。
private final ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); private final AdminService adminService = (AdminServiceImpl)context.getBean("AdminServiceImpl");
実際には、スレッド プールを構成することで管理することもできますが、Swing と don には詳しくありません。実行中にスレッドが何個あるかはわかりません。
この問題は、私が最初は予期していなかったものでした。それを知っていたら、Spring on Swing を使用しなかっただろう...各ビュー層クラスの依存関係を手動で取得する必要があるためです。自分で使うよりずっと悪いです シングルトンモードで MyBatis の依存関係を取得することに違いはありませんが、Spring を使う方が面倒です
Mybatis が HashMap を結果セットとして使用するときに発生する問題
指定されたサインインを見つけるメソッドを作成するときに、戻り値として List @Results({ 削除後、次のように外部キーを有効に設定します: JavaWeb 前述したように、Web は半完成品であり、実装されている機能は主に、ログイン、ログアウト、パスワード変更、生徒管理、授業管理、成績管理などの機能モジュールです。さらに、使用するデータベースは JavaSwing のバージョンと同じであるため、以前のデータは実際に相互運用可能です。 概要: このページは少し見苦しいですが、開発を継続するためのテンプレートとして使用できます。 機能表示 生徒リスト クラスリスト #開始するには、DemoApplication クラスを右クリックして開始します。 更新/削除クエリの実行 Baidu で検索したところ、JPA であることがわかりました。更新または削除操作を実行すると、 Dao または Service を使用する必要があります @Transactional アノテーションがレイヤーに追加されます。これは、これがトランザクション レベルの操作であることを意味します。これは、JPA の使用仕様と同等です。JPA では、トランザクション サポートがなければ、更新および削除操作を実行できないためです。実行されました。
#しかし、フォーマット変換エラーが表示されたので、クエリ結果をコンソールに出力したところ、次のような結果になりました
@Result(property = "key",column = "attendance_num",jdbcType = JdbcType.INTEGER),
@Result(property = "value",column = "出席日",jdbcType = JdbcType.VARCHAR)})[{value=2018-05-17, key=1}, {value=2018-04-17, key=1}, {value=2018-04-18, key=1}, {value= 2018-04-19、キー=3}、{値=2018-04-20、キー=1}、{値=2018-04-21、キー=1}、{値=2018-05-03、キー= 1} ]
HashMap の値は、JSON 文字列の形式から xxx=xxx の形式に変更されました。プロパティの属性値はエンティティ クラスの属性に対応しますが、キーと値は一致しません。 in HashMap では count.Attribute はカウントできないので(間違っていたと思いました)、この時 Mybatis が勝手に属性名を設定するので上記の結果になります。なぜ XML ファイルの形式ではないのかは聞かないでください。当時は十分な時間がなかったので、便宜的に注釈を使用しただけです。解決策: 上記の結果値を HashMap に割り当てます。外部キーに関連付けられたデータを削除するときに発生する問題プロジェクトのサービス層は、次のようなエラーを報告します:
親行を削除または更新できません: 外部キー制約が失敗します (`ttms`.`s_attendance`, CONSTRAINT `student_attendance_foreign` FOREIGN KEY (`student_id`) REFERENCES `s_student` (`id`)); ネストされた例外は java です。 sql.SQLIntegrityConstraintViolationException: 親行を削除または更新できません: 外部キー制約が失敗します (`ttms`.`s_attendance`、CONSTRAINT `student_attendance_foreign` FOREIGN KEY (`student_id`) REFERENCES `s_student` (`id`))
エラー情報を確認してください。Dao 層に問題があります。削除ステートメントに問題があります。理由を分析したところ、外部キーの関連付けが設定されているため、削除できませんでした。データ。 解決策: 次のように、データを削除する前に外部キーを無効に設定します:
setforeign_key_checks = 0; # この時点で削除ステートメントを実行できます。
この方法 この記録は完全に削除されました。
JavaWeb ここでは SpringBoot Spring Data JPA のフレームワークを組み合わせて使用します データの表示には Thymeleaf を使用します データの視覚化には ECharts を使用するページの統計ページがあります
1. ログインインターフェース
2. 生徒管理
生徒の追加
3. クラス管理
クラスの追加
4. スコア統計
使用説明書
#プロジェクト構造図:
以上がJava で実装された学生管理システムのケースを分析します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

bytecodeachievesplatformedentencedexedectedbyavirtualMachine(VM)、forexApplev.forexample、javabytecodecanrunrunrunnonydevicewithajvm、writeonce、runany "ferfuctionality.whilebytecodeOffersenhの可能性を承認します

Javaは100%のプラットフォームの独立性を達成することはできませんが、そのプラットフォームの独立性はJVMとBytecodeを通じて実装され、コードが異なるプラットフォームで実行されるようにします。具体的な実装には、次のものが含まれます。1。bytecodeへのコンパイル。 2。JVMの解釈と実行。 3。標準ライブラリの一貫性。ただし、JVMの実装の違い、オペレーティングシステムとハードウェアの違い、およびサードパーティライブラリの互換性は、プラットフォームの独立性に影響を与える可能性があります。

Javaは、「Write onse、Averywhere」を通じてプラットフォームの独立性を実現し、コードの保守性を向上させます。 2。メンテナンスコストが低いため、1つの変更のみが必要です。 3.チームのコラボレーション効率が高く、知識共有に便利です。

新しいプラットフォームでJVMを作成することに直面する主な課題には、ハードウェアの互換性、オペレーティングシステムの互換性、パフォーマンスの最適化が含まれます。 1。ハードウェア互換性:JVMがRISC-Vなどの新しいプラットフォームのプロセッサ命令セットを正しく使用できるようにする必要があります。 2。オペレーティングシステムの互換性:JVMは、Linuxなどの新しいプラットフォームのシステムAPIを正しく呼び出す必要があります。 3。パフォーマンスの最適化:パフォーマンステストとチューニングが必要であり、ガベージコレクション戦略が新しいプラットフォームのメモリ特性に適応するように調整されます。

javafxefcectivelyaddressessessistencisingisingidevidementsyusaplatform-agnosticscenegraphandcssstyling.1)itabstractsplatformspificsthroughascenegraph、Assuring-sunsinstentrenderingacrosswindows、macos、andlinux.2)

JVMは、Javaコードをマシンコードに変換し、リソースを管理することで機能します。 1)クラスの読み込み:.classファイルをメモリにロードします。 2)ランタイムデータ領域:メモリ領域を管理します。 3)実行エンジン:実行バイトコードを解釈またはコンパイルします。 4)ローカルメソッドインターフェイス:JNIを介してオペレーティングシステムと対話します。

JVMにより、Javaはプラットフォームを介して実行できます。 1)jvmは、bytecodeをロード、検証、実行します。 2)JVMの作業には、クラスの読み込み、バイトコード検証、解釈の実行、およびメモリ管理が含まれます。 3)JVMは、動的クラスの読み込みや反射などの高度な機能をサポートしています。

Javaアプリケーションは、次の手順を通じて異なるオペレーティングシステムで実行できます。1)ファイルまたはパスクラスを使用してファイルパスを処理します。 2)System.getEnv()を介して環境変数を設定および取得します。 3)MavenまたはGradleを使用して、依存関係を管理し、テストします。 Javaのクロスプラットフォーム機能は、JVMの抽象化レイヤーに依存していますが、特定のオペレーティングシステム固有の機能の手動処理が必要です。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ホットトピック









