서문: 2학년에 의해 고안된 과정입니다(또는 학생 관리 시스템...). 이론적으로는 4명이 그룹으로 진행하지만 이 점을 주의해 주세요. 하지만", 또는 모든 코드와 문서를 혼자서 책임졌다. 너무 긴장해서 처음에는 피를 토했다. 이후 웹 버전에서 일부 기능이 완성되지 않은 이유이기도 하다.
프로젝트는 JavaSwing으로 작성된 GUI 데스크톱 애플리케이션과 반제품 웹 애플리케이션으로 나누어집니다. 다음 그림은 프로젝트의 전체 기능 구조를 보여줍니다.
JavaSwing은 MyBatis + Spring 프레임워크는 여기에 결합한 후에 Spring 프레임워크를 사용하는 것이 Swing으로 개발된 프로그램에서 실수인 것 같다는 것을 나중에 발견했습니다.
또한 JavaSwing 버전에는 알려지지 않은 일부 논리적 버그가 있을 수 있습니다.
1. 로그인 모듈
2. 시스템 설정 모듈
3.학생 추가
학생 목록
4.수업관리 모듈
수업 추가
수업 관리
5, 성적 관리
성적 통계
6, 웹 버전
클릭하면 브라우저
http://localhost:8080 网址
로 이동합니다.
지침
프로젝트를 시작할 때 뷰 패키지에서 LoginFrm을 실행하세요
Spring을 종속성 주입에 사용할 때 발생하는 문제입니다. 문제
at com.view.LoginFrm$2.actionPerformed(LoginFrm.java :96)
바이두에서 오랫동안 검색해봐도 문제를 찾을 수 없었습니다. Spring 구성 파일을 잘못 작성했거나 @Service 주석을 추가하지 않은 문제를 배제한 후 인터넷에서 설명을 찾았습니다. 멀티스레딩에서 @Autowired를 사용하면 빈을 얻을 수 없습니다.
이유는 새 스레드가 Spring 컨테이너에 없기 때문에 Spring의 Bean 객체를 얻을 수 없기 때문입니다.
JavaSwing은 프로젝트의 일부 위치가 다중 스레드이고 많은 UI 스레드가 실행되고 있습니다. 따라서 스레드에서 Spring을 사용하는 주입은 Spring에 의해 관리되는 스레드가 아니기 때문에 실패합니다
그리고 Spring은 다중 스레드 상황에서 종속성을 주입하는 데 주석을 사용하는 것을 허용하지 않으므로 수동으로 Bean 객체만 가져올 수 있습니다. 우리가 원하는 코드는 다음과 같습니다.
private final ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); private final AdminService adminService = (AdminServiceImpl)context.getBean("AdminServiceImpl");
사실 스레드 풀을 구성하여 관리할 수도 있지만 저는 Swing에 익숙하지 않고 실행할 때 스레드가 몇 개 있는지 모릅니다.
이 문제는 처음에는 예상하지 못한 문제였습니다. 내가 이 사실을 알았더라면 Spring on Swing을 사용하지 않았을 것입니다. 각 뷰 레이어 클래스에 대한 종속성을 수동으로 얻어야 하기 때문에 훨씬 더 나쁩니다. MyBatis의 의존성을 직접 얻는 것에는 차이가 없지만 Spring을 사용하는 것이 더 번거롭습니다
HashMap을 결과 집합으로 사용하는 Mybatis의 문제
지정된 로그인을 찾는 메서드를 작성할 때, List @Results({ 그런데 형식 변환 오류가 나와서 쿼리 결과를 콘솔에 출력해 보니 결과는 이렇더군요 [{value=2018-05-17, key=1}, { 값= 2018-04-17, 키=1}, {값=2018-04-18, 키=1}, {값=2018-04-19, 키=3}, {값=2018-04-20, key= 1}, {value=2018-04-21, key=1}, {value=2018-05-03, key=1}] HashMap의 값이 JSON 문자열 형식에서 xxx로 변경되었습니다. =xxx 위의 결과 형태입니다. 왜 xml 파일을 사용하지 않는지 묻지 마세요. 당시에는 시간이 없어서 편의상 주석을 사용했습니다. 해결 방법: 위 결과 값을 다시 처리하여 HashMap Delete에 할당합니다. 외래 키와의 연결 데이터를 추출할 때 발생하는 문제 프로젝트의 서비스 계층에서 다음과 같은 오류를 보고합니다. 해결 방법: 데이터를 삭제하기 전에 다음과 같이 외래 키를 유효하지 않도록 설정하세요. 삭제 후 외래 키를 설정하세요. 다음과 같이 키가 유효해야 합니다. JavaWeb 앞서 언급했듯이 웹은 반제품이며 주로 로그인, 로그아웃, 비밀번호 변경, 학생 관리, 수업 관리, 점수 관리 및 점수 통계와 같은 기능 모듈을 포함합니다. 또한 사용하는 데이터베이스는 JavaSwing 버전과 동일하므로 이전 데이터는 실제로 상호 운용 가능합니다. 요약: 페이지가 조금 보기 흉하지만 지속적인 개발을 위한 템플릿으로 사용할 수 있습니다. 기능 표시 2. 학생 관리 학생 목록 학생 추가 3. 4. 통계 존중 说 지침 사용 DemoApplication 클래스에 직접 넣고 마우스 오른쪽 버튼을 클릭하여 DemoApplication 클래스를 시작합니다. JPA를 사용하여 데이터베이스를 업데이트할 때 발생하는 문제 Spring Data JPA를 사용하여 웹 측에서 지속성 계층 콘텐츠를 수행할 때 다음과 같은 오류가 발생했습니다. 업데이트/삭제 쿼리 실행
@Result(property = "key",column = "attendance_num",jdbcType = JdbcType.INTEGER),
@Result(property = "value",column = "attendance_date",jdbcType = JdbcType.VARCHAR )})
오류 메시지를 확인해보니 Dao 레이어에 문제가 있는 것으로 나타났습니다. . 이유를 분석한 결과, 외래 키 연결이 설정되어 있어 데이터가 삭제되지 않는 것으로 나타났습니다.
그런 다음 이때 삭제 문을 실행할 수 있습니다.
이렇게 하면 이 레코드가 완벽하게 삭제됩니다.
JavaWeb 여기에서는 SpringBoot + Spring Data JPA의 프레임워크 조합이 사용됩니다. 페이지는 데이터 표시를 위해 Thymeleaf를 사용합니다. 페이지에는 데이터 시각화를 위해 ECharts를 사용하는 통계 페이지가 있습니다.
1. 로그인 인터페이스
발생한 문제
위 내용은 Java로 구현된 학생관리 시스템의 사례를 분석한다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!