[자바졸업설계] javaEE+SSM+MySql 기반의 BS 아키텍처 마이크로블로그 시스템 설계 및 구현 (졸업논문 + 프로그램 소스코드) - BS 아키텍처 마이크로블로그 시스템

javaEE+SSM+MySql 기반의 BS 아키텍처 마이크로블로그 시스템 설계 및 구현 (대학원 논문 + 프로그램 소스코드)

안녕하세요 여러분, 오늘은 javaEE+SSM+MySql 기반의 BS 아키텍처 마이크로블로그 시스템의 설계 및 구현에 대해 소개하겠습니다 글 말미에 본 졸업 프로젝트의 논문 및 소스코드 다운로드 주소를 첨부합니다. 개강 보고서 PPT 템플릿, 논문 방어 PPT 템플릿 등을 다운로드해야 하는 친구들은 내 블로그 홈페이지에 들어가 왼쪽 하단 열에서 셀프 서비스 다운로드 방법을 확인할 수 있다.

기사 디렉토리:

1. 프로젝트 소개

  1. 정보 교환 및 공유 플랫폼으로서 Weibo는 정보화 시대에 특히 중요합니다.사람들은 마음대로 정보를 검색하고 게시하여 최신 최신 상담을 얻을 수 있으며 적시성과 높은 상호 작용으로 사람들 사이에서 인기를 얻고 있습니다. 네티즌들 사이에서 웨이보, 인터넷 연예인, 인터넷 핫워드 등 마이크로블로그 효과가 점차 형성되고 마이크로블로그 시스템은 B/S 구조를 채택하여 마이크로블로그 본연의 기능을 구현합니다. 사용자 경험을 개선하기 위한 기타 새로운 기능, 백그라운드 관리에서 Weibo 및 사용자의 포괄적인 관리 실현 구현 기술 측면에서 페이지는 JSP, javaScript, ajax 및 기타 기술을 사용하여 시스템 페이지와 사용자 간의 상호 작용을 개선합니다. 백그라운드에서 Java 언어, Tomcat 서버가 서버로 사용되며 SSM 프레임워크는 특정 기능을 구현하는 데 사용되며 Oracle 데이터베이스는 데이터베이스에 데이터를 저장하는 데 사용됩니다.
  2. B/S 아키텍처 기반 마이크로블로그 시스템의 주요 기능은 사용자 로그인 및 로그아웃, 사용자 정보 유지, 마이크로블로그 게시, 친구 관심, 질문 게시 등입니다. 시스템 구조는 다음과 같습니다.
    (1) 사용자 모듈:
    로그인 기능 실현
    , 사용자 로그인 종료 실현
    , 사용자 등록 실현
    , 등록된 사용자 정보 수정 실현
    (2) Weibo 모듈:
    게시, 수정 및 수정 기능 실현 Weibo 보기,
    Weibo 실현 운영 사용자는 Weibo에서 개인 Weibo, 친구 Weibo, 즐겨찾는 Weibo 및 좋아요, 재게시, 즐겨찾기, 댓글, 삭제 등 기타 정보를 볼 수 있습니다. (3) 친구 모듈: 사용자 관심, 팔로워 수 +1 ,

    + 1. 팔로우 해제, 사용자 차단, 개인 메시지 검색 사용자 등
    (4) Conch 모듈:
    질문 게시, 질문 답변, 포인트 증가 등 실현
    (5) 백그라운드 관리자 모듈
    관리자 로그인
    및 사용 표시줄 실현 Weibo, 사용자, 댓글, 소라, 댓글, 답변 등의 통계 결과를 표시하는 그래프 사용자
    검색, 사용자 금지
    Weibo 검색, Weibo 삭제
    Conch 검색, 소라 삭제

2. 리소스 세부정보

프로젝트 난이도: 중난이도 적용 시나리오: 졸업 디자인
관련 관련 논문
지원 단어 수: 28461 단어, 77
페이지 내용: 소스 코드 전체 세트 + 졸업 논문 완성 + 방어 PPT + 과제집 + 튜터링 영상 + 실행 스크린샷


3. 키워드:

Weibo, B/S 아키텍처, Java, SSM 프레임워크, Oracle,

4. 짧은 소개:

알림: 다음은 졸업 프로젝트에 대한 간략한 소개이며, 프로젝트의 소스 코드와 전체 졸업 논문의 다운로드 주소는 기사 끝에 있습니다.

소개
생략

그리고 Sina Weibo는 여전히 자신의 유명인 효과를 계속하고 있습니다. 일반 계정, 팬의 관심 없이는 다른 사람이 Weibo를 보기 어렵습니다. Weibo에서 도움을 요청해야 하는 경우 "연예인 빅 V"가 없습니다. 다른 사람들이 알아채기 어렵습니다. Weibo에서 도움을 받으려면 더 많은 서비스를 제공하기 위해 Weibo가 필요합니다. 그리고 이 시스템은 사용자가 포인트 보상 기능을 사용하여 자신의 질문에 보상할 수 있도록 하여 더 많은 사용자가 자신의 질문에 답하고 더 많은 사람들의 도움을 받을 수 있도록 합니다.

제2장 관련 기술 소개

2.1 아키텍처 개요
B/S 아키텍처(브라우저/서버, 브라우저/서버 모드): 브라우저를 클라이언트로 사용하는 네트워크 구조 모드이며 점차 성숙된 웹 브라우저 기술을 사용하고 브라우저의 다양한 기능을 결합하여 사용합니다. 브라우저는 이전 C/S(클라이언트/서브) 아키텍처에서 복잡한 클라이언트로, C/S 아키텍처를 사용하여 사용자 클라이언트를 통합하고, 소프트웨어 시스템의 핵심 기능을 서버에 집중하고, 시스템을 업그레이드하고 유지 관리가 더 간단합니다. . 개발자는 소프트웨어 시스템을 업데이트하고 유지하기 위해 서버를 관리하기만 하면 됩니다. B/S 아키텍처가 제공하는 많은 이점은 향후 정보화 발전의 주류 방향입니다.

MVC 모드: 모델(Model), 뷰(View), 컨트롤러(Controller)는 소프트웨어 개발을 위한 디자인 패턴으로, 분리된 비즈니스 로직의 데이터 상호작용을 주로 담당하는 모델, 데이터 제출 및 표시를 담당하는 뷰, 컨트롤러 주로 요청 획득 및 요청 전달을 담당합니다.

SSM 프레임워크(SpringMVC+Spring+Mybatis): 이 3가지 오픈소스 프레임워크로 구성된 웹 프로젝트의 프레임워크는 표준 MVC 모델 Spring MVC는 요청 전달 및 뷰 관리를 담당 Spring은 비즈니스 객체 관리 및 트랜잭션 제어 구현 Mybatis는 서비스 Persistence 엔진으로 이전에 널리 사용되었던 SSH(Struts+Spring+Hibernate) 프레임워크와 비교하여 경량 프레임워크인 SSM은 중소형 프로젝트 개발에 더 적합합니다.

2.2 주요 기술 소개
프론트 엔드 기술:
1. JSP(Java Server Pages): <% %> 형식을 사용하여 htmld 구문에서 Java 코드의 확장을 구현하는 본질적으로 서블릿인 Java 코드가 내장된 HTML 페이지 .

2. JavaScript: 세 부분으로 구성된 약형 스크립팅 언어입니다. ECMAScript는 JavaScript, DOM(문서 개체 모델) 및 BOM(브라우저 개체 모델)의 기본 개체 및 구문을 설명합니다.

3. Ajax(비동기 자바스크립트 및 XML): 비동기 자바스크립트 및 XML, 전면과 후면 간의 비동기 상호 작용을 실현하고 전체 페이지를 다시 로드하지 않고 페이지의 일부 콘텐츠를 부분적으로 새로 고칩니다.

배경 기술:
1.java: 개체 지향 프로그래밍 언어, 주요 기능은 다음과 같습니다. (1) 단순성: C++에서 포인터의 복잡한 구문과 다중 상속을 버리고 개발자는 기본 최적화에 주의를 기울일 필요가 없으며 필요한 사항만 있으면 됩니다. (2) 객체 지향, 프로그래머는 해당 데이터와 데이터 처리 방법에만 주의하면 되며 프로세스에 따라 엄격하게 코드를 작성할 필요가 없습니다. Java 언어는 객체 지향이기 때문에 객체 지향, 상속, 캡슐화 및 다형성의 세 가지 주요 특성을 가지고 있습니다. (3) 크로스 플랫폼, Java 언어의 크로스 플랫폼은 크로스 플랫폼이기도 합니다. JVM(자바 가상 머신)의 Java 파일을 컴파일한 후 머신이 직접 실행하는 바이너리 파일을 직접 생성하는 것이 아니라 클래스 파일로 컴파일하여 JVM이 서로 다른 운영체제에서 JVM에 따라 해당 시스템의 바이너리 파일을 생성하게 된다. 한 번만 컴파일하면 되며 다른 플랫폼에서 실행할 수 있습니다.

2. SpringMVC: Spring 프레임워크에서 제공하는 모듈로 MVC 패턴을 구현하여 데이터, 비즈니스, 프리젠테이션을 분리하여 웹 개발을 간소화합니다. 다른 MVC 프레임워크와 마찬가지로 요청 기반이며 포워딩을 제어합니다.핵심 Servlet은 프론트 컨트롤러인 DispatcherServlet으로 요청을 컨트롤러에 분배하는 데 사용되며 Spring 프레임워크와 완전히 통합됩니다. 이는 또한 SpringMVC를 매우 인기 있는 MVC 프레임워크로 만듭니다.

3. Spring: 경량 Java 개발 프레임워크인 Spring 프레임워크에는 계층화된 아키텍처가 있으므로 Spring의 모든 독립적인 부분을 사용할 수 있습니다. 그리고 그 아키텍처는 여전히 본질적으로 안정적입니다.Spring은 3계층 아키텍처의 각 계층을 통해 실행되는 J2EE 응용 프로그램의 각 계층에 대한 솔루션을 제공하지만 Spring은 여전히 ​​다른 프레임워크와 매우 호환됩니다.이 프로젝트는 주로 Spring에서 IOC(Inversion of Control) 및 AOP(Aspect-Oriented Programming) 모듈.

4. Mybatis: Java 지속성 계층을 단순화하는 경량 오픈 소스 프레임워크입니다. 그리고 애노테이션 매퍼를 지원하여 대부분의 JDBC 코드를 제거하여 Java 개체를 데이터베이스에 유지하는 프로세스를 더 쉽게 만듭니다.다른 Java 지속성 프레임워크와 비교할 때 Mybatis는 많은 JDBC 중복을 제거하는 이점이 있습니다.나머지 코드 , 배우기 쉽고 가시적인 Sql 문은 Spring과의 통합을 제공하고 더 나은 성능을 제공합니다.

2.3 개발 도구
Tomcat 서버: 웹 응용 프로그램 서버이며 가볍고 오픈 소스이며 중소 규모의 웹 프로젝트 및 개발, 디버깅 및 학습을 위한 첫 번째 선택입니다.

Oracle Database(Oracle Database): Oracle Corporation에서 개발한 관계형 데이터베이스로 상용 애플리케이션을 위한 최초의 관계형 데이터베이스입니다. 시스템은 사용하기 쉽고 강력하며 이식성이 뛰어납니다. 다양한 대형, 중형 및 소형 환경에 적합하며 빅 데이터 시대에 분산 데이터베이스로서 완벽한 데이터 관리 기능, 완벽한 관계형 데이터베이스 및 분산 처리 기능을 갖춘 분산 처리 기능을 구현합니다.

Eclipse 개발 도구: Java 통합 개발 환경뿐만 아니라 플러그인 개발을 위한 SVN, CVS 및 기타 팀과 같은 플러그인 개발 환경을 포함하는 Java 오픈 소스 기반의 확장 가능한 개발 플랫폼입니다.

2.4 이 장의 요약
이 장에서는 주로 개발 프로젝트에 사용된 몇 가지 주요 기술, 프로젝트에 사용된 아키텍처 및 디자인 패턴, 프로젝트에 사용된 주요 프레임워크 기술, 브라우저 측의 프로젝트 표시, 백그라운드 코드에서 사용하는 개발 언어, 사용하는 서버 기술, 데이터 지속성 계층에서 사용하는 데이터베이스 등, 개발에 사용하는 개발 도구는 이 장의 끝에서 소개합니다.

3장 시스템 요구 사항 분석

3.1 타당성 분석
3.1.1 기술적 타당성
기존 기술 측면에서 클라이언트를 통합하고 버전 업그레이드 및 유지 관리로 인한 복잡성을 제거하기 위해 프로젝트 구현에 성숙한 B/S 아키텍처를 채택하는 것이 완전히 가능합니다. 개발 언어 및 프레임워크 측면에서 강력한 Java 및 j2ee 시스템을 통해 개발자는 웹 프로젝트를 신중하게 구축할 수 있으며 일련의 오픈 소스 프레임워크는 프로젝트 실행 가능성에 대한 강력한 기반을 제공합니다.서버 측면에서 오픈 소스는 서버 Tomcat은 이 작은 프로젝트의 정상적인 사용을 지원하기에 충분하며, 지속적으로 발전하는 프론트엔드 기술과 프론트엔드 프레임워크는 아름다운 프론트엔드 페이지를 만들고 사용자 경험과 상호작용을 향상시킬 수 있습니다. 프로젝트의 페이지 표시 기술 강력한 관계형 데이터베이스는 프로젝트 데이터의 지속성이 강력한 지원을 제공합니다. 요약하자면, 점점 성숙해지는 Java 및 j2ee 시스템, 완전 오픈 소스 Java 프레임워크 및 서버, 강력한 관계형 데이터베이스, 사용자 상호 작용 페이지를 제공하는 웹 프런트 엔드 기술의 사용으로 프로젝트가 기술적으로 실현 가능합니다.

3.1.2 경제성
생략

3.1.3 운영 타당성
생략

3.2 요구 사항 분석
3.2.1 전체 시스템 요구 사항
Weibo 시스템은 주로 프런트엔드 사용자 모듈과 백그라운드 관리 모듈로 구성되며 사용자가 홈페이지에 들어갈 때 로그인 여부를 선택할 수 있습니다. 기존 계정으로 로그인하거나 새 계정을 등록할 수 있습니다. 사용자가 로그인하지 않은 경우 홈페이지에 최근 업데이트된 인기 Weibo가 표시되고, 로그인한 사용자는 홈페이지에서 자신이 팔로우하는 사용자의 최근 업데이트된 Weibo를 볼 수 있습니다.

비로그인 사용자는 Weibo 정보 검색 및 열람, 사용자 홈페이지 방문만 가능 로그인 사용자는 시스템 로그인 후 서명, 성별 등의 기본 정보 수정이 가능하며, 비밀번호 및 개인정보 수정도 가능 사용자 정보를 확인한 후 사용자 아바타와 암호를 수정하고 자신의 개인 홈페이지를 편집할 수 있을 뿐만 아니라 Weibo의 좋아요, 댓글, 북마크 및 기타 기능을 편집할 수 있으며 사용자 팔로우/언팔로우, 사용자 차단, 비공개 채팅 사용자 및 기타 작업을 수행할 수도 있습니다.

백그라운드 관리자는 사용자, 마이크로블로그, 댓글, 소라, 전체 답변 수, 최신 데이터베이스, 지난주 데이터 양 등 시스템의 모든 데이터를 볼 수 있습니다. 구체적인 기능으로는 불량 Weibo 정보 및 불량 계정 관리, Weibo, Weibo 댓글, conch, 답변 및 기타 정보 삭제 및 복원, 불량 계정 차단이 있습니다.

마이크로블로그 검색 모듈: 사용자는 키워드를 입력하여 해당 마이크로블로그 또는 사용자를 찾을 수 있습니다.
마이크로블로그 퍼블리싱 모듈 : 사용자가 포스팅을 클릭하고 컨텐츠에 보내고 싶은 내용을 추가 이모티콘을 선택하거나 그림을 삽입할 수 있으나 입력하는 글자수에 ​​제한이 있으며, 동시에 그림.

Weibo 댓글 모듈에서 사용자는 Weibo 댓글을 보고 Weibo 댓글을 게시할 수 있습니다.

Magic Conch 모듈: 사용자가 제기한 다양한 질문을 기록하는 데 주로 사용되는 Magic Conch를 게시하고 다른 사용자가 질문을 보고 답변할 수 있습니다. conch 포인트, conch 포인트마다 conch 제목이 다릅니다.

포인트 모듈: 사용자는 매일 로그인, Weibo 게시, 작업 수행 등을 통해 포인트를 늘릴 수 있습니다.

친구 모듈: 사용자는 시스템에서 다른 사용자를 보고 좋아하는 사용자를 찾아 팔로우할 수 있습니다.팔로우한 후 친구 모듈에서 팔로우하는 사용자와 최근 Weibo 및 친구가 공개한 기타 정보를 볼 수 있습니다.그들은 친구에게 비공개 메시지를 보낼 수도 있고, 친구에게 비공개 메시지를 보낼 수도 있습니다.

3.2.2 Use Case Diagram 요구사항
1. 사용자는 시스템에 접속할 때 로그인 또는 사용자 등록을 선택할 수 있으며 비밀번호를 잊은 경우 보안 질문을 통해 비밀번호를 재설정할 수 있습니다.
여기에 이미지 설명 삽입

그림 3.1 사용자 초기 사용 사례 다이어그램

2. 이용자는 로그인 후 이용자의 기본 개인정보 관리, 이용자 기본정보 수정, 이용자 비밀정보 수정 등을 할 수 있습니다. 사용자 아바타 및 기타 기능을 수정합니다.
여기에 이미지 설명 삽입

그림 3.2 사용자 정보 관리 사용 사례 다이어그램

3. 사용자 마이크로블로그 관리 시스템, 사용자가 시스템에 로그인하면 홈페이지에 마이크로블로그를 게시할 수 있으며 키워드를 통해 마이크로블로그 콘텐츠에서 키워드의 마이크로블로그 정보를 검색할 수 있습니다. 개인 Weibo 보기, 친구 Weibo 보기, 추천 Weibo 보기를 포함한 Weibo 보기.
여기에 이미지 설명 삽입

그림 3.3 Weibo 관리 사용 사례 다이어그램

4. 댓글 관리, 댓글 관리는 Weibo 모듈에 따라 다르며 사용자는 Weibo에서 댓글을 보고 Weibo 정보에 댓글을 게시하고 자신의 댓글을 삭제할 수 있습니다.
여기에 이미지 설명 삽입

그림 3.4 Weibo 댓글 관리 사용 사례 다이어그램

5. 소라 관리 사용자는 로그인 후 소라 모듈에 소라 질문을 게시할 수 있습니다. 승인되면 사용자가 보상한 포인트 수를 얻을 수 있습니다.
여기에 이미지 설명 삽입

그림 3.5 Conch 관리 사용 사례 다이어그램

6. 친구 관리, 사용자가 로그인하면 시스템을 따라 친구를 추천하거나 사용자를 검색하고, 사용자의 홈페이지를 보고, 사용자를 추가 또는 팔로우 해제하고, 사용자에게 개인 메시지를 보내거나, 사용자를 차단할 수 있습니다.
여기에 이미지 설명 삽입

그림 3.6 친구 관리 사용 사례 다이어그램

7. 메시지 알림, 사용자가 관심을 기울이고 웨이보 댓글, 좋아요, 즐겨찾기를 하면 메시지 알림이 호출됩니다.
여기에 이미지 설명 삽입

그림 3.7 친구 관리 사용 사례 다이어그램

8. 관리자: 관리자는 시스템에 로그인하여 웨이보 사용자를 관리하고 불량 사용자 계정을 금지 및 취소하고 사용자 상태를 복원할 수 있으며 동시에 관리자는 웨이보 삭제, 삭제 복원과 같은 웨이보 정보를 관리할 수 있습니다. 그림 3.2와 같이 관리자 등에 의해 삭제된 마이크로블로그 댓글을 복구합니다.
여기에 이미지 설명 삽입

그림 3.8 관리자 사용 사례 다이어그램

Chapter 4 시스템 기능 설계
4.1 시스템 클래스 분석
4.1.1 엔티티 클래스
엔티티 클래스는 주로 User, Friend, PointAction, PointRecord, Weibo, WeiboCollect, WeiboComm, WeiboLike, WeiboTrans 등을 포함하여 주로 데이터를 전송하는 데 사용됩니다. 사용자 클래스에는 사용자 기본이 포함됩니다. 정보, Weibo 카테고리에는 Weibo의 기본 정보가 포함되며 엔티티 사용자 카테고리도 포함되며 친구 카테고리에는 친구 번호, 친구 생성 시간 및 양 당사자의 사용자 카테고리 등이 포함됩니다. 마이크로 블로그 수집 클래스에는 다음과 같은 수집 속성이 포함됩니다. 즐겨찾는 마이크로블로그 클래스 및 사용자 ID, 마이크로블로그 댓글 클래스에는 마이크로블로그 클래스, 사용자 클래스 및 댓글 내용과 같은 속성이 포함되며 마이크로블로그 전달 클래스에는 사용자 클래스, 마이크로블로그 클래스 및 전달 시간과 같은 속성이 포함됩니다. Weibo like 카테고리에는 다음이 포함됩니다. Weibo 카테고리, 사용자 카테고리 및 좋아요 시간과 같은 속성. 엔터티 클래스 간의 클래스 연관 관계는 그림 4.1에 나와 있습니다.
여기에 이미지 설명 삽입

그림 4.1 빈 계층 클래스 다이어그램

4.1.2 컨트롤러 클래스는
컨트롤러 계층에 4개의 JAVA 클래스 MainController, WeiboController, FrendController, AdminController를 포함하며 SpringMVC 프레임워크에서 주로 브라우저가 서버로 보낸 요청을 수신하고 데이터를 처리하고 제어하는 ​​데 사용됩니다. 요청 전달 획득한 데이터는 브라우저에 응답됩니다. MainController는 주로 사용자 관련 페이지에서 제출된 양식 또는 링크 요청을 수신하고 컨트롤러의 해당 메서드에 요청된 매개 변수를 전달하고 데이터 응답을 브라우저에 전달하고 데이터, 특정 속성 및 메서드를 브라우저에 표시하는 데 주로 사용됩니다. 측면 그림 4.2와 같습니다.
여기에 이미지 설명 삽입

그림 4.2 사용자 컨트롤러 클래스 다이어그램

WeiboController는 주로 관련 Weibo 페이지에서 제출된 양식 또는 링크 요청을 수신하고, 컨트롤러의 해당 메서드에 요청된 매개 변수를 전달하고, 비즈니스 처리 계층에서 반환된 데이터를 획득하고, 데이터를 표시하기 위해 브라우저에 데이터 응답을 보내는 데 사용됩니다. 브라우저 쪽에서 특정 속성과 메서드는 그림 4.3에 나와 있습니다.
여기에 이미지 설명 삽입

그림 4.3 Weibo 컨트롤러 클래스 다이어그램

FriendController는 주로 친구 관련 페이지에서 제출된 양식 또는 링크 요청을 수신하고 요청된 매개 변수를 Controller의 해당 메서드에 전달하고 비즈니스 처리 계층에서 반환된 데이터를 가져오고 데이터 응답을 브라우저에 전달하는 데 주로 사용됩니다. 브라우저 측에 데이터를 표시하기 위한 특정 속성 및 메서드는 그림 4.4에 나와 있습니다.
여기에 이미지 설명 삽입

그림 4.4 친구 컨트롤러 클래스 다이어그램

AdminController는 주로 관리자의 관련 페이지에서 제출된 양식 또는 링크 요청을 수신하고 컨트롤러의 해당 메서드에 요청된 매개 변수를 전달하고 비즈니스 처리 계층에서 반환된 데이터를 얻고 브라우저에 데이터 응답을 전달하는 데 사용됩니다. 브라우저는 브라우저 측에 데이터를 표시합니다.특정 속성 및 메서드는 그림 4.5에 나와 있습니다.
여기에 이미지 설명 삽입

그림 4.5 관리 컨트롤러 클래스 다이어그램

4.1.3 비즈니스 로직 클래스
서비스 계층은 그림 4.6과 같이 사용자 등록, 로그인 및 개인 정보 수정과 같은 사용자 비즈니스를 처리하는 데 사용되는 IUserService를 포함하여 주로 4개의 서비스 인터페이스와 구현 클래스를 포함합니다. IWeiboService는 그림 4.7과 같이 Weibo 검색, Weibo 게시, Weibo 삭제 및 좋아요 및 댓글과 같은 Weibo 관련 작업과 같은 Weibo 관련 비즈니스를 처리하는 데 사용됩니다. IFriendService는 그림 4.8과 같이 좋아요, 좋아요 취소, 개인 메시지, 블랙리스트 및 기타 기능과 같은 사용자 친구와 관련된 업무를 처리하는 데 사용됩니다. IAdmoinService는 그림 4.8과 같이 관리자 로그인, 차트 표시, 사용자 관리, Weibo 관리 및 conch 관리 기능과 같은 관리자와 관련된 업무를 처리하는 데 사용됩니다.
여기에 이미지 설명 삽입

그림 4.6 사용자 비즈니스 처리 클래스 다이어그램

여기에 이미지 설명 삽입

그림 4.7 Weibo 비즈니스 처리 클래스 다이어그램
여기에 이미지 설명 삽입

그림 4.8 Weibo 컨트롤러 클래스 다이어그램

4.1.4 데이터베이스 상호 작용 클래스
시스템이 MyBatis 지속성 프레임워크를 채택하기 때문에 개발자는 데이터베이스와 데이터베이스 간의 특정 JDBC 코드에 주의를 기울일 필요가 없고 비즈니스 로직만 처리하면 되므로 내부에서 메서드를 선언하기만 하면 됩니다. 작성하지 않고 Dao 레이어 인터페이스 인터페이스의 구현 클래스는 해당 구성 파일을 구성하여 메서드를 구현하고 구성 파일의 해당 인터페이스 메서드에 SQL 문을 작성하여 데이터베이스와 상호 작용합니다.

4.2 핵심 사업 설계
4.2.1 로그인 시스템
여기에 이미지 설명 삽입

그림 4.9 시스템 로그인 시퀀스 다이어그램

사용자는 홈페이지에 접속한 후 왼쪽에서 등록된 사용자를 선택하거나 오른쪽에서 시스템에 로그인할 수 있습니다 등록 모듈에서 사용자는 사용자의 이메일 주소, 비밀번호, 닉네임 및 기타 정보를 입력합니다. 이메일 주소를 입력하면 사용자가 입력한 이메일 주소가 Ajax를 통해 백그라운드로 전송됩니다. 사용자의 이메일 주소가 등록되어 있는지 확인하십시오. 등록되어 있으면 이메일 주소가 등록된 페이지에서 사용자에게 메시지가 표시됩니다. 기본 정보를 입력하고 등록을 클릭하면 사용자 등록 정보가 저장됩니다.

로그인 기능은 사용자가 이메일 주소와 비밀번호를 입력하면 사용자가 다음 자동 로그인 비밀번호를 클릭하면 로그인을 클릭한 후 사용자의 현재 로그인 시간과 마지막 로그인 시간이 같은 날인지 판단하고 그렇지 않은 경우 , 사용자 포인트의 로그인 시간을 추가한 다음 Weibo 홈페이지로 이동합니다.

4.2.1 이용자 정보시스템
여기에 이미지 설명 삽입

그림 4.10 사용자 수정 정보 시퀀스 다이어그램

사용자 기본 정보: 시스템 홈페이지에서 개인 계정 설정을 클릭하면 사용자 기본 정보 수정 페이지로 이동하여 사용자가 이러한 기본 정보를 수정하고 수정된 정보를 데이터베이스에 저장할 수 있습니다.

비밀번호 변경: 사용자 프로필 페이지에서 비밀번호 변경을 클릭하고 비밀번호 변경 페이지로 이동합니다. 사용자는 사용자의 현재 비밀번호를 입력할 수 있습니다. 시스템은 비밀번호가 올바른지 판단합니다. - 비밀번호 오류, 비밀번호가 올바르면 사용자는 새 비밀번호를 입력하고 수정을 클릭하여 수정된 비밀번호를 데이터베이스에 업데이트할 수 있습니다.

사용자 아바타 수정 : 클릭 시 사용자 프로필의 아바타 수정, 아바타 수정 페이지로 이동, 사용자가 아바타 파일 선택 후 업로드 클릭 시 사용자 아바타가 서버에 저장되며 사용자의 이전 아바타로 판단됩니다. 아바타는 시스템의 기본 아바타이며 그렇지 않은 경우 사용자를 삭제합니다. 이전 아바타 사진의 경우 수정을 클릭하여 수정된 아바타 주소를 데이터베이스에 저장합니다.

암호 수정: 사용자는 먼저 이전에 설정한 보안 질문에 따라 답을 입력해야 합니다. 보안 답변이 틀리면 보안 답변이 틀렸다는 메시지가 표시됩니다. 보안 답변이 맞으면 입력할 수 있습니다. 새 보안 질문 및 보안 답변 수정을 클릭하여 사용자의 새 보안 질문 및 답변을 저장합니다.

4.2.2 웨이보 모듈
여기에 이미지 설명 삽입

그림 4.11 시스템 로그인 시퀀스 다이어그램

Publish Weibo: 사용자는 홈페이지에 Weibo를 게시하거나 Weibo 정보에 이모티콘을 삽입하거나 사진 삽입을 선택할 수 있습니다. 사용자가 게시를 클릭하면 브라우저가 첫 페이지에 Weibo 정보 및 사진 정보를 업로드하라는 요청을 전송합니다. 통과 백그라운드 컨트롤러에 연결하고, 사진 정보를 서버에 저장하고, 사진 경로만 데이터베이스에 저장하고, 최종적으로 Weibo 정보를 데이터베이스에 저장합니다.

Weibo 검색: 사용자는 홈페이지의 검색 상자에 Weibo에 언급된 내용을 입력하여 검색할 수 있으며, 시스템은 퍼지 쿼리를 통해 데이터베이스의 관련 Weibo 정보를 쿼리합니다. 검색된 페이지를 페이지에 표시하고 키워드를 빨간색으로 표시합니다.

Weibo 작업: 사용자는 Weibo에서 개인 Weibo, 친구 Weibo, 즐겨찾는 Weibo 및 기타 정보(좋아요, 재게시, 즐겨찾기, 댓글, 삭제 등)를 볼 수 있습니다.

4.2.3 친구 모듈
팔로우 기능: 사용자가 시스템에 로그인하면 페이지 오른쪽의 추천 사용자 중에서 팔로우할 사용자를 선택하거나 페이지의 검색 기능을 통해 사용자를 검색하고 팔로우할 수 있습니다. 검색된 사용자. 사용자를 팔로우하면 개인 관심도가 +1되고, 팔로우한 사용자의 팬 수가 +1됩니다.

팔로우 해제: 팔로우 기능 유형, 내비게이션 바에서 내 친구 클릭, 내 친구 홈페이지에서 내 친구 확인, 클릭하면 내가 팔로우하는 모든 친구, 친구 수 및 개인 정보를 확인할 수 있습니다. 해당 언 팔로우는 언 팔로우 할 수 있습니다. 사용자를 언팔로우한 후 개인 팔로워 수는 -1이고, 팔로우한 사용자의 팔로워 수는 -1입니다.

차단 사용자: 즉, 친구 테이블에서 해당 기록 상태를 수정하고 차단된 사용자가 게시한 개인 메시지 및 Weibo 정보는 차단된 사용자에게 표시되지 않습니다.

개인 메시지: 페이지의 추천 사용자에서 현재 로그인한 사용자의 읽지 않은 개인 메시지 수를 볼 수 있습니다.읽지 않은 개인 메시지 수는 현재 로그인한 모든 수신자의 모든 개인 메시지에 대해 데이터베이스를 통과합니다. 정보 상태는 읽지 않음이며 획득한 값은 첫 페이지에 표시됩니다.

쪽지 보내기: 먼저 보낼 쪽지 선택 후 보낼 쪽지 정보를 입력하고 쪽지 내용에 이모티콘을 삽입할 수 있으며, 보내기를 클릭하면 해당 사용자에게 쪽지 정보가 전송됩니다. 동시에 사용자에게 메시지를 표시하는 읽지 않은 개인 메시지의 수를 늘리십시오.

사용자 검색: 사용자 검색 페이지에서 사용자는 사용자 닉네임의 키워드를 입력하여 관련 사용자를 모호하게 검색하고 쿼리된 사용자를 페이지에 표시하고 사용자가 입력한 키워드를 빨간색으로 표시할 수 있습니다.

사용자 홈페이지: 페이지에서 사용자의 이름이나 프로필 사진을 클릭하면 해당 사용자의 개인 홈페이지로 이동합니다.사용자의 개인 홈페이지에는 사용자의 개인 정보와 사용자의 최근 Weibo가 역순으로 표시되며 사용자는 또한 다음을 수행할 수 있습니다. Weibo 좋아요, 전달, 댓글 및 즐겨찾기를 운영합니다.

4.2.4 Conch 모듈
게시: 사용자는 탐색 모음에서 Magic Conch를 클릭하여 Conch 홈페이지로 들어갑니다 Conch 페이지 상단에는 Conch 게시를 위한 질문 상자와 아래에 삽입할 수 있는 이모티콘 버튼 및 보상 포인트가 있습니다. 질문에 대한, 그리고 중간에 탐색 모음 최신 릴리스, 해결, 해결, 내 소라 다른 필터 조건을 보도록 선택할 수 있습니다.

Conch 질문 보기: 사용자가 Conch 질문을 클릭하면 시스템은 Conch의 특정 정보를 표시하는 페이지로 이동합니다. 사용자 이름, 사용자 이름, 릴리스 날짜, Conch 질문, 보상 포인트, 질문 상태 등 글을 올린 사용자가 상단에 표시되고 가운데에 표시됩니다. 질문에 대한 모든 응답 정보, 응답자의 이름, 제목, 응답 내용, 응답 날짜, 수락 여부 등이 표시됩니다.

콘크 질문 답변 : 콘크 질문 상세 정보 페이지 하단에서 콘크 질문에 답변하고, 입력란에 답글 답을 입력하고, 이모티콘 정보 등을 입력하고, 답글을 클릭하여 답글 정보를 데이터베이스에 저장할 수 있습니다.

질문에 대한 답변 수락: Conch Questions 홈페이지에서 My Conch Questions를 클릭하면 사용자가 게시한 Conch Questions 페이지로 이동할 수 있습니다. 수락을 클릭한 후 소라의 상태를 수정하면 수락된 답변이 수락된 답변이 되고 채택자의 소라 포인트가 증가합니다.

4.2.5 백그라운드 관리자 모듈
관리자 로그인: 관리자는 로그인 페이지에서 관리자 로그인을 클릭하여 관리자 로그인 페이지로 이동할 수 있습니다. 관리자가 계정 정보와 암호 정보를 입력한 후 사용자 이름과 암호가 맞으면 관리자 홈 페이지로 이동합니다. 잘못된 경우 프롬프트합니다.

관리자 홈페이지: 관리자 홈페이지 상단에 내비게이션 바가 표시되며, 페이지 내용은 웨이보, 사용자, 댓글, 소라, 댓글, 답변 등 총 4개의 차트를 사용하여 조회수를 표시합니다. 아래 막대 차트는 오늘부터 지난 7일의 숫자를 표시합니다.

사용자 관리 홈페이지 : 페이지 상단에 내비게이션 바를 표시하며, 페이지 내용에는 모든 사용자 ID, 이메일 주소, 닉네임, 등록일, 마지막 로그인일, 사용자 상태가 표시됩니다. 검색, 10개의 사용자 데이터를 한번에 페이지에 표시함과 동시에 사용자 검색 기능 추가 사용자 닉네임 키워드 입력 후 사용자 검색 가능, 모호한 쿼리 지원 사용자 검색: 사용자 관리 페이지에서 사용자 닉네임의 키워드를 입력하여 사용자를 검색하면 획득한 사용자 정보 중 닉네임이 입력된 키워드인 부분이 빨간색으로 표시됩니다.

사용자 차단: 관리자는 사용자 관리 페이지의 작업 열에서 차단 버튼을 클릭하여 위반 사용자를 차단할 수 있습니다. 관리자는 차단 일수를 입력할 수 있습니다. 이 날짜 이전에는 사용자가 정상적으로 로그인할 수 없으며, 관리자는 차단 해제를 클릭하여 사용자를 미리 차단 해제할 수 있습니다.

Weibo 관리 홈 페이지: 관리자가 탐색 모음에서 Weibo 관리를 클릭하면 시스템이 사용자 Weibo 관리 페이지로 이동하여 시스템에서 사용되는 Weibo 정보를 표시하고 관리자는 Weibo 콘텐츠 검색 Weibo에 키워드를 입력할 수 있으며 동시에 , 잘못된 정보로 Weibo를 삭제하거나 삭제된 Weibo를 복원할 수 있습니다.

마이크로블로그 검색: 관리자는 마이크로블로그 콘텐츠에 키워드를 입력하여 마이크로블로그 콘텐츠의 키워드로 마이크로블로그를 검색할 수 있으며, 검색된 마이크로블로그 콘텐츠의 키워드는 빨간색으로 표시됩니다.

Weibo 삭제: Weibo 관리 페이지에서 Weibo의 내용에 따라 관리자가 Weibo의 불법 여부를 판단할 수 있으며, Weibo 정보에 잘못된 정보가 포함된 경우 관리자는 작업 표시줄의 삭제 버튼을 통해 Weibo를 삭제할 수 있습니다. . 삭제된 마이크로블로그도 복원할 수 있습니다.

소라 관리 홈페이지 : 관리자가 내비게이션 바에서 소라 관리를 클릭하여 소라 관리 페이지로 이동합니다.네비게이션 바는 페이지 상단에 있으며 페이지 내용은 모든 소라 정보, 소라 검색창, 페이지 매김 상자를 표시합니다. 아래에 conch 정보에는 번호, 게시자 이름, conch에 대한 정보, 게시 날짜, conch 상태 및 수행할 수 있는 작업이 포함됩니다.

소라 검색 : 소라관리 홈페이지에서 소라의 수가 많은 것을 고려하여 문제점을 찾기 어려우므로 검색 기능을 설정해 놓았으며, 관리자는 소라 검색창에 소라 내용에 키워드를 입력하여 검색 가능 소라 문제에 대한 디스플레이 검색 결과가 나오면 검색어를 빨간색으로 표시하여 쉽게 볼 수 있습니다.

4.3 데이터베이스 설계
4.3.1 개요
Microblog 시스템 데이터베이스 테이블에는 주로 다음이 포함됩니다.
1. 사용자 테이블: 번호, 닉네임, 이름, 비밀번호와 같은 사용자 개인 정보를 저장하는 데 사용됩니다. 사서함 및 기타 정보의 경우 표 4-1과 같이 사용자 번호를 기본 키로 사용합니다.

2. 마이크로블로그 팔로워 테이블: 표 4-2와 같이 팔로워 ID를 기본 키로 하여 사용자의 팔로워 정보를 저장하는 데 사용됩니다.

3. Weibo 테이블: 표 4-3과 같이 Weibo 번호를 기본 키로 사용하여 Weibo 릴리스 시간, Weibo 콘텐츠, Weibo 좋아요, 리트윗, 즐겨찾기 수 등과 같은 Weibo 정보를 저장하는 데 사용됩니다.

4. 마이크로블로그 수집 테이블 : 표 4-4와 같이 마이크로블로그 번호, 수집시간 등 사용자가 수집한 마이크로블로그 정보를 수집번호를 기본키로 저장하기 위해 사용합니다.

5. 댓글 테이블: 댓글 ID, 댓글 날짜, 댓글 내용 등과 같은 Weibo 댓글 정보를 표 4-5와 같이 댓글 ID를 기본 키로 저장합니다.

6. 포인트 테이블: 표 4-6과 같이 포인트 번호를 기본 키로 하여 매일 로그인을 통해 포인트를 획득하고 Weibo를 게시하는 등 사용자가 포인트를 획득하는 방법을 저장하기 위해 사용됩니다.

7. 좋아요 표: Weibo의 좋아요 정보를 저장하는 데 사용되며 주로 좋아요 번호, 좋아요 번호, Weibo 번호 및 기타 정보를 포함합니다. 표 4-7과 같이 같은 번호를 기본 키로 사용합니다.

8. 포인트 흐름표: 사용자가 획득한 포인트 정보를 저장하는 데 사용되며 주로 포인트 번호, 사용자 번호, 획득 날짜 및 기타 정보를 포함하며 포인트 번호를 기본 키로 하여 표 4-8에 표시됩니다.

9. 포워딩 테이블: 표 4-9와 같이 주로 포워딩 번호, 포워딩 사람, Weibo 번호 및 기타 정보를 포워딩 번호를 기본 키로 포함하여 사용자가 포워딩한 정보를 저장하는 데 사용됩니다.

4.3.2 개념 설계
사용자는 여러 개의 마이크로블로그를 게시할 수 있으므로 그림 4.12와 같이 사용자 테이블과 마이크로블로그 테이블 사이에 일대다 관계가 있습니다.
여기에 이미지 설명 삽입

그림 4.12 사용자 테이블과 Weibo 테이블 간의 대응

마이크로블로그는 여러 좋아요, 전달, 즐겨찾기 및 댓글에 대응할 수 있으므로 그림 4.13에 표시된 것처럼 마이크로블로그 테이블과 즐겨찾기, 좋아요, 전달 및 즐겨찾기 테이블 간에 일대다 대응이 있습니다.
여기에 이미지 설명 삽입

그림 4.13 Weibo 테이블과 Weibo 작업 테이블 간의 대응

사용자는 여러 소라를 게시할 수 있으며 각 소라 질문은 여러 댓글에 해당할 수 있습니다. 그림 4.14와 같이.
여기에 이미지 설명 삽입

그림 4.14 사용자 테이블과 소라 테이블 간의 대응

4.3.3 데이터베이스 테이블
1. 사용자 테이블: 데이터베이스 테이블 이름 USER_TAB, 참조 시퀀스 이름 SEQ_USER.

표 4-1 사용자 테이블
여기에 이미지 설명 삽입

2. 관심 테이블: 데이터베이스 테이블 FRIEND_TAB, 참조 시퀀스 이름 SEQ_FRIEND.

표 4-2 우려 양식
여기에 이미지 설명 삽입

3. Weibo 테이블: 데이터베이스 테이블 이름은 WEIBO_TAB이고 참조 인덱스 이름은 SEQ_WEIBO입니다.

표 4-3 웨이보 표
여기에 이미지 설명 삽입

4. 수집 테이블: 데이터베이스 테이블 이름 COLLECT_TAB, 참조 인덱스 이름 SEQ_COLLECT.

표 4-4 수집 테이블
여기에 이미지 설명 삽입

5. 주석 테이블: 데이터베이스 테이블 이름 COMM_TAB, 참조 인덱스 이름 SEQ_COMM.

표 4-5 코멘트 양식
여기에 이미지 설명 삽입

6. 통합 테이블: 데이터베이스 테이블 이름 INTEGRAL_TAB, 참조 인덱스 이름 SEQ_INTEGRAL.

표 4-6 적분 테이블
여기에 이미지 설명 삽입

7. 유사 테이블: 데이터베이스 테이블 이름 LIKE_TAB, 참조 색인 이름 SEQ_LIKE.

표 4-7 유사 테이블
여기에 이미지 설명 삽입

8. 통합 흐름 테이블: 데이터베이스 테이블 이름 RECORD_TAB, 참조 색인 이름 SEQ_RECORD.

표 4-8 일체형 유량계
여기에 이미지 설명 삽입

9. 전달 테이블: 데이터베이스 테이블 이름 TRANS_TAB, 참조 인덱스 이름 SEQ_TRANS.

표 4-9 포워딩 테이블
여기에 이미지 설명 삽입

제5장 시스템 기능 구현

5.1 로그인 시스템
시스템 로그인 등록 페이지에서 사용자가 사서함에 들어가면 Ajax를 통해 사서함이 백그라운드 컨트롤러로 전송되고 서비스 계층의 해당 메서드가 호출됩니다.서비스에서 Dao 계층 인터페이스가 호출됩니다. 사용자 사서함이 등록되어 있는지 확인하는 방법으로, 등록이 되어 있으면 프런트엔드 자바스크립트를 통해 페이지에 표시되어 사서함이 등록되었음을 사용자에게 알려줍니다.기본 정보를 입력하고 등록을 클릭하면, 사용자가 입력한 등록 정보는 브라우저를 통해 백그라운드 컨트롤러로 전송되고 컨트롤러는 요청을 제어합니다.페이지를 전달하고 사용자 등록 정보를 서비스에 전달하고 서비스에서 사용자의 일부 기본 정보를 초기화합니다. 기본 아바타, 기본 상태, 사용자 포인트 및 기타 작업 초기화, 사용자 데이터 소스 조립, Dao 레이어 메서드를 호출하여 그림 5.1과 같이 사용자 등록 정보를 저장합니다. 핵심 코드는 다음과 같습니다.

user.setRegisterTime(nowDate());		//使用当前时间作为用户注册时间
	user.setLastLogin(nowDate());
	user.setBirthday("2017-1-1");
	User addUser = addIntegral(user, Constant.REGISTER);		//增加用户积分
	action = userDao.findIntegral(Constant.REGISTER);		//查找注册操作得到的PointAction
	record = new PointRecord(action, addUser.getEmail(), nowDate());
	addIntegralRecord(record);	//保存积分操作
userDao.saveUser(addUser); 	//保存用户注册信息

로그인 기능, 다음 자동 로그인 비밀번호를 클릭하면 로그인을 클릭한 후 먼저 비즈니스 처리를 위해 사용자 이름과 비밀번호 정보를 서비스 계층에 전달한 다음 Dao 계층 인터페이스를 호출하여 이메일 주소와 비밀번호 정보가 올바른지 판단합니다. 맞으면 다음 로그인 클릭 후 브라우저 쿠키에 메일함 이름과 비밀번호를 저장하고 로그인한 사용자를 세션에 저장하여 사용자의 현재 로그인 시간과 마지막 로그인 시간이 같은지 판단 사용자의 로그인을 처리하는 서비스에서 같은 날이 아닌 경우 사용자의 로그인 포인트를 추가하고 사용자 데이터베이스에서 포인트 수를 수정한 다음 그림 5.2와 같이 Weibo 홈페이지로 이동합니다. 핵심 코드는 다음과 같습니다.

findUser = userDao.findUserByEmailAndPassword(userId, password);
	if(findUser == null){
    
    
		throw new UserServiceException("用户名或密码错误");
	}else{
    
    
		Date lastLogin = findUser.getLastLogin();	//上次登陆时间
		Date now = nowDate();	//当前时间
		if(lastLogin.getYear()!=now.getYear() || lastLogin.getMonth()!=now.getMonth() || lastLogin.getDate()!=now.getDate()){
    
    
		//判断如果上次登陆时间和这次登陆时间不一样,则为用户增加登陆积分
		findUser=addIntegral(findUser, Constant.LOGIN);	//保存积分
		saveIRecord(findUser, Constant.LOGIN);	//保存积分记录
		findUser.setLastLogin(now);		//将上次登陆时间改为当前时间
		userDao.updateUser(findUser);	//更改用户信息
			}
}

여기에 이미지 설명 삽입

그림 5.1 사용자 로그인 및 등록 인터페이스
여기에 이미지 설명 삽입

그림 5.2 Weibo 홈페이지 인터페이스

5.2 사용자 정보 시스템
사용자 기본 정보: 그림 5.3과 같이 사용자가 클릭하여 수정하면 브라우저는 양식을 제출하고 사용자 기본 정보와 함께 요청을 SpringMVC의 컨트롤러에 보내어 요청을 받고 조립합니다. 형식의 데이터를 User Object로 전달하고 Service 레이어의 해당 메서드에 매개 변수로 전달하여 처리하고 Dao 레이어 인터페이스를 호출하여 사용자의 기본 정보를 수정하고 Session의 User 개체 정보를 수정합니다. 현재 서버. 핵심 코드는 다음과 같습니다.

try {
    
    
		userDao.updateUser(user);
	} catch (DataAccessException e) {
    
    
		throw new UserServiceException("修改失败,请重试!");
	}

여기에 이미지 설명 삽입

그림 5.3 사용자 기본 정보 인터페이스 수정

암호 변경: 사용자 프로필 페이지에서 암호 변경을 클릭하면 그림 5-4와 같이 암호 변경 페이지로 이동합니다. 사용자는 사용자의 현재 암호를 입력할 수 있습니다. 전면 페이지는 Ajax를 통해 비동기 요청을 보내고 백그라운드는 컨트롤러가 요청을 수신하면 데이터베이스에서 사용자의 현재 비밀번호가 올바른지 여부가 정확합니다.비밀번호가 올바르지 않으면 첫 페이지에서 비밀번호가 틀렸다는 javaScript를 통해 동적으로 사용자에게 메시지를 표시합니다.비밀번호가 맞으면 사용자는 새 암호를 입력하고 새 암호를 확인할 수 있습니다.확인을 클릭하여 수정합니다.브라우저가 양식 양식을 제출하고 사용자의 새 암호를 백그라운드 서비스 레이어의 해당 메서드로 전달합니다.서비스 메서드에서 Dao 레이어 인터페이스를 호출하여 데이터베이스의 사용자 비밀번호와 서버 세션의 사용자 정보를 변경하십시오. 핵심 코드는 다음과 같습니다.

try {
    
    
		user.setPassword(newpwd);
		userService.updateUser(user); 
		session.setAttribute("loginUser", user);
		mav.addObject("msg", "修改成功");
	} catch (UserServiceException e) {
    
    
		e.printStackTrace();
}

여기에 이미지 설명 삽입

그림 5.4 비밀번호 인터페이스 수정

사용자 아바타 수정: 사용자 프로필에서 아바타를 수정하려면 클릭하십시오. 그림 5.5와 같이 아바타 수정 페이지로 이동합니다. 사용자가 아바타 파일을 선택하고 업로드를 클릭하면 양식이 이미지를 배경 컨트롤러로 전송합니다. , 그리고 사용자 아바타 저장 서버에서는 사용자의 이전 아바타가 시스템의 기본 아바타로 판단되며, 그렇지 않은 경우 사용자의 이전 아바타 사진은 삭제되고 사용자 정보에는 사용자의 새로운 아바타 주소가 저장되며, 데이터베이스에서 사용자의 프로필을 수정하기 위해 Dao 레이어 인터페이스를 호출하기 위해 서비스에 전달되는 아바타 정보. 핵심 코드는 다음과 같습니다.

if(!(icon.isEmpty())){
    
    	//如果文件存在,isEmpty文件为空
			//保存文件目录
	String path = 	req.getServletContext().getRealPath("/")+"WEB-INF/jsp/face/"+user.getId()+ico	n.getOriginalFilename();
	File newFile = new File(path);
	//判断文件目录存在不存在,如果不存在就创建目录
	if(!(newFile.getParentFile().exists())){
    
    
		newFile.getParentFile().mkdirs();
	}
	try {
    
    
		icon.transferTo(newFile);	//转存文件		
		File oldIcon = new  File(req.getServletContext().getRealPath("/")+"WEB-INF/jsp/"+user.getImages());	//删除之前的头像	
		if(!(user.getImages().equals("face/boy.png") || user.getImages().equals("face/girl.png"))){
    
    
		//先判断用户之前的头像不是系统默认的头像,然后删除用户之前的头像
			if(oldIcon.exists()){
    
    
				oldIcon.delete();
				}
			}
			user.setImages("face/"+user.getId()+icon.getOriginalFilename());
			userService.updateUser(user);	//保存用户头像
			session.setAttribute("loginUser", user);	//将保存后的用户头像信息保存在用户session中
		} catch (Exception e) {
    
    	
			e.printStackTrace();
		}
	}else{
    
    
		mav.addObject("msg", "图片不存在");
}

여기에 이미지 설명 삽입

그림 5.5 아바타 인터페이스 수정

암호 수정: 사용자가 암호 수정 페이지를 클릭하면 브라우저는 그림 5-6과 같이 암호 수정 페이지로 이동합니다.사용자는 먼저 이전에 설정한 암호 질문에 따라 답을 입력해야 합니다. 전면 페이지는 Ajax를 사용하여 사용자의 비밀 보안 질문에 대한 답변을 백그라운드 컨트롤러로 전달하고 데이터베이스에서 사용자의 비밀 보안 질문에 대한 답변을 판단합니다.비밀 보안 답변이 틀리면 사용자의 비밀 보안 답변은 javaScript를 통해 페이지에 표시됩니다.비밀 보안 답변이 정확하면 사용자는 새로운 보안 질문 및 보안 답변을 입력할 수 있습니다.수정을 클릭하여 양식을 제출한 후 브라우저는 사용자의 보안 질문을 수정하라는 요청을 보냅니다. 백그라운드 데이터베이스의 보안 질문 및 답변. 핵심 코드는 다음과 같습니다.

userService.updateUser(user);
	session.setAttribute("loginUser", user);
	mav.setViewName("forward:question_index");
mav.addObject("msg", "修改成功!");

여기에 이미지 설명 삽입

그림 5.6 암호 보호 인터페이스 수정

5.3 마이크로블로그 모듈
마이크로블로그 게시: 사용자 홈페이지의 그림 5.7과 같이 사용자는 마이크로블로그를 게시하거나 마이크로블로그 정보에 이모티콘을 삽입하거나 사진을 삽입하도록 선택할 수 있습니다.첫 페이지에서 이모티콘은 javaScript를 사용하여 동적으로 생성됩니다 div 태그는 사용자가 게시를 클릭하면 브라우저는 첫 페이지 형식의 마이크로블로그 정보와 사진 정보를 백그라운드 컨트롤러로 전송하고 사진 정보는 서버에 저장하고 사진 경로는 데이터베이스 , 세션에서 현재 로그인 사용자 가져오기, 마이크로블로그 데이터 소스 조립, 데이터 소스를 서비스로 전달, Dao 계층 인터페이스를 호출하여 마이크로블로그 정보를 데이터베이스에 저장합니다. 핵심 코드는 다음과 같습니다.

if(!(pic.isEmpty())){
    
    	//如果文件存在,isEmpty文件为空
	//保存文件目录
	String path = req.getServletContext().getRealPath("/")+"WEB-inf/jsp/upload/pic/"+user.getId()+pic.getOriginalFilename();
	File newFile = new File(path);
	//判断文件目录存在不存在,如果不存在就创建目录
	if(!(newFile.getParentFile().exists())){
    
    
		newFile.getParentFile().mkdirs();
	}
	try {
    
    
		pic.transferTo(newFile); //转存文件
		weibo.setImage("upload/pic/"+user.getId()+pic.getOriginalFilename());
	} catch (Exception e) {
    
    
		e.printStackTrace();
		}
}else{
    
    
	//没有带图片
	weibo.setImage("null");
}
try {
    
    
		//保存微博信息
		weibo.setUser(user);
		weiboService.publishWeibo(weibo);	//保存微博信息
		user.setBlogNumber(user.getBlogNumber()+1);		//将用户的微博数+1
		userService.updateUser(user);		//保存更改后的用户信息
		session.setAttribute("loginUser", user);	
		mav.addObject("msg", "发布成功!");
	} catch (Exception e) {
    
    	
		e.printStackTrace();
		mav.addObject("msg", e.getMessage());
	}

여기에 이미지 설명 삽입

그림 5.7 Weibo 정보 인터페이스 게시

Weibo 검색: 그림 5.8과 같이 Weibo 홈페이지의 검색 상자에 키워드를 입력하고 검색을 클릭하여 양식을 제출하면 브라우저가 키워드를 백그라운드 컨트롤러에 전달하라는 요청을 보내고 데이터베이스에서 관련 Weibo를 쿼리합니다. 모호한 쿼리 정보를 통해 서비스 계층의 특정 메소드에서 Dao 계층 인터페이스를 호출하여 관련 마이크로 블로그 정보를 얻고, 컬렉션을 탐색하고, 마이크로 블로그 및 게시자 개체의 기본 정보를 조립하고, 마이크로 블로그의 표현을 해당 gif 이미지로 변환하고, 조정합니다. 마이크로블로그의 시간 형식 형식에 따라 Weibo 콘텐츠의 검색 키워드를 빨간색으로 표시하도록 수정하고 수정된 데이터를 첫 페이지에 반환하여 표시합니다(그림 5.9 참조). 핵심 코드는 다음과 같습니다.

User user = (User) session.getAttribute("loginUser");
	if("weibo".equals(ac)){
    
    
		mav.setViewName("seachWeiboPage");
	}else if("user".equals(ac)){
    
    
		mav.setViewName("seachUserPage");
	}
	try {
    
    
		Map<String, Object> map = userService.seachWeiboAndUser(skey,pag,ac);
		mav.addObject("map", map);	
		List<User> userTuiJian = weiboService.findUserTuiJian(user.getId());
		mav.addObject("tuijian", userTuiJian);
		} catch (Exception e) {
    
    
			e.printStackTrace();
	}

여기에 이미지 설명 삽입

그림 5.8 Weibo 정보 인터페이스 게시

여기에 이미지 설명 삽입

그림 5.9 검색 Weibo 디스플레이 인터페이스

Weibo 작업: Weibo를 클릭하여 기능 유형을 좋아하고 전달 및 저장하고 Ajax를 통해 백그라운드 컨트롤러에 Weibo ID 요청을 제출하고 세션에서 로그인 사용자 정보를 얻고 Weibo를 통해 서비스의 해당 메서드에 매개 변수를 전달합니다. 블로그의 다양한 작업은 해당 Dao 레이어 인터페이스를 호출하여 Weibo의 좋아요, 리트윗 및 수집 정보를 데이터베이스에 저장합니다. 댓글을 클릭한 후 전경 페이지의 클릭 이벤트를 통해 JavaScript로 이동하고 Ajax를 통해 백그라운드 컨트롤러에 비동기 요청을 보내고 서비스 계층의 해당 메서드에 Weibo ID를 전달합니다.Dao 계층 인터페이스를 사용하여 찾기 데이터베이스의 해당 Weibo 번호 댓글 정보의 경우 마이크로 블로그 댓글의 페이지 매김은 해당 PageBean 클래스에 의해 제어되고 페이지 매김에 표시되는 항목 수는 데이터베이스 계층의 SQL 문에 의해 제어되며 json 데이터는 디스플레이를 위해 컨트롤러에서 첫 페이지로 전달됩니다. 댓글 정보의 끝에서 사용자는 자신의 댓글을 게시하고, 이모티콘을 추가하고, 게시를 클릭하여 백그라운드 컨트롤러에 양식을 제출하고, 백그라운드 코드에서 Dao 레이어 인터페이스를 호출하여 사용자의 댓글 정보를 저장할 수 있습니다. 그림 5.10과 같이. 핵심 코드는 다음과 같습니다.

comm.setBeCommentId(dao.findUserIdbyWId(comm.getWeiboId()));
	comm.setCommentLike(0); 	//默认点赞数为0
	//保存评论信息
	dao.saveWeiboComm(comm);
	Weibo weibo = dao.findWeiboBywId(comm.getWeiboId());
	//查找微博评论数
	commNum = dao.findCommNum(comm.getWeiboId());
	weibo.setComnum(commNum);
	//更新微博评论数目
dao.updateWeibo(weibo);

여기에 이미지 설명 삽입

그림 5.10 Weibo 텍스트 작업 인터페이스

개인 Weibo: 그림 5.11과 같이 페이지 상단의 내비게이션 바에서 클릭하면 사용자의 개인 홈페이지로 들어가 내 Weibo를 볼 수 있습니다. 페이지 아래에는 사용자의 기본 정보가 표시되고 중간에는 사용자가 게시한 게시물이 표시됩니다.Weibo는 Weibo에 삽입된 사진을 클릭하면 JavaScript를 통해 사진을 확대할 수도 있고, 사용자가 추천한 친구를 표시할 수도 있습니다. 페이지 오른쪽에 있는 사용자를 위한 시스템. My Weibo 버튼을 클릭한 후 전송된 요청은 백그라운드 컨트롤러에 의해 수신되고 현재 로그인한 사용자의 사용자 ID는 서버 세션에서 가져와 서비스 계층으로 전달되고 Dao 계층 인터페이스가 호출됩니다. 데이터베이스에서 현재 로그인한 사용자의 ID를 얻기 위해 서비스 계층에서 마이크로블로그 정보는 List 컬렉션으로 조립되고, List 컬렉션을 순회하고, 마이크로블로그 데이터 소스의 날짜 형식을 변경하고, 대체할 도구 클래스를 호출합니다. 마이크로블로그의 텍스트에 해당 그림 정보를 표현하고 마이크로블로그 Pseudo-column의 페이지 매김에서 Oralce 데이터베이스를 사용하여 해당 간격의 마이크로블로그 정보를 얻고 데이터베이스 계층의 페이지 매김을 실현하고 모든 데이터를 전달합니다. 페이지에 컨트롤러에 표시해야 하는 데이터가 컨트롤러에 표시되면 컨트롤러는 응답 응답의 데이터를 캡슐화하여 첫 페이지로 전달합니다. 핵심 코드는 다음과 같습니다.

List<Weibo> list = weiboService.findHomeWeibo(0, page, null);
	list = FaceFormat.formt(list);
	for(int i=0;i<list.size();i++){
    
    
		long uId = list.get(i).getU_id();	//获取用户id
		User weibo_user = userService.findUserById(uId);
		list.get(i).setUser(weibo_user); 	//将user信息组装到weibo类中
		boolean b = weiboService.userLikeWeibo(list.get(i).getId(), user.getId());
		list.get(i).setB(b);
		//重新查找未读私信数目
		Map<String, Object> alerts = userService.alerts(user.getId());
		session.setAttribute("alerts", alerts);
	}
	int pageNumber = 0;
	page.setTotalPage(pageNumber/10+1); 	//确定所有的微博共有多少页
List<User> userTuiJian = weiboService.findUserTuiJian(user.getId());

여기에 이미지 설명 삽입

그림 5.11 개인 Weibo 인터페이스

5.4 친구 모듈
친구 마이크로블로그 보기: 페이지 내비게이션 바에서 내 친구를 클릭하여 친구 마이크로블로그 페이지로 이동합니다.백그라운드 컨트롤러에서 먼저 세션에서 현재 로그인한 사용자의 id 값을 가져와서 전달합니다. Service Call에서는 먼저 데이터베이스의 친구 테이블에서 해당 사용자의 모든 친구 정보를 찾은 다음 웨이보 공개의 역순으로 데이터베이스 웨이보 테이블에서 이들 친구에 해당하는 웨이보 정보를 확인하는 다오 레이어 방식을 호출합니다. 발견된 모든 Weibo 정보 및 게시된 사용자 정보는 목록 컬렉션으로 캡슐화되고, 목록 컬렉션을 통과하여 Weibo 날짜를 수정하고, Weibo 이모티콘을 해당 사진 이름으로 변환하고, 처리된 컬렉션을 컨트롤러에 전달하면 컨트롤러가 응답합니다. 조립된 모든 데이터와 함께 전경 페이지로 이동하고 그림 5.12와 같이 C 태그를 사용하여 전경 페이지의 목록을 탐색하여 Weibo 데이터를 표시합니다. 핵심 코드는 다음과 같습니다.

List<Weibo> list = friendService.findFriendWeibo(user.getId(), page);
	list = FaceFormat.formt(list);
	for(int i=0;i<list.size();i++){
    
    
		long uId = list.get(i).getU_id();	//获取用户id
		User weibo_user = userService.findUserById(uId);
		list.get(i).setUser(weibo_user); 	//将user信息组装到weibo类中
		boolean b = weiboService.userLikeWeibo(list.get(i).getId(), user.getId());
		list.get(i).setB(b);
		comm = FaceFormat.commFormt(comm);
		list.get(i).setComm(comm);			list.get(i).setStr_pubTime(TimeFormat.dateToString(list.get(i).getStr_pubTime())
	}
	int pageNumber = friendService.findWeiboNumber(user.getId());
	page.setTotalPage(pageNumber/10+1); 	//确定所有的微博共有多少页
List<User> userTuiJian = weiboService.findUserTuiJian(user.getId());

팔로우 기능: 사용자가 시스템에 로그인하면 페이지 오른쪽의 추천 사용자 중에서 팔로우가 필요한 사용자를 선택할 수 있습니다.팔로우를 클릭하면 첫 페이지에서 Ajax 기술을 통해 비동기 요청을 보내 백그라운드 컨트롤러에 따라야 할 사용자의 user id 서버에서 Session의 로그인한 사용자 정보를 얻어 로그인한 사용자의 id와 팔로우한 사용자의 id를 Service layer의 해당 메소드에 전달하여 처리 서비스 계층의 해당 방법에서 친구 정보 데이터 소스를 조립하고 Dao 계층 인터페이스를 호출합니다. 사용자의 관심 정보를 저장하고 동시에 사용자의 관심 번호를 업데이트하고 팔로우하는 사용자의 팬 수를 업데이트합니다. 그런 다음 첫 페이지의 javaScript를 통해 페이지 텍스트 정보 주의를 다음으로 수정합니다. 핵심 코드는 다음과 같습니다.

User user = (User)session.getAttribute("loginUser");
	long bId = Long.parseLong(attId);
	User bUser = userService.findUserById(bId);	
	weiboService.operationUser(operation, user, bUser);

Unfollow: 팔로우 기능 유형, 내비게이션 바에서 내 친구를 클릭하고 중간에서 팔로우를 클릭하면 그림 5.13과 같이 내가 팔로우하는 모든 친구, 친구 수 및 개인 정보를 볼 수 있습니다. 팔로우 취소를 클릭하고 친구 ID를 Ajax를 통해 백그라운드 컨트롤러에 전달하고, 컨트롤러의 요청에서 사용자 정보를 얻고, 친구 ID와 사용자 ID를 서비스 계층의 해당 메소드에 전달하고, 사용자 ID와 친구에 해당하는 Dao 계층 인터페이스를 호출합니다. id 사용자의 친구 정보가 삭제되고 사용자의 팔로워 수와 팔로우 중인 사용자의 팬 수가 동시에 변경됩니다. 그런 다음 응답을 반환하여 전경 페이지에서 친구 목록을 새로 고칩니다.

else if(operation.equals("QXGZ")){
    
    
		//取消关注用户操作
		dao.canUser(aId,bId);
		aUser.setAttention(aUser.getAttention()-1);		//a用户关注数-1
	bUser.setFans(bUser.getFans()-1);		//b用户粉丝数-1	
}

사용자 차단: Dao 레이어 인터페이스에서 기존 사용자 기록이 삭제되는 것이 아니라 논리적으로 삭제된다는 점을 제외하면 언팔로우 사용자와 유사합니다. 차단된 사용자 차단된 사용자에게는 정보가 표시되지 않습니다. 핵심 코드는 다음과 같습니다.

else if(operation.equals("LH")){
    
    
		//拉黑用户 不接收该用户的私信
		friendDao.updateFriendToBlack(aId, bId);
		friendDao.updateFriendState(aId, bId);
}

여기에 이미지 설명 삽입

그림 5.12 친구 Weibo 정보 인터페이스

여기에 이미지 설명 삽입

그림 5.13 친구 목록 인터페이스

개인 메시지: 추천 사용자 페이지에서 현재 로그인 사용자의 확인되지 않은 개인 메시지 수를 볼 수 있습니다. 그림 5.14와 같이 읽지 않은 개인 메시지 수는 데이터베이스의 모든 수신자에 대한 개인 메시지 정보를 통해 현재 로그인 사용자이고 정보 상태는 읽지 않은 개인 메시지의 경우 얻은 값을 프론트 페이지로 전달하고 프론트 페이지에 표시된 모든 값은 EL 표현식을 통해 서버에서 다시 보낸 응답에서 가져옵니다. 읽지 않은 개인 메시지를 클릭하거나 그림 5.13에 표시된 친구 목록에서 개인 메시지 버튼을 클릭하면 사용자의 개인 메시지 페이지로 이동합니다. 핵심 코드는 다음과 같습니다.

List<User> userList = dao.findUserByMessage(aId);
	if(bId == -1 && userList.size()!=0){
    
    
		//通过点击私信进入
		bId = userList.get(0).getId();
	}
	List<Message> list = dao.findMessageById(aId, bId);
	for(int i=0;i<list.size();i++){
    
    
		list.get(i).setUserA(userDao.findUserById(list.get(i).getUserAId()));
		list.get(i).setUserB(userDao.findUserById(list.get(i).getUserBId()));
	list.get(i).setMessageDate(TimeFormat.dateToString(list.get(i).getMessageDate()));
	}
	list = FaceFormat.messageFormt(list);
User user = userDao.findUserById(bId);

여기에 이미지 설명 삽입

그림 5.14 사용자가 읽지 않은 개인 메시지 인터페이스

비공개 메시지 보기: 그림 5.15와 같이 사용자가 친구를 팔로우하기 위해 비공개 메시지를 클릭하면 백그라운드 컨트롤러가 내 비공개 메시지 사용자 페이지로 이동합니다.페이지 왼쪽에는 사용자의 최신 비공개 메시지 정보가 표시되며, 페이지 오른쪽에는 보낸 모든 비공개 메시지가 표시됩니다.목록에서 사용자를 클릭하면 해당 사용자에게 직접 비공개 메시지를 보낼 수 있으며 비공개 메시지에는 이모티콘이 허용됩니다. 백그라운드 코드에서 개인 메시지를 보낼 사용자 ID와 Session에서 얻은 로그인 사용자 ID를 Service 계층의 해당 메소드에 전달하고 Dao 계층 인터페이스를 호출하여 해당 사용자와 관련된 모든 개인 메시지 레코드를 찾으십시오. 모든 개인 메시지의 상태를 읽고, 수집된 레코드를 컬렉션으로 조합하고, 컬렉션을 순회하고 도구 클래스를 호출하여 개인 메시지의 날짜 형식과 텍스트의 표현 형식을 수정합니다. 동시에 데이터베이스에서 현재 로그인 사용자와 개인 메시지 레코드가 있는 모든 사용자를 확보하고 조립된 컬렉션을 컨트롤러로 반환합니다. 컨트롤러는 데이터를 첫 페이지에 응답하고 컬렉션의 데이터를 순회하여 표시합니다. 전면 JSP 페이지에서. 핵심 코드는 다음과 같습니다.

for(int i=0;i<userList.size();i++){
    
    
		//查找来自该用户的未读私信
		userList.get(i).setUnReadMessage(dao.findURMNByUID(aId, 	userList.get(i).getId()));
}

여기에 이미지 설명 삽입

그림 5.15 사용자 개인 메시지 인터페이스

개인 메시지 보내기: 사용자가 먼저 보낼 사용자를 선택하고 보낼 개인 메시지 정보를 입력하고 개인 메시지에 이모티콘을 삽입할 수 있습니다.전송을 클릭하면 양식이 제출됩니다.브라우저가 요청을 백그라운드로 보냅니다. 컨트롤러, 컨트롤러는 발신 사용자의 ID를 획득하고 사용자의 ID를 수신하고 서비스 계층에서 메소드를 호출하고 데이터 소스를 개인 메시지 정보로 조립하고 개인 메시지 정보를 읽지 않음으로 설정하고 Dao 계층 인터페이스를 호출합니다. 데이터베이스에 개인 메시지 정보를 저장하기 위해 서비스 계층의 해당 메소드. 핵심 코드는 다음과 같습니다.

friendService.sendMessage(message);
	List<User> userTuiJian = weiboService.findUserTuiJian(user.getId());
	mav.addObject("tuijian", userTuiJian);
	//查找用户有私信的记录
	Map<String, Object> map = friendService.findMessageById(user.getId(), userBId);
	@SuppressWarnings("unchecked")
	List<Message> Messagelist = (List<Message>) map.get("list");
	User bUser = (User) map.get("bUser");
	@SuppressWarnings("unchecked")
	List<User> attUser = (List<User>)map.get("attUsers");

사용자 검색: 사용자 검색 페이지에서 사용자는 사용자 닉네임의 키워드를 입력하여 관련 사용자를 퍼지 쿼리할 수 있습니다.사용자가 쿼리할 사용자 닉네임을 입력하면 브라우저는 컨트롤러의 특정 메서드로 점프하기 위해 키워드 및 기타 정보와 함께 요청을 보냅니다. , Service의 메소드 처리 로직은 컨트롤러 메소드 내부에서 호출되며 비즈니스 레이어는 Dao 레이어 인터페이스의 검색 메소드를 호출하여 사용자 닉네임에 키워드가 포함된 사용자를 찾고 데이터베이스에서 얻은 해당 사용자를 집합으로 조합하고 트래버스합니다. 로 설정 사용자의 닉네임에 포함된 키워드는 빨간색으로 변경되고 컨트롤러는 응답을 반환하고 검색 결과 페이지로 이동하며 컬렉션을 탐색하여 찾은 모든 사용자 정보를 표시합니다. 그림 5.16과 같이. 핵심 코드는 다음과 같습니다.

Map<String, Object> map = userService.seachWeiboAndUser(skey,pag,ac);
		mav.addObject("map", map);
		List<User> userTuiJian = weiboService.findUserTuiJian(user.getId());
		mav.addObject("tuijian", userTuiJian);

여기에 이미지 설명 삽입

그림 5.16 검색 UI

사용자 홈페이지: 페이지에서 사용자의 이름이나 프로필 사진을 클릭하면 해당 사용자의 개인 홈페이지로 이동합니다.사용자의 개인 홈페이지에는 사용자의 개인 정보와 사용자의 최근 Weibo가 역순으로 표시되며 사용자는 또한 다음을 수행할 수 있습니다. Weibo 좋아요, 전달, 댓글 및 즐겨찾기를 운영합니다. 획득한 코드에서 사용자가 다른 사용자의 아바타나 이름을 클릭하면 브라우저는 사용자 ID를 포함하는 요청을 백그라운드 컨트롤러로 보냅니다. 컨트롤러는 서비스에서 해당 메소드를 호출하고 서비스 메소드에서 Dao 레이어 인터페이스를 호출하여 데이터베이스에서 사용자의 기본 정보와 사용자의 웨이보 정보를 조회하고 모든 데이터를 컬렉션에 저장합니다. 컨트롤러로 돌아가면 컨트롤러는 그림 5.17과 같이 디스플레이를 위해 데이터를 첫 페이지로 다시 전달합니다. 핵심 코드는 다음과 같습니다.

List<Weibo> list = friendService.findFriendWeibo(user.getId(), page);
	list = FaceFormat.formt(list);
	for(int i=0;i<list.size();i++){
    
    
		long uId = list.get(i).getU_id();	//获取用户id
		User weibo_user = userService.findUserById(uId);
		list.get(i).setUser(weibo_user); 	//将user信息组装到weibo类中
		boolean b = weiboService.userLikeWeibo(list.get(i).getId(), user.getId());
		list.get(i).setB(b);
		comm = FaceFormat.commFormt(comm);
		list.get(i).setComm(comm);		  			 	list.get(i).setStr_pubTime(TimeFormat.dateToString(list.get(i).getStr_pubTime()));
}

여기에 이미지 설명 삽입

그림 5.17 사용자 홈페이지 인터페이스

5.5
Conch 모듈 출시: 사용자가 Conch 홈페이지에 들어가면 브라우저 페이지는 백엔드 컨트롤러에 비즈니스 계층의 특정 메서드를 호출하라는 요청을 보내고 서비스는 Dao 계층 인터페이스를 호출하여 다양한 conch 질문과 관련된 질문을 찾습니다. 데이터베이스에서 조건을 필터링하고, 컬렉션에서 발견된 문제를 캡슐화하고, 컨트롤러를 통해 서버 응답을 보내고, Conch 홈페이지로 이동하고, 루프에서 모든 Conch 문제를 표시합니다. 사용자가 질문을 게시해야 하는 경우 질문에 대한 설명과 보상할 포인트 수를 입력한 후 게시를 클릭하면 브라우저가 양식 데이터를 백그라운드 컨트롤러에 제출합니다.서비스 계층에서 먼저 판단됩니다. 사용자의 conch 포인트가 보상 포인트보다 큰지 여부, 보상 포인트보다 적은 경우 포인트가 부족하다는 메시지를 표시하기 위해 브라우저 페이지로 돌아갑니다. 포인트가 충분하면 Dao 레이어 인터페이스를 호출하여 사용자의 소라 질문을 데이터베이스에 저장하고 동시에 사용자 소라 포인트를 줄여 사용자 기본 정보를 수정합니다. 핵심 코드는 다음과 같습니다.

//海螺分页
	//获取海螺总数
	int num = userService.conchNum(user.getId(), conchOperation);
	if(num%5 == 0){
    
    
		page.setTotalPage(num/5);
	}else{
    
    
		page.setTotalPage(num/5+1);
	}
	page.setPage(1);	//每5页一分页
	page.setMinPage(1*5-4);
	page.setMaxPage(1*5);
	//查找海螺显示
	Map<String, Object> map = userService.conchIndex(user.getId(), conchOperation ,page);
	List<User> userTuiJian = weiboService.findUserTuiJian(user.getId());

여기에 이미지 설명 삽입

그림 5.18 Conch 홈페이지 인터페이스

conch 문제 보기: 사용자가 conch 홈페이지에서 특정 문제를 클릭하면 브라우저는 백그라운드 컨트롤러에 Service 레이어에 해당하는 메서드를 호출하라는 요청을 보내고 Service 레이어의 Dao 레이어 인터페이스를 호출하여 특정 문제를 봅니다. 소라 문제의 번호를 통해 소라의 정보 질문을 게시 한 사용자 ID는 데이터베이스에서 해당 게시자 정보를 조회하고 서버는 소라의 특정 정보를 표시하는 응답을 브라우저에 반환하고 사용자 글을 올린 사용자의 이름, 사용자 제목, 출시일, 콘크 질문, 보상 포인트, 질문이 상단에 표시됩니다. 그림 5.19와 같이 이름, 제목, 답변 내용, 회신 날짜, 수락 여부 등. 핵심 코드는 다음과 같습니다.

List<WeiboComm> list = weiboDao.findWeiboComm(conchId, 0, 20);
	list = FaceFormat.commFormt(list);
	for(int i=0;i<list.size();i++){
    
    			                                  	list.get(i).setCommentDate(TimeFormat.dateToString(list.get(i).getCommentDate()));
	list.get(i).setCommUser(userDao.findUserById(list.get(i).getCommentId()));
	}
	map.put("conchComm", list);

여기에 이미지 설명 삽입

그림 5.19 문제의 특정 인터페이스 보기

conch 질문 답변: conch 질문 상세 정보 페이지 하단에 있는 conch 질문에 답변하고, 입력란에 답변 답변을 입력하고, 이모티콘 정보를 입력하고, 답변을 클릭하여 양식을 제출하고, 브라우저에서 양식 데이터를 전달하도록 요청합니다. 서버의 특정 메소드는 세션에서 사용자 번호를 수신하고 획득하며 회신 정보의 데이터 소스를 조립하고 매개 변수를 서비스에 전달하고 서비스의 Dao 계층 인터페이스를 호출하여 저장합니다. 그림 5.20과 같이 소라의 응답 정보. 핵심 코드는 다음과 같습니다.

comm.setCommentState(100); //100回复正常未采纳 101回复正常被采纳
weiboDao.saveWeiboComm(comm);

여기에 이미지 설명 삽입

그림 5.20 답장 Conch 질문 인터페이스

질문에 대한 답변 수락: Conch Questions 홈페이지에서 My Conch Questions를 클릭하면 사용자가 게시한 Conch Questions 페이지로 이동할 수 있습니다. 정답은 정답이 되어 그림 5.21과 같이 채택자의 conch point가 증가합니다. 백그라운드 코드에서 사용자가 수락을 클릭하면 conch 질문 ID와 질문 응답을 포함하는 브라우저 요청이 표시됩니다. 정보는 백그라운드 컨트롤러의 특정 메서드에 의해 수신됩니다. 컨트롤러의 서비스 레이어를 호출하고 비즈니스 레이어의 Dao 레이어 인터페이스를 호출하여 데이터베이스의 conch 문제 해결 상태를 수정하고 수락된 댓글 상태를 수정합니다. 댓글 테이블의 사용자를 수락하고 전면 소라 문제 페이지를 새로 고칩니다. 핵심 코드는 다음과 같습니다.

//设置海螺状态为1
	userDao.setConchState(conchId);
	//设置海螺评论状态为101
	userDao.setConchComm(commId);
	//为用户增加海螺积分
	Conch conch = userDao.findConchById(conchId);
	User user = userDao.findUserById(userDao.findUserIdByCommId(commId));
	user.setConchIntegral(user.getConchIntegral()+conch.getcNumber());

여기에 이미지 설명 삽입

그림 5.21 질문 답변 수락 인터페이스

5.6 백그라운드 관리자 모듈
관리자 로그인: 관리자는 로그인 페이지에서 관리자 로그인을 클릭하여 그림 5.22와 같이 관리자 로그인 페이지로 이동할 수 있습니다.관리자가 로그인한 후 페이지는 백그라운드 컨트롤러에 요청을 보내고 백그라운드 컨트롤러 계층은 요청을 수신하고 사용자 이름과 암호를 매개 변수로 비즈니스 계층에서 메서드를 호출하고 서비스 계층에서 Dao 계층 인터페이스를 호출하고 데이터베이스의 관리자 계정 테이블에서 쿼리하고 관리자 클래스가 있으면 반환합니다. , 존재하지 않는 경우 throw 예외가 발생하면 레이어별로 예외를 throw하고 컨트롤러 레이어에서 수신하며 오류 정보는 메서드의 반환 값에 저장되고 페이지가 프롬프트됩니다. 이름과 암호가 정확하면 컨트롤러에서 관리자 홈 페이지의 처리 방법으로 이동합니다. 관리자 홈 페이지의 처리 방법에서 표시할 데이터를 가져와 표시합니다. 핵심 코드는 다음과 같습니다.

@RequestMapping("admin_login")
	public String adminIndex(){
    
    
		return "admin/adminlogin";
}
 

여기에 이미지 설명 삽입

그림 5.22 관리자 로그인 인터페이스

관리자 홈페이지: 로그인 후 관리자 홈페이지로 이동하여 홈페이지 상단에 내비게이션 바가 표시되며 페이지 내용은 4개의 차트를 사용하여 Weibo, , 댓글, 소라, 댓글, 답변 등 그리고 현재 달의 숫자, 아래 막대 차트는 오늘과 가장 가까운 7일의 숫자를 보여줍니다. 배경은 먼저 Controller 계층에서 관리자의 홈페이지에 해당하는 처리 메소드로 점프하고, Service 계층에서 해당 메소드를 호출하여 홈페이지 표시 데이터를 획득하고, 획득한 데이터를 Map 컬렉션으로 조합하고, 다음에서 Dao 계층을 호출합니다. 서비스 계층 사용자, Weibo, 댓글, 답변 및 홈페이지에 표시해야 하는 기타 데이터를 얻는 방법은 지도 컬렉션에 저장되고 반환 값 데이터는 제어 계층에서 가져와 서버 응답에 저장됩니다. , 그림 5.23과 같이 EL 표현식을 사용하여 데이터를 표시하기 위해 첫 페이지로 돌아갑니다. 핵심 코드는 다음과 같습니다.

//首页展示数据
	try {
    
    
		Map<String, Object> map = adminService.indexDate();
		mav.addObject("map", map);
	} catch (UserServiceException e) {
    
    
		e.printStackTrace();
}

여기에 이미지 설명 삽입

그림 5.23 관리자 홈 페이지 인터페이스

사용자 관리 홈 페이지: 백그라운드 코드는 Service 레이어에서 해당 메서드를 호출하고 Service 메서드는 Dao 레이어 인터페이스를 호출하여 데이터베이스와 상호 작용하고 데이터베이스의 모든 사용자 정보를 가져와 이를 List 컬렉션으로 캡슐화하고 반환합니다. 컨트롤러 레이어로 응답하여 사용자 목록 수집 브라우저로 페이지에서 사용자 정보는 c 태그를 통해 순회 및 표시됩니다.페이지의 페이징은 사용자 정의 페이징 클래스 PageBean을 사용하여 페이징 정보를 저장하고 페이징을 수행합니다. 한 번에 10개의 데이터를 얻기 위해 데이터베이스 계층에서. 핵심 코드는 다음과 같습니다.

int num = 0;
	if(ukey == null){
    
    
		num =  adminService.findUserNum();
	}else{
    
    
		num = adminService.findUserNum(ukey);
	}
	if(num%10 == 0){
    
    
		pageBean.setTotalPage(num/10);
	}else{
    
    
		pageBean.setTotalPage(num/10+1);
	}
	pageBean.setPage(page);
	pageBean.setMinPage(page*10-9);
	pageBean.setMaxPage(page*10);
	List<User> list = null;
	if(ukey == null){
    
    
		list =  adminService.userManage(pageBean);
	}else{
    
    
		list = adminService.userManageByKey(pageBean, ukey);
	}
	mav.addObject("userList", list);
mav.addObject("pageBean",pageBean);

여기에 이미지 설명 삽입

그림 5.24 사용자 관리 인터페이스

사용자 검색: 사용자 관리 페이지에서 사용자 닉네임의 키워드를 입력하여 사용자를 검색하면 획득한 사용자 정보 중 닉네임이 입력된 키워드인 부분이 빨간색으로 표시됩니다. 백그라운드 코드에서 검색을 클릭하면 관리자가 입력한 사용자 닉네임 키워드를 백그라운드 컨트롤러로 전달하고 컨트롤러의 서비스 계층에서 해당 검색 사용자 메서드를 호출하고 데이터베이스의 서비스 계층에서 Dao 계층 인터페이스를 호출합니다. 퍼지 쿼리를 통해 사용자. 그리고 얻은 데이터를 레이어별로 반환하고 Controller에서 첫 페이지에 응답한 다음 그림 5.25와 같이 페이지에 표시합니다. 핵심 코드는 다음과 같습니다.

list = adminDao.findAllUserByKey(key,page.getMinPage(),page.getMaxPage());
	for(int i=0;i<list.size();i++){
    
    
		list.get(i).setNickName(FaceFormat.keyFormt(list.get(i).getNickName(), key));
}

여기에 이미지 설명 삽입

그림 5.25 관리자 검색 사용자 인터페이스

사용자 차단: 관리자는 사용자 관리 페이지의 작업 열에서 차단 버튼을 클릭하여 위반 사용자를 차단할 수 있습니다. 관리자는 차단 일수를 입력할 수 있습니다. 이 날짜 이전에는 사용자가 정상적으로 로그인할 수 없으며, 관리자는 차단 해제를 클릭하여 사용자를 미리 차단 해제할 수 있으며 구체적인 페이지는 그림 5.26과 같습니다. 백그라운드 코드에서는 Service 레이어에서 Dao 레이어 인터페이스를 호출하여 사용자 상태 및 차단 날짜를 변경합니다.Unbanning은 사용자 차단과 유사하므로 특정 지침이 제공되지 않습니다. 핵심 코드는 다음과 같습니다.

mav.setViewName("redirect:userManage");
	try {
    
    
		adminService.FJUser(uId, day);	//uId封禁用户编号,day封禁天数
	} catch (UserServiceException e) {
    
    
		e.printStackTrace();
	}
mav.addObject("page", 1);

여기에 이미지 설명 삽입

그림 5.26 차단 사용자 인터페이스

Weibo 관리 홈 페이지: 관리자가 탐색 모음에서 Weibo 관리를 클릭하면 시스템이 사용자 Weibo 관리 페이지로 이동하여 시스템에서 사용되는 Weibo 정보를 표시하고 관리자는 Weibo 콘텐츠 검색 Weibo에 키워드를 입력할 수 있으며 동시에 잘못된 정보가 포함된 Weibo를 삭제하거나 삭제된 Weibo를 복원 Weibo 관리 페이지는 그림 5.27과 같습니다 배경 코드에서 사용자가 탐색 모음에서 Weibo 관리를 클릭하면 브라우저는 해당 요청을 컨트롤러에 보냅니다. 더 많은 처리 방법을 위한 SpringMVC 프레임워크, 컨트롤러의 서비스 계층에 있는 모든 마이크로 블로그를 표시하는 방법을 호출한 다음 서비스 계층에서 Dao 계층 방법을 호출하여 페이징 측면에서 모든 Weibo 정보를 얻는 방법은 사용하지 않습니다. 프런트엔드 페이지에서 페이징을 수행하지만 Oracle의 의사 열을 사용하여 데이터베이스에서 페이징을 수행하고 한 번에 10개의 데이터를 획득하고 최종적으로 컨트롤러에서 획득한 Weibo 정보에 응답합니다. 브라우저에 Weibo가 표시됩니다. c 태그 순회를 통한 정보. 핵심 코드는 다음과 같습니다.

String nkey = "";
	if(key == null){
    
    
		nkey = "1=1";
	}else{
    
    
		nkey = "m_body like '%"+key+"%'";
	}
	list = adminDao.findWeiboByKey(nkey, pageBean.getMinPage(), pageBean.getMaxPage());
	list = FaceFormat.formt(list);
	for(int i=0;i<list.size();i++){
    
    
						list.get(i).setStr_pubTime(TimeFormat.timeFormat(list.get(i).getPubTime()));
		list.get(i).setUser(userDao.findUserById(list.get(i).getU_id()));
		if(key != null){
    
    
		list.get(i).setBody(FaceFormat.keyFormt(list.get(i).getBody(), key));
		}
}

여기에 이미지 설명 삽입

그림 5.27 Weibo 관리 인터페이스

마이크로블로그 검색: 관리자는 마이크로블로그 콘텐츠에 키워드를 입력하여 마이크로블로그 콘텐츠에 있는 키워드로 마이크로블로그를 검색할 수 있으며 검색된 마이크로블로그 콘텐츠의 키워드는 특정 페이지에서와 같이 빨간색으로 표시됩니다. 백그라운드 코드, 컨트롤러의 특정 메서드는 브라우징으로 전송된 마이크로블로그 검색 요청을 수신하고, 서비스 계층에서 해당 메서드를 호출하고, Dao 계층 인터페이스에 키워드를 매개변수로 전달하고, Dao 계층 인터페이스에서 검색합니다. 데이터베이스의 마이크로블로그 콘텐츠 마이크로블로그 테이블은 키워드의 마이크로블로그 정보를 담고 있으며 퍼지 쿼리를 통해 데이터베이스에서 해당 마이크로블로그를 찾는다. 그런 다음 찾은 마이크로 블로그 정보를 List 컬렉션에 캡슐화하고 Controller 계층의 해당 메소드로 계층별로 리턴하고 메소드에서 브라우저에 데이터를 응답하면 브라우저는 응답을 수신하고 c 태그를 통해 데이터를 표시합니다. 페이지에서. 핵심 코드는 다음과 같습니다.

if(key == null){
    
    
		nkey = "1=1";
	}else{
    
    
		nkey = "m_body like '%"+key+"%'";
	}
list = adminDao.findWeiboByKey(nkey, pageBean.getMinPage(), pageBean.getMaxPage());

여기에 이미지 설명 삽입

그림 5.28 관리자 검색 Weibo 인터페이스

Weibo 삭제: Weibo 관리 페이지에서 Weibo의 내용에 따라 관리자가 Weibo의 불법 여부를 판단할 수 있으며, Weibo 정보에 잘못된 정보가 포함된 경우 관리자는 작업 표시줄의 삭제 버튼을 통해 Weibo를 삭제할 수 있습니다. .블로그 또는 삭제된 Weibo를 복원할 수 있습니다.사용자가 삭제를 클릭하면 페이지는 Weibo 번호와 같은 매개 변수를 사용하여 서버에 요청을 보내고 요청은 컨트롤러의 해당 방법으로 수신되며 Weibo 번호는 매개 변수로 Service에서 해당 방법을 사용하고 해당 방법에서 Dao 레이어 인터페이스를 호출하고 삭제할 데이터베이스에서 마이크로 블로그 번호에 해당하는 마이크로 블로그의 상태를 수정합니다.마이크로 블로그를 복원하는 것은 삭제와 유사합니다. , 데이터베이스에서 해당 마이크로블로그 정보의 상태를 정상으로 수정한 것을 제외하고는 정상일 수 있다. 핵심 코드는 다음과 같습니다.

if("sc".equals(ac)){
    
    
		adminDao.upWeiboWithState(wId, 1);
	}else if("hf".equals(ac)){
    
    
		adminDao.upWeiboWithState(wId, 0);
}

소라 관리 홈 페이지: 관리자는 탐색 모음에서 소라 관리를 클릭하여 소라 관리 페이지로 이동합니다(그림 5.29 참조). 탐색 모음은 페이지 상단에 있으며 페이지 내용은 모든 소라 정보를 표시합니다. conch 검색창과 하단 Conch 정보에는 일련번호, 출판사명, conch 내용, 출시일, conch 상태, 수행할 수 있는 동작 등이 포함되며, 백그라운드 코드의 경우 사용자가 내비게이션 바에서 conch 관리를 클릭하면 브라우저는 요청을 보내고 컨트롤러의 해당 메서드에서 요청을 수신하고 서비스의 Dao 레이어 인터페이스를 호출하여 데이터베이스 conch 테이블에서 모든 conch 정보를 찾고 List 컬렉션에 저장하고 List 컬렉션을 통과하여 게시자를 조립합니다. 사용자 정보, 날짜 형식 등을 수정하고 최종적으로 조합한 No.의 List 모음은 Controller로 반환되고 응답은 브라우저로 전송되어 Conch 관리 홈페이지로 이동하며 검색된 Conch 정보가 표시됩니다. c 태그를 통한 순회 시스템에서 사용하는 페이징 방식은 동일하므로 여기서는 설명하지 않는다. 핵심 코드는 다음과 같습니다.

int num = adminService.findConchNum(ckey);
	if(num%10 == 0){
    
    
		pageBean.setTotalPage(num/10);
	}else{
    
    
		pageBean.setTotalPage(num/10+1);
	}
	pageBean.setPage(page);
	pageBean.setMinPage(page*10-9);
	pageBean.setMaxPage(page*10);
List<Conch> list = adminService.findConch(pageBean, ckey);

여기에 이미지 설명 삽입

그림 5.29 Conch 관리 홈 페이지 인터페이스

소라 검색 : 소라 관리 홈페이지에서 소라의 수가 많은 것을 고려하여 문제점을 찾기 어려우므로 검색 기능을 설정 관리자는 소라에 있는 소라 내용에 키워드를 입력하여 소라 문제를 검색할 수 있음 디스플레이 검색에서 결과를 얻으면 검색 키워드가 쉽게 볼 수 있도록 빨간색으로 표시됩니다. 특정 페이지는 그림 5.30에 나와 있습니다. 백그라운드 코드에서 사용자가 키워드를 입력하고 검색을 클릭하면 브라우저가 컨트롤러의 지정된 메서드에 요청을 보내 수신하고 컨트롤러의 서비스 계층에서 해당 메서드를 호출하여 비즈니스 로직을 처리하고 퍼지 쿼리는 데이터베이스의 conch 테이블에서 해당 conch 정보를 조회하고 최종적으로 찾은 conch 정보를 Controller의 브라우저에 응답하고 통과하여 데이터를 표시합니다. 페이지의 c 태그. 시스템이 동일한 페이징 방법을 사용하기 때문에 자세히 설명하지 않겠습니다. 핵심 코드는 다음과 같습니다.

if(key == null){
    
    
		nkey = "1=1";
	}else{
    
    
		nkey = "CONCHBODY like '%"+key+"%'";
	}
	System.out.println(nkey);
	list = adminDao.findConchByKey(nkey, pageBean.getMinPage(), pageBean.getMaxPage());
list = FaceFormat.conchFormt(list);

여기에 이미지 설명 삽입

그림 5.30 Conch 검색 인터페이스

6장 시스템 테스팅

6.1 시스템 테스트 개요
코드 작성 단계에서 단위 테스트는 주로 코드에 결함이 있는지, 시스템 기능이 정상적으로 실행될 수 있는지, 소프트웨어가 예상한 목적을 달성할 수 있는지 여부를 테스트하는 데 주로 사용됩니다. 해당 모듈의 테스트 사례 블랙 박스 테스트 및 화이트 박스 테스트를 사용하여 시스템 기능을 개선하고 소프트웨어 코드를 최적화하며 소프트웨어 시스템의 품질을 향상시키면서 시스템에 결함이 있는지 테스트하는 단계.

6.2 테스트 케이스
6.2.1 사용자 등록 모듈
표 6-1 사용자 등록
여기에 이미지 설명 삽입

6.2.2 사용자 로그인 모듈
표 6-2 사용자 로그인
여기에 이미지 설명 삽입

6.2.3 사용자 정보 모듈 수정
표 6-3 사용자 정보 수정
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입

6.2.4 Weibo 모듈
표 6-4 사용자 Weibo 모듈
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입

6.2.5 사용자 친구 모듈
표 6-5 사용자 친구 모듈
여기에 이미지 설명 삽입

6.2.6 사용자 Conch 모듈
표 6-6 사용자 Conch 모듈
여기에 이미지 설명 삽입

6.2.7 관리자 모듈
표 6-7 관리자 모듈
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입

6.3 테스트 분석
생략

6.4 이 장의 요약
이 장에서 시스템의 테스트 케이스는 주로 시스템이 설계된 기능을 실현할 수 있는지 여부와 다양한 결함이 포함되어 있는지 여부를 테스트하기 위해 작성되며 테스트 케이스에 따라 시스템을 테스트한 결과 다음과 같은 것을 발견했습니다. 시스템에서 눈에 보이는 결함은 거의 없고 발견된 결함도 일부 해결되었지만 결함이 전혀 없는 시스템은 없기 때문에 시스템의 결함은 추후 사용 시 지속적으로 발견되어야 합니다.

제7장 요약
생략

참고 문헌
[1] Jia Wenxiao, Deng Junjie. Java 기반 웹 개발 기술 분석 [J]. 전자 테스트, 2016 [ 2] Li Chuanyang.
Weibo 분석 시스템의 설계 및 구현 [D]. Beijing University of Posts and Telecommunications, 2015
[3] Liu Yunchen. 웹사이트 설계 및 구축 [M]. Tsinghua University Press, 2008 [
4] Qin Yahua. WEB2.0 기반 마이크로블로그 웹사이트 설계 및 구현 [D]. Beijing University of Technology 2012
[5] Chen Ling, Xia Xun. Using Mybatis's Dynamic SQL to Realize Physical Paging[J]. Digital Technology and Application. 2011(11) [6]
Sa Shixuan, Wang Shan. Introduction to Database Systems (Third Edition) [M]. Beijing: Higher Education Press, 1998
[7] Java 기반 데이터베이스 액세스 기술 연구 [J] 과학 기술 정보 2009 (04) [
8] Zhang Feng Ajax 기술 및 J2EE 프레임워크 기반 웹 애플리케이션 연구 및 구현 [D] 중국 University of Geosciences 2008
[9] Java 멀티스레딩 기술 기반 네트워크 프로그래밍 [J] 컴퓨터 프로그래밍 기술 및 유지 관리 2009 (22)
[10] Li Wei. 작고 실용적인 인스턴트 네트워크 채팅 통신 시스템 설계 [J] 저널 of Yangtze University ( 자연 과학 판).2011(12)
[11] Zhong Ruiqi.Analysis and Design Based on Weibo Embedding Small Partner Reading Network [D]. 화남 기술 대학 2011 [
12] Written by Wang Shaofeng. Object- Oriented Technology UML Course [M].Tsinghua University University Press, 2004
[13] Xu Chunmian.웹사이트 개발 관련 문제 연구 [J]. Communication World.2015 (09) [14] Zhang Yu, Wang
Yinghui, Zhang Xiangnan. Spring 기반 MVC 프레임워크의 설계 및 구현[J].컴퓨터 공학.2010(04)
[15] Hu Yiqiao, Zhang Liping. J2EE 개발 모델 선택 [J]. 컴퓨터 시스템 응용 프로그램. 2002 (08) [16] Wang Liai. "Java 프로그래밍"
과정 웹사이트 설계 및 구현 [J]. 컴퓨터 지식 및 기술 . 2016(27)
[17] Rong Yandong.Mybatis Persistence Layer Framework에 대한 응용 연구[J].정보 보안 및 기술.2015(12)

감사의 말
생략


5. 소스 코드 다운로드:

이 프로젝트의 소스 코드와 논문은 다음과 같습니다. 필요한 친구는 클릭하여 다운로드할 수 있습니다. 링크가 실패하면 아래 카드를 클릭하여 코드를 스캔하여 직접 다운로드할 수 있습니다.

일련 번호 졸업 디자인을 위한 전체 리소스 세트(다운로드하려면 클릭)
이 프로젝트의 소스 코드 javaEE+SSM+MySql(소스코드+문서)_JAVAEE_SSM_BS 아키텍처 마이크로블로그 system.zip 기반의 BS 아키텍처 마이크로블로그 시스템 설계 및 구현

추천

출처blog.csdn.net/m0_66238867/article/details/125471185