[design de graduação em java] Projeto e implementação de sistema de microblog de arquitetura BS baseado em javaEE+SSM+MySql (tese de graduação + código-fonte do programa) - sistema de microblog de arquitetura BS

Projeto e implementação de sistema de microblog de arquitetura BS baseado em javaEE+SSM+MySql (tese de pós-graduação + código fonte do programa)

Olá a todos, hoje vou apresentar a vocês o projeto e implementação do sistema de microblog da arquitetura BS baseado em javaEE+SSM+MySql.Ao final do artigo, a tese e o endereço para download do código fonte deste projeto de graduação estão anexados. Amigos que precisam baixar o modelo PPT do relatório de abertura e o modelo PPT da defesa de tese, etc., podem entrar na página inicial do meu blog e conferir o método de download de autoatendimento na coluna inferior à esquerda.

Diretório de artigos:

1. Introdução do projeto

  1. Como plataforma para troca e compartilhamento de informações, o Weibo é particularmente importante nesta era da informação. As pessoas podem navegar e publicar informações à vontade para obter as consultas mais recentes e interessantes, e sua pontualidade e alta interação o tornam popular entre as pessoas. Com a popularidade do Weibo entre os internautas, os efeitos do microblog, como celebridades da Internet e palavras quentes da Internet, se formaram gradualmente. outras novas funções para melhorar a experiência do usuário e gerenciamento abrangente do Weibo e dos usuários em segundo plano. Em termos de tecnologia de implementação, a página usa JSP, javaScript, ajax e outras tecnologias para melhorar a interação entre a página do sistema e o usuário usa a linguagem Java em segundo plano, o servidor Tomcat é usado como servidor, a estrutura SSM é usada para realizar funções específicas e o banco de dados Oracle é usado para armazenar dados no banco de dados.
  2. 基于B/S架构的微博系统主要用功能包括:用户登录退出、用户信息维护、微博发布、好友关注、发布提问等等。本系统结构如下:
    (1)用户模块:
    实现登录功能
    实现用户登录的退出
    实现用户注册
    实现已注册用户信息的修改
    (2)微博模块:
    实现微博的发布、修改、查看功能;
    实现微博操作用户可以查看个人微博、好友微博、收藏微博等信息、对微博点赞、转发、收藏、评论、删除等
    (3)好友模块:
    实现用户关注、关注数+1、粉丝数+1、取消关注、拉黑用户、私信搜索用户等等;
    (4)海螺模块:
    实现发布问题、回答问题、积分增加等
    (5) 后台管理员模块
    实现管理员登录
    实现使用柱状图显示微博、用户、评、海螺、评论、回答等数据的统计结果
    用户搜索、用户封禁
    微博搜索、微博删除
    海螺搜索、海螺删除

2、资源详情

项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:28461个字77页
包含内容:整套源码+完整毕业论文+答辩PPT+任务书+辅导视频+运行截图


3、关键词:

微博;B/S架构;java;SSM框架;Oracle;

4、毕设简介:

提示:以下为毕业设计的简略介绍,项目源码及完整毕业论文下载地址见文末。

绪 论
省略

E Sina Weibo ainda continua seu próprio efeito de celebridade. Uma conta comum, sem a atenção dos fãs, é difícil para outras pessoas verem o Weibo. Se você precisar pedir ajuda no Weibo, não existe "celebridade grande V" É difícil de ser notado pelos outros. Se você deseja buscar ajuda no Weibo, precisa do Weibo para fornecer mais serviços. E este sistema permite que os usuários recompensem suas próprias perguntas usando a função de recompensa de pontos, para que mais usuários possam responder suas próprias perguntas e obter a ajuda de mais pessoas.

Capítulo 2 Introdução de tecnologias relacionadas

2.1 Visão geral da arquitetura Arquitetura
B/S (navegador/servidor, modo navegador/servidor): é um modo de estrutura de rede que usa o navegador como cliente, usa a tecnologia de navegador da Web gradualmente madura e combina as várias funções do navegador, use o navegador como o cliente complexo sob a arquitetura C/S (Cliente/Serviço) anterior, use a arquitetura C/S para unificar o cliente do usuário, concentre as principais funções do sistema de software no servidor, atualize o sistema e a manutenção seja mais simples Os desenvolvedores só precisam gerenciar servidores para atualizar e manter os sistemas de software.As muitas vantagens trazidas pela arquitetura B/S fazem dela a direção principal do futuro desenvolvimento da informatização.

Modo MVC: Model (Model), View (View) e Controller (Controller) são um padrão de design para desenvolvimento de software. Model é o principal responsável pela interação de dados da lógica de negócios separada, View é o principal responsável pelo envio e exibição de dados e Controller Principal responsável pela obtenção de requisições e encaminhamento de requisições.

Estrutura SSM (SpringMVC+Spring+Mybatis): A estrutura de projetos da Web composta por esses três frameworks de código aberto é um modelo MVC padrão. Spring MVC é responsável pelo encaminhamento de solicitações e gerenciamento de visualizações. Spring implementa gerenciamento de objetos de negócios e controle de transações. Mybatis serve como mecanismo de persistência.Comparado com o popular framework SSH (Struts+Spring+Hibernate) anterior, o SSM, como um framework leve, é mais adequado para o desenvolvimento de projetos de pequeno e médio porte.

2.2 Introdução às principais tecnologias
Tecnologia front-end:
1. JSP (Java Server Pages): páginas HTML embutidas com códigos java, essencialmente um servlet, que implementa a extensão de códigos java na sintaxe de htmld, usando o formato <% %> .

2. JavaScript: É uma linguagem de script fracamente tipada, que consiste em três partes: ECMAScript descreve os objetos básicos e a sintaxe de JavaScript, Document Object Model (DOM) e Browser Object Model (BOM).

3. Ajax (Javascript e XML assíncronos): JavaScript e XML assíncronos, realiza interação assíncrona entre a frente e o verso e atualiza parcialmente algum conteúdo da página sem recarregar a página inteira.

Tecnologia de fundo:
1.java: Uma linguagem de programação orientada a objetos, as principais características incluem: (1) Simplicidade: Abandonando a sintaxe complexa e herança múltipla de ponteiros em C++, os desenvolvedores não precisam prestar atenção à otimização subjacente, só precisam prestar atenção à lógica de negócios é bom, (2) orientado a objetos, para programadores, eles só precisam prestar atenção aos dados correspondentes e ao método de processamento de dados e não precisam escrever código estritamente de acordo com o processo, porque a linguagem java é orientada a objetos, então também é Tem as três principais características de orientação a objetos, herança, encapsulamento e polimorfismo, (3) plataforma cruzada, a plataforma cruzada da linguagem java também é a plataforma cruzada da JVM (máquina virtual java). Depois que o arquivo Java é compilado, ele não gera diretamente o arquivo binário que a máquina executa diretamente, mas o compila em um arquivo de classe. A JVM gera o arquivo binário do sistema correspondente de acordo com a JVM em diferentes sistemas operacionais. só precisa ser compilado uma vez e pode ser executado em diferentes plataformas.

2. SpringMVC: É um módulo fornecido pelo framework Spring, que simplifica o desenvolvimento Web implementando o padrão MVC para separar dados, negócios e apresentação. Como outros frameworks MVC, ele é orientado a requisições e controla o encaminhamento.Seu Servlet principal é o DispatcherServlet, que é o front controller, que é usado para distribuir requisições ao controller.Ele é totalmente integrado com o framework Spring. Isso também torna o SpringMVC um framework MVC muito popular.

3. Spring: Uma estrutura leve de desenvolvimento java, a estrutura Spring possui uma arquitetura em camadas, para que você possa usar qualquer parte independente do Spring. E sua arquitetura ainda é inerentemente estável. O Spring fornece soluções para cada camada de aplicativos J2EE, executando em cada camada da arquitetura de três camadas, mas o Spring ainda é muito compatível com outros frameworks. Este projeto usa principalmente o IOC no Spring (Inversão de Control) e módulos AOP (Aspect-Oriented Programming).

4. Mybatis: É uma estrutura leve de código aberto que simplifica a camada de persistência Java. E suporta o annotation Mapper, o Mybatis elimina a maior parte do código JDBC, facilitando o processo de persistência de objetos Java no banco de dados. Comparado com outros frameworks de persistência Java, o Mybatis tem a vantagem de eliminar muita redundância JDBC. O resto do código , instruções Sql fáceis de aprender e visíveis fornecem integração com Spring e apresentam melhor desempenho.

2.3 Ferramenta de desenvolvimento
Servidor Tomcat: é um servidor de aplicações web, é leve e de código aberto, é a primeira escolha para projetos web de pequeno e médio porte e desenvolvimento, depuração e aprendizado.

Oracle Database (Oracle Database): é um banco de dados relacional desenvolvido pela Oracle Corporation.É o primeiro banco de dados relacional para aplicações comerciais.O sistema é fácil de usar, poderoso e altamente portátil. É adequado para vários ambientes grandes, médios e pequenos.Na era do big data, como um banco de dados distribuído, ele realiza a função de processamento distribuído, com funções completas de gerenciamento de dados, bancos de dados relacionais completos e funções de processamento distribuído.

Ferramenta de desenvolvimento Eclipse: uma plataforma de desenvolvimento extensível baseada em código aberto java, que inclui não apenas o ambiente de desenvolvimento integrado java, mas também o ambiente de desenvolvimento de plug-ins, como SVN, CVS e outras equipes para desenvolver plug-ins.

2.4 Resumo deste capítulo
Este capítulo apresenta principalmente algumas das principais tecnologias utilizadas no projeto de desenvolvimento, a arquitetura e os padrões de design utilizados no projeto, as principais tecnologias de framework utilizadas no projeto, a tecnologia front-end e os métodos de exibição utilizados no exibição do projeto no lado do navegador, A linguagem de desenvolvimento usada pelo código de fundo, a tecnologia do servidor usada, o banco de dados usado pela camada de persistência de dados, etc., e as ferramentas de desenvolvimento usadas para o desenvolvimento são apresentadas no final deste capítulo.

Capítulo Três Análise de Requisitos do Sistema

3.1 Análise de viabilidade
3.1.1 Viabilidade técnica
Em termos de tecnologias existentes, a fim de unificar o cliente e eliminar a complexidade causada por upgrades de versão e manutenção, é totalmente viável adotar uma arquitetura B/S madura na realização do projeto. Em termos de linguagens e frameworks de desenvolvimento, os poderosos sistemas java e j2ee permitem aos desenvolvedores construir projetos web com cuidado, e uma série de frameworks de código aberto fornecem uma base sólida para a viabilidade do projeto. O servidor Tomcat é usado, é suficiente para suportar o uso normal deste pequeno projeto, e a tecnologia de front-end em constante desenvolvimento e a estrutura de front-end podem criar belas páginas de front-end e melhorar a experiência e a interação do usuário. Isso é completamente viável no A tecnologia de exibição de página do projeto Um poderoso banco de dados relacional é A persistência dos dados do projeto fornece um suporte forte. Para resumir, os sistemas java e j2ee cada vez mais maduros, estrutura e servidor java totalmente de código aberto, banco de dados relacional poderoso e o uso de tecnologia front-end da Web para fornecer páginas de interação com o usuário, tornando o projeto tecnicamente viável.

3.1.2 Viabilidade econômica
Omitir

3.1.3 Viabilidade Operacional
Omitir

3.2 Análise de requisitos
3.2.1 Requisitos gerais do sistema
O sistema Weibo é composto principalmente pelo módulo de usuário front-end e o módulo de gerenciamento de segundo plano. Quando o usuário entra na página inicial, ele pode optar por fazer login ou não. Ao fazer login, ele pode fazer login com uma conta existente ou registrar uma nova conta. Quando o usuário não está conectado, o Weibo popular atualizado recentemente é exibido na página inicial, e o usuário conectado pode ver o Weibo atualizado recentemente do usuário que ele segue na página inicial.

Os usuários não logados podem apenas pesquisar e visualizar informações do Weibo e visitar as páginas iniciais do usuário. Os usuários logados podem modificar suas informações básicas, como assinatura, sexo etc., após fazer login no sistema, e também podem modificar senhas e informações confidenciais depois de verificar as informações do usuário. Além de modificar o avatar e a senha do usuário, editar sua página inicial pessoal, curtir, comentar, marcar e outras funções no Weibo, você também pode seguir/deixar de seguir usuários, bloquear usuários, usuários de bate-papo privado e outras operações.

O administrador de segundo plano pode visualizar todos os dados do sistema, incluindo usuários, microblogs, comentários, conchas, quantidade total de respostas, banco de dados mais recente e quantidade de dados na última semana. As funções específicas incluem gerenciamento de informações ruins do Weibo e contas ruins, exclusão e restauração do Weibo, comentários do Weibo, concha, respostas e outras informações e bloqueio de contas ruins.

Módulo de pesquisa de microblog: os usuários podem inserir palavras-chave para encontrar microblogs ou usuários correspondentes.
Módulo de publicação de microblog: o usuário clica em postar e adiciona o conteúdo que deseja enviar no conteúdo. Você pode escolher emoticons ou inserir imagens, mas há um limite para o número de caracteres inseridos, e também pode inserir um imagem ao mesmo tempo.

Módulo de comentários do Weibo, os usuários podem visualizar comentários do Weibo, postar comentários do Weibo, etc.

Módulo Magic Conch: Os usuários podem publicar uma concha mágica, que é usada principalmente para registrar várias questões levantadas pelos usuários, e outros usuários podem visualizar e responder a perguntas. Quando a resposta do entrevistado é adotada pelo questionador, o entrevistado pode adicionar sua própria Conch Points, diferentes pontos de concha têm diferentes títulos de concha.

Módulo de pontos: Os usuários podem aumentar seus pontos fazendo login todos os dias, postando no Weibo, realizando tarefas, etc. Pontos diferentes têm títulos diferentes. Os pontos do módulo concha mágica têm títulos diferentes, e os títulos são exibidos atrás do nome do usuário.

Módulo amigo: o usuário pode visualizar outros usuários no sistema, encontrar seus usuários favoritos e segui-los. Depois de segui-los, pode visualizar os usuários que segue no módulo amigo, bem como o Weibo recente e outras informações divulgadas por amigos. Eles também pode enviar mensagens privadas para amigos, enviar Envie uma mensagem privada para um amigo.

3.2.2 Requisitos do Diagrama de Casos de Uso
1. Ao entrar no sistema, o usuário pode optar por fazer o login ou se cadastrar como usuário, caso esqueça a senha, pode redefinir a senha através da pergunta de segurança.
insira a descrição da imagem aqui

Figura 3.1 Diagrama de caso de uso inicial do usuário

2. Após o login do usuário, ele pode gerenciar as informações pessoais básicas do usuário, modificar as informações básicas do usuário e modificar as informações confidenciais do usuário. Modifique o avatar do usuário e outras funções.
insira a descrição da imagem aqui

Figura 3.2 Diagrama de caso de uso de gerenciamento de informações do usuário

3. Sistema de gerenciamento de microblog do usuário, quando o usuário faz login no sistema, ele pode publicar o microblog na página inicial e pesquisar as informações do microblog de palavras-chave no conteúdo do microblog por meio de palavras-chave. Veja o Weibo, incluindo a visualização do Weibo pessoal, amigo Weibo e Weibo recomendado.
insira a descrição da imagem aqui

Figura 3.3 Diagrama de caso de uso de gerenciamento do Weibo

4. Gerenciamento de comentários, o gerenciamento de comentários depende do módulo Weibo, os usuários podem visualizar comentários no Weibo, postar comentários nas informações do Weibo e excluir seus próprios comentários.
insira a descrição da imagem aqui

Figura 3.4 Diagrama de caso de uso do gerenciamento de comentários do Weibo

5. Gerenciamento de conchas. Após o login, os usuários podem postar perguntas sobre conchas no módulo de conchas. Ao postar perguntas, eles podem escolher o número de pontos de recompensa e reduzir seus próprios pontos. Os usuários podem participar respondendo às perguntas de conchas de outras pessoas. Quando a resposta é aceito, você pode obter o número de pontos recompensados ​​pelo usuário.
insira a descrição da imagem aqui

Figura 3.5 Diagrama de caso de uso do gerenciamento do Conch

6. Gerenciamento de amigos, quando o usuário faz login, ele pode seguir o sistema para recomendar amigos ou pesquisar usuários, visualizar a página inicial do usuário, adicionar ou deixar de seguir usuários, enviar mensagens privadas para usuários ou bloquear usuários.
insira a descrição da imagem aqui

Figura 3.6 Diagrama de caso de uso de gerenciamento de amigos

7. Notificação de mensagem, quando o usuário presta atenção, comentários do Weibo, curtidas e favoritos, a notificação de mensagem é chamada.
insira a descrição da imagem aqui

Figura 3.7 Diagrama de caso de uso de gerenciamento de amigos

8. Administrador: Os administradores podem gerenciar os usuários do Weibo fazendo login no sistema, banindo e cancelando contas de usuários mal-intencionados e também podem restaurar o status do usuário. Ao mesmo tempo, os administradores também podem gerenciar as informações do Weibo, como excluir o Weibo, restaurar Excluir e recuperar comentários de microblog excluídos por administradores, etc., conforme mostrado na Figura 3.2.
insira a descrição da imagem aqui

Figura 3.8 Diagrama de caso de uso do administrador

Capítulo 4 Projeto de função do sistema
4.1 Análise de classe do sistema
4.1.1 Classes de entidade
As classes de entidade são usadas principalmente para transferir dados, principalmente incluindo User, Friend, PointAction, PointRecord, Weibo, WeiboCollect, WeiboComm, WeiboLike, WeiboTrans, etc. informações, a categoria Weibo inclui as informações básicas do Weibo e também inclui a categoria de usuário da entidade, a categoria de amigo inclui o número do amigo, a hora de criação do amigo e a categoria do usuário de ambas as partes, etc. A classe de coleção de microblog inclui atributos de coleção, como a classe de microblog favorita e id de usuário, a classe de comentário de microblog inclui atributos como classe de microblog, classe de usuário e conteúdo de comentário, e a classe de encaminhamento de microblog inclui atributos como classe de usuário, classe de microblog e tempo de encaminhamento, a categoria semelhante ao Weibo inclui atributos como categoria Weibo, categoria de usuário e tempo semelhante. O relacionamento de associação de classe entre as classes de entidade é mostrado na Figura 4.1.
insira a descrição da imagem aqui

Figura 4.1 Diagrama de classe da camada Bean

4.1.2 A classe do controlador
inclui quatro classes JAVA MainController, WeiboController, FrendController e AdminController na camada do controlador. No framework SpringMVC, é usado principalmente para receber a solicitação enviada pelo navegador ao servidor e processar os dados e controlar o encaminhamento do pedido Os dados obtidos são respondidos ao navegador. MainController é usado principalmente para receber solicitações de formulário ou link enviadas de páginas relacionadas ao usuário e passar os parâmetros solicitados para o método correspondente no controlador, transportar a resposta de dados para o navegador e exibir os dados, atributos e métodos específicos no navegador lado Como mostrado na Figura 4.2.
insira a descrição da imagem aqui

Figura 4.2 Diagrama de classe do controlador de usuário

O WeiboController é usado principalmente para receber solicitações de formulário ou link enviadas de páginas Weibo relevantes, passar os parâmetros solicitados para os métodos correspondentes no Controlador, obter os dados retornados na camada de processamento de negócios e enviar a resposta de dados ao navegador, para exibir dados no lado do navegador, as propriedades e métodos específicos são mostrados na Figura 4.3.
insira a descrição da imagem aqui

Figura 4.3 Diagrama de classe do controlador Weibo

FriendController é usado principalmente para receber solicitações de formulário ou link enviadas de páginas relacionadas a amigos e passar os parâmetros solicitados para o método correspondente no controlador, obter os dados retornados na camada de processamento de negócios e transportar a resposta de dados para o navegador, para exibir dados no lado do navegador, as propriedades e métodos específicos são mostrados na Figura 4.4.
insira a descrição da imagem aqui

Figura 4.4 Diagrama de classes do Friend Controller

O AdminController é usado principalmente para receber solicitações de formulário ou link enviadas de páginas relevantes do administrador e passar os parâmetros solicitados para o método correspondente no controlador, obter os dados retornados na camada de processamento de negócios e transportar a resposta de dados para o navegador O navegador exibe dados no lado do navegador.As propriedades e métodos específicos são mostrados na Figura 4.5.
insira a descrição da imagem aqui

Figura 4.5 Diagrama de Classe do Controlador Admin

4.1.3 Classe de lógica de negócios
A camada de serviço inclui principalmente quatro interfaces de serviço e suas classes de implementação, incluindo IUserService usado para lidar com os negócios do usuário, como registro do usuário, login e modificação de informações pessoais, conforme mostrado na Figura 4.6. O IWeiboService é usado para lidar com negócios relacionados ao Weibo, como pesquisar no Weibo, publicar o Weibo, excluir o Weibo e operações relacionadas no Weibo, como curtidas e comentários, conforme mostrado na Figura 4.7. O IFriendService é usado para lidar com negócios relacionados aos amigos do usuário, como curtir, cancelar curtir, mensagem privada, lista negra e outras funções, conforme mostrado na Figura 4.8. O IAdmoinService é usado para lidar com negócios relacionados a administradores, como login de administrador, exibição de gráficos, gerenciamento de usuários, gerenciamento de Weibo e funções de gerenciamento de conchas, conforme mostrado na Figura 4.8.
insira a descrição da imagem aqui

Figura 4.6 Diagrama de classe de processamento de negócios do usuário

insira a descrição da imagem aqui

Figura 4.7 Diagrama de classe de processamento de negócios do Weibo
insira a descrição da imagem aqui

Figura 4.8 Diagrama de classe do controlador Weibo

4.1.4 Classe de interação do banco de dados
Como o sistema adota a estrutura de persistência MyBatis, os desenvolvedores não precisam se preocupar com o código JDBC específico entre o banco de dados e o banco de dados, mas apenas processar a lógica de negócios, portanto, eles precisam apenas declarar métodos em a interface da camada Dao sem escrever A classe de implementação da interface implementa o método configurando o arquivo de configuração correspondente e grava a instrução SQL no método de interface correspondente no arquivo de configuração para interagir com o banco de dados.

4.2 Design de negócios chave
4.2.1 Sistema de login
insira a descrição da imagem aqui

Figura 4.9 Diagrama de sequência de login do sistema

Depois que o usuário entra na página inicial, ele pode selecionar um usuário registrado à esquerda ou fazer login no sistema à direita. No módulo de registro, o usuário insere o endereço de e-mail do usuário, senha, apelido e outras informações. Quando o usuário inserir o endereço de e-mail, o endereço de e-mail inserido pelo usuário será enviado para segundo plano através do Ajax. Verifique se o endereço de e-mail do usuário foi registrado. Se estiver registrado, o usuário será solicitado na página que o endereço de e-mail foi registrado Após inserir as informações básicas e clicar em Cadastrar, as informações cadastrais do usuário serão salvas.

Função de login, quando o usuário insere o endereço de e-mail e a senha, se o usuário clicar na próxima senha de login automático, depois de clicar no login, é julgado se o horário de login atual do usuário e o último horário de login são no mesmo dia, caso contrário , adicione o tempo de login para os pontos do usuário e vá para a página inicial do Weibo.

4.2.1 Sistema de Informação do Usuário
insira a descrição da imagem aqui

Figura 4.10 Diagrama de sequência de informações de modificação do usuário

Informações básicas do usuário: Após clicar em configurações de conta pessoal na página inicial do sistema, ele pulará para a página de modificação das informações básicas do usuário, onde o usuário poderá modificar essas informações básicas e salvar as informações modificadas no banco de dados.

Alterar senha: Clique em Alterar senha na página de perfil do usuário, pule para a página de alteração de senha, o usuário pode inserir a senha atual do usuário, o sistema julga se a senha está correta, se a senha estiver incorreta, ele exibirá o rosto para -face erro de senha, se a senha estiver correta, o usuário pode inserir uma nova senha e clicar em Modificar para atualizar a senha modificada no banco de dados.

Modificar avatar do usuário: Clique para modificar o avatar no perfil do usuário, pule para a página de modificação do avatar, o usuário seleciona o arquivo do avatar, clica em carregar e o avatar do usuário é salvo no servidor. avatar é o avatar padrão do sistema, caso contrário, exclua o usuário. Para a imagem do avatar anterior, clique em Modificar para salvar o endereço do avatar modificado no banco de dados.

Modificar senha: o usuário primeiro precisa preencher a resposta de acordo com a pergunta de segurança definida anteriormente. Se a resposta de segurança estiver errada, o usuário será avisado de que a resposta de segurança está errada. Se a resposta de segurança estiver correta, o usuário pode inserir uma nova pergunta e resposta de segurança. Clique em Modificar para salvar a nova pergunta e resposta de segurança do usuário.

4.2.2 Módulo Weibo
insira a descrição da imagem aqui

Figura 4.11 Diagrama de sequência de login do sistema

Publicar Weibo: os usuários podem publicar o Weibo na página inicial, inserir emoticons nas informações do Weibo ou optar por inserir uma imagem. no controlador de fundo, salve as informações da imagem no servidor, salve apenas o caminho da imagem no banco de dados e, finalmente, salve as informações do Weibo no banco de dados.

Pesquise no Weibo: os usuários podem inserir o conteúdo mencionado no Weibo na caixa de pesquisa na página inicial para pesquisar, e o sistema consultará as informações relacionadas ao Weibo no banco de dados por meio de consultas difusas. Exiba as páginas pesquisadas na página e exiba as palavras-chave em vermelho.

Operações do Weibo: os usuários podem visualizar o Weibo pessoal, amigo Weibo, Weibo favorito e outras informações, como, repostagem, favorito, comentário, exclusão, etc. no Weibo.

4.2.3
Função Follow do módulo Friend: Ao fazer login no sistema, o usuário pode escolher o usuário a seguir entre os usuários recomendados no lado direito da página, ou pesquisar usuários através da função de pesquisa na página e seguir os usuários pesquisados. Depois de seguir o usuário, a atenção pessoal +1 e o número de fãs do usuário seguido +1.

Deixar de seguir: e seguir o tipo de função, clique em meus amigos na barra de navegação, verifique meus amigos na página inicial de meus amigos, você pode verificar todos os amigos que sigo, o número de amigos e suas informações pessoais, clicando em Deixar de seguir correspondente pode deixar de seguir o usuário. Depois de deixar de seguir o usuário, o número de seguidores pessoais é -1 e o número de seguidores do usuário seguido é -1.

Bloqueando usuários: Isso é para modificar o status do registro correspondente na tabela de amigos, e as mensagens privadas e as informações do Weibo publicadas pelos usuários bloqueados não serão vistas pelos usuários bloqueados.

Mensagens privadas: Você pode visualizar o número de mensagens privadas não lidas do usuário conectado no momento no usuário recomendado na página. O número de mensagens privadas não lidas passará pelo banco de dados para todas as mensagens privadas de todos os destinatários do atual log- no usuário e o status da informação é não lido. O valor obtido é exibido na página inicial.

Enviar mensagem privada: O usuário primeiro seleciona o usuário a enviar, insere as informações da mensagem privada a ser enviada, podendo inserir emoticons na mensagem privada. Após clicar em enviar, as informações da mensagem privada serão enviadas ao usuário correspondente. Ao mesmo tempo, aumente o número de mensagens privadas não lidas que solicitam ao usuário.

Pesquisar usuários: Na página de pesquisa de usuários, os usuários podem inserir palavras-chave de apelidos de usuários para pesquisar usuários relevantes, exibir os usuários consultados na página e marcar as palavras-chave inseridas pelos usuários em vermelho.

Página inicial do usuário: Na página, clicar no nome de qualquer usuário ou na foto do perfil irá pular para a página inicial pessoal do usuário correspondente. A página inicial pessoal do usuário exibe as informações pessoais do usuário e o Weibo mais recente do usuário, organizado em ordem cronológica inversa, e o usuário também pode operar curtidas, encaminhamentos, comentários e favoritos do Weibo.

4.2.4
Publicação do módulo Conch: o usuário entra na página inicial do Conch clicando na concha mágica na barra de navegação. No topo da página do Conch está a caixa de perguntas para publicação do conch, os botões de emoticons que podem ser inseridos abaixo e os pontos de recompensa para as perguntas, e a barra de navegação no meio Você pode optar por visualizar o último lançamento, resolvido, a ser resolvido, minha concha diferentes condições de filtro.

Visualizar perguntas sobre o Conch: Quando o usuário clica em qualquer pergunta sobre o Conch, o sistema pula para uma página que exibe as informações específicas do Conch. O nome do usuário, nome do usuário, data de lançamento, pergunta sobre o Conch, pontos de recompensa, status da pergunta, etc. usuário de postagem são exibidos na parte superior e exibidos no meio Todas as informações de resposta à pergunta, nome de usuário da pessoa que respondeu, título, conteúdo da resposta, data da resposta, se é aceita, etc.

Responder a perguntas de concha: Você pode responder a perguntas de concha na parte inferior da página de informações detalhadas de perguntas de concha, inserir a resposta de resposta na caixa de entrada, inserir informações de emoticon etc. e clicar em responder para salvar as informações de resposta no banco de dados.

Aceite a resposta para a pergunta: Na página inicial do Conch Questions, os usuários podem pular para a página Conch Questions postada pelo usuário clicando em My Conch Questions. Na página Conch Questions postada por eles mesmos, eles podem escolher a resposta que acham que é a mais correta Após clicar em Aceitar Modificar o status da concha, a resposta aceita passa a ser a resposta aceita, e os pontos de concha do adotante são aumentados.

4.2.5 Módulo administrador em segundo plano
Login do administrador: Os administradores podem clicar em login do administrador na página de login para pular para a página de login do administrador. Depois que o administrador inserir as informações da conta e da senha, se o nome de usuário e a senha estiverem corretos, ele irá para a página inicial do administrador. Avise se estiver errado.

Página inicial do administrador: A barra de navegação é exibida na parte superior da página inicial do administrador. Em termos de conteúdo da página, quatro gráficos são usados ​​para exibir o número total de Weibo, usuários, comentários, concha, comentários, respostas, etc. o mês atual. O gráfico de barras abaixo Ele exibe o número dos últimos 7 dias a partir de hoje.

Página inicial de gerenciamento de usuários: Exiba a barra de navegação na parte superior da página e o conteúdo da página exibe todos os IDs de usuário, endereços de e-mail, apelidos, datas de registro, últimas datas de login e status do usuário. Considerando o grande número de usuários e a conveniência de pesquisando, os 10 dados do usuário são exibidos na página por vez e uma função de pesquisa do usuário é adicionada ao mesmo tempo. Os usuários podem pesquisar usuários após inserir as palavras-chave do apelido do usuário e oferecer suporte a consultas vagas. Pesquisar usuários: Digite as palavras-chave no apelido do usuário na página de gerenciamento de usuários para pesquisar usuários e o sistema exibirá a parte das informações do usuário obtidas em que o apelido é a palavra-chave inserida em vermelho.

Banimento do usuário: O administrador pode clicar no botão de banimento na coluna de operação da página de gerenciamento de usuários para banir o usuário infrator. O administrador pode inserir o número de dias para o banimento. Antes dessa data, o usuário não pode fazer login normalmente e o o administrador pode Desbloquear usuários com antecedência clicando em Desbloquear.

Página inicial de gerenciamento do Weibo: os administradores clicam em gerenciamento do Weibo na barra de navegação, o sistema irá para a página de gerenciamento do Weibo do usuário, exibindo as informações do Weibo usadas no sistema, os administradores também podem inserir palavras-chave no conteúdo do Weibo Pesquisar no Weibo e, ao mesmo tempo , você pode excluir o Weibo com informações incorretas ou restaurar o Weibo excluído.

Pesquisa de microblog: Os administradores podem pesquisar microblogs com a palavra-chave no conteúdo do microblog inserindo palavras-chave no conteúdo do microblog, e as palavras-chave no conteúdo do microblog pesquisado serão marcadas em vermelho.

Exclusão do Weibo: Na página de gerenciamento do Weibo, o administrador pode julgar se o Weibo é ilegal ou não de acordo com o conteúdo do Weibo. Se as informações do Weibo contiverem informações incorretas, o administrador pode excluir o Weibo por meio do botão excluir na barra de operação Você também pode restaurar os microblogs excluídos.

Página inicial do Conch Management: O administrador clica em Conch Management na barra de navegação para pular para a página Conch Management. A barra de navegação está na parte superior da página e o conteúdo da página exibe todas as informações sobre conchas, a caixa de pesquisa de conchas e a caixa de paginação abaixo, informações da concha Inclua o número, o nome do editor, sobre o que é a concha, a data em que foi publicada, o status da concha e quais ações ela pode tomar.

Pesquisa de conchas: Na página inicial do Gerenciamento de conchas, considerando o grande número de conchas, é difícil encontrar o problema, então a função de pesquisa é configurada. O administrador pode inserir as palavras-chave no conteúdo da concha na caixa de pesquisa de conchas para pesquisar para o problema da concha Na pesquisa de exibição Quando os resultados forem obtidos, as palavras-chave da pesquisa serão marcadas em vermelho para facilitar a visualização.

4.3 Projeto do banco de dados
4.3.1 Visão geral
A tabela do banco de dados do sistema de microblog inclui principalmente:
1. Tabela do usuário: usada para armazenar informações pessoais do usuário, como número, apelido, nome e senha. Para caixa de correio e outras informações, use o número do usuário como chave primária, conforme mostrado na Tabela 4-1.

2. Tabela de seguidores do microblog: usada para salvar as informações do seguidor do usuário, com o ID do seguidor como chave primária, conforme mostrado na Tabela 4-2.

3. Tabela Weibo: usada para salvar informações do Weibo, como horário de lançamento do Weibo, conteúdo do Weibo, curtidas do Weibo, retweets, número de favoritos etc., com o número do Weibo como chave primária, conforme mostrado na Tabela 4-3.

4. Tabela de coleta do microblog: utilizada para salvar as informações do microblog coletadas pelos usuários, como número do microblog, horário da coleta etc., tendo como chave primária o número da coleta, conforme Tabela 4-4.

5. Tabela de comentários: salve as informações do comentário do Weibo, como ID do comentarista, data do comentário, conteúdo do comentário, etc., com o ID do comentário como chave primária, conforme mostrado na Tabela 4-5.

6. Tabela de pontos: usada para salvar a forma como os usuários obtêm pontos, como obtenção de pontos por meio de login diário e postagem no Weibo, etc., com o número do ponto como chave primária, conforme mostrado na Tabela 4-6.

7. Tabela semelhante: usada para salvar as informações semelhantes do Weibo, incluindo principalmente o número semelhante, o número semelhante, o número semelhante do Weibo e outras informações. Use o mesmo número como a chave primária, conforme mostrado na Tabela 4-7.

8. Tabela de fluxo de pontos: utilizada para salvar as informações dos pontos obtidos pelos usuários, incluindo principalmente número do ponto, número do usuário, data de aquisição e outras informações, tendo como chave primária o número do ponto, conforme Tabela 4-8.

9. Tabela de encaminhamento: utilizada para salvar as informações encaminhadas pelo usuário, principalmente incluindo número de encaminhamento, pessoa que fez o encaminhamento, número do Weibo e outras informações, tendo como chave primária o número de encaminhamento, conforme Tabela 4-9.

4.3.2 Projeto conceitual
Um usuário pode postar vários microblogs, portanto, há um relacionamento um-para-muitos entre a tabela do usuário e a tabela do microblog, conforme mostrado na Figura 4.12.
insira a descrição da imagem aqui

Figura 4.12 Correspondência entre a tabela do usuário e a tabela do Weibo

Um microblog pode corresponder a várias curtidas, encaminhamentos, favoritos e comentários, portanto, há uma correspondência um-para-muitos entre a tabela do microblog e as tabelas de favoritos, curtidas, encaminhamentos e favoritos, conforme mostrado na Figura 4.13.
insira a descrição da imagem aqui

Figura 4.13 Correspondência entre a tabela Weibo e a tabela de operação Weibo

Um usuário pode postar várias conchas e cada pergunta de concha pode corresponder a vários comentários. Como mostrado na Figura 4.14.
insira a descrição da imagem aqui

Figura 4.14 Correspondência entre a tabela de usuário e a tabela de concha

4.3.3 Tabela do banco de dados
1. Tabela do usuário: nome da tabela do banco de dados USER_TAB, nome da sequência de referência SEQ_USER.

Tabela 4-1 Tabela do usuário
insira a descrição da imagem aqui

2. Tabela de preocupação: tabela de banco de dados FRIEND_TAB, nome da sequência de referência SEQ_FRIEND.

Tabela 4-2 Formulário de preocupação
insira a descrição da imagem aqui

3. Tabela Weibo: o nome da tabela do banco de dados é WEIBO_TAB e o nome do índice de referência é SEQ_WEIBO.

Tabela 4-3 Tabela Weibo
insira a descrição da imagem aqui

4. Tabela de coleta: nome da tabela do banco de dados COLLECT_TAB, nome do índice de referência SEQ_COLLECT.

Tabela 4-4 Tabela de coleta
insira a descrição da imagem aqui

5. Tabela de comentários: nome da tabela do banco de dados COMM_TAB, nome do índice de referência SEQ_COMM.

Tabela 4-5 Formulário de comentário
insira a descrição da imagem aqui

6. Tabela integral: nome da tabela do banco de dados INTEGRAL_TAB, nome do índice de referência SEQ_INTEGRAL.

Tabela 4-6 Tabela integral
insira a descrição da imagem aqui

7. Tabela semelhante: nome da tabela do banco de dados LIKE_TAB, nome do índice de referência SEQ_LIKE.

Tabela 4-7 Tabela semelhante
insira a descrição da imagem aqui

8. Tabela de fluxo integral: nome da tabela do banco de dados RECORD_TAB, nome do índice de referência SEQ_RECORD.

Tabela 4-8 Medidor de Fluxo Integral
insira a descrição da imagem aqui

9. Tabela de encaminhamento: nome da tabela do banco de dados TRANS_TAB, nome do índice de referência SEQ_TRANS.

Tabela 4-9 Tabela de encaminhamento
insira a descrição da imagem aqui

Capítulo 5 Realização da função do sistema

5.1 Sistema de login
Na página de registro de login do sistema, quando o usuário entrar na caixa de correio, a caixa de correio será enviada para o controlador de segundo plano através do Ajax e o método correspondente na camada de serviço será chamado. A interface da camada Dao é chamada no serviço método para saber se a caixa postal do usuário foi cadastrada. Caso esteja cadastrada, será exibida na página através de javascript front-end para avisar ao usuário que a caixa postal foi cadastrada. Após inserir as informações básicas e clicar em registrar, o as informações cadastrais inseridas pelo usuário serão enviadas para o controlador de segundo plano através do navegador, e o controlador controlará a solicitação. Encaminhe a página e passe as informações cadastrais do usuário para o Serviço, inicialize algumas informações básicas do usuário no Serviço, como como avatar padrão, status padrão, inicializar pontos do usuário e outras operações, montar a fonte de dados do usuário e chamar o método Dao layer para salvar as informações de registro do usuário, conforme mostrado na figura 5.1 mostrada. O código principal é o seguinte:

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); 	//保存用户注册信息

Função de login, se você clicar na próxima senha de login automático, depois de clicar em login, primeiro passe o nome de usuário e as informações de senha para a camada de serviço para processamento de negócios e, em seguida, chame a interface da camada Dao para julgar se o endereço de e-mail e as informações de senha estão corretos . Se eles estiverem corretos e clique na próxima vez Faça login, salve o nome da caixa de correio e a senha no cookie do navegador, salve o usuário conectado na sessão e verifique se o horário de login atual e o horário do último login do usuário estão no mesmo dia no serviço que processa o login do usuário, se não for no mesmo dia, adicione pontos de login para usuários, modifique o número de pontos no banco de dados do usuário e pule para a página inicial do Weibo, conforme mostrado na Figura 5.2. O código principal é o seguinte:

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);	//更改用户信息
			}
}

insira a descrição da imagem aqui

Figura 5.1 Login do usuário e interface de registro
insira a descrição da imagem aqui

Figura 5.2 Interface da página inicial do Weibo

5.2 Sistema de informações do usuário
Informações básicas do usuário: Conforme mostrado na Figura 5.3, quando o usuário clicar para modificar, o navegador enviará o formulário do formulário, enviará uma solicitação com as informações básicas do usuário ao controlador do SpringMVC para receber a solicitação e montar o dados no formulário de formulário em um objeto de usuário, passado como um parâmetro para o método correspondente na camada de serviço para processamento, chamando a interface da camada Dao para modificar as informações básicas do usuário e modificar as informações do objeto de usuário na sessão no servidor atual. O código principal é o seguinte:

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

insira a descrição da imagem aqui

Figura 5.3 Modifique a interface de informações básicas do usuário

Alterar senha: clique em alterar senha na página de perfil do usuário, ele irá pular para a página de alteração de senha, conforme mostrado na Figura 5-4, o usuário pode inserir a senha atual do usuário, a página inicial envia uma solicitação assíncrona por meio do Ajax e o plano de fundo controlador recebe a solicitação, se a senha atual do usuário é obtida do banco de dados está correta. Se a senha estiver incorreta, a página inicial solicitará dinamicamente ao usuário por meio de JavaScript que a senha está errada. Se a senha estiver correta, o usuário pode inserir uma nova senha e confirmar a nova senha. Clique em Confirmar para modificar O navegador envia o formulário de formulário e passa a nova senha do usuário para o método correspondente na camada de serviço em segundo plano. altere a senha do usuário no banco de dados e as informações do usuário na sessão do servidor. O código principal é o seguinte:

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

insira a descrição da imagem aqui

Figura 5.4 Modificar interface de senha

Modificar avatar do usuário: Clique para modificar o avatar no perfil do usuário, ele irá pular para a página de modificação do avatar conforme mostrado na Figura 5.5, o usuário seleciona o arquivo do avatar, clica em carregar, o formulário irá transferir a imagem para o controlador de fundo , e salve o avatar do usuário No servidor, é julgado que o avatar anterior do usuário é o avatar padrão do sistema. Caso contrário, a imagem do avatar anterior do usuário é excluída e o novo endereço do avatar do usuário é salvo nas informações do usuário, que é passado para o Serviço para chamar a interface da camada Dao para modificar o perfil do usuário no banco de dados. Informações do avatar. O código principal é o seguinte:

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", "图片不存在");
}

insira a descrição da imagem aqui

Figura 5.5 Modifique a interface do avatar

Modificar senha: Ao clicar na página de modificação de senha, o navegador pula para a página de modificação de senha, conforme Figura 5-6, primeiro o usuário deve preencher a resposta de acordo com a pergunta de senha previamente definida, e a página inicial usa Ajax para inserir a resposta do usuário à pergunta de segurança secreta é passada para o controlador de segundo plano e a resposta à pergunta de segurança secreta do usuário no banco de dados é julgada. Se a resposta de segurança secreta estiver errada, a segurança secreta do usuário A resposta é exibida na página por meio de JavaScript. Se a resposta de segurança secreta estiver correta, o usuário pode inserir uma nova pergunta de segurança e a resposta de segurança do usuário. Após clicar em Modificar para enviar o formulário, o navegador envia uma solicitação para modificar a pergunta de segurança e resposta no banco de dados de fundo. O código principal é o seguinte:

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

insira a descrição da imagem aqui

Figura 5.6 Modifique a interface de proteção por senha

5.3 O módulo Microblog
publica microblogs: conforme mostrado na Figura 5.7 na página inicial do usuário, os usuários podem publicar microblogs, inserir emoticons nas informações do microblog ou optar por inserir uma imagem. Na página inicial, os emoticons são gerados dinamicamente usando javaScript A tag div é exibido na página. Quando o usuário clica em publicar, o navegador envia uma solicitação para transferir as informações do microblog e as informações da imagem no formulário da página inicial para o controlador de plano de fundo, salvar as informações da imagem no servidor e salvar apenas o caminho da imagem no banco de dados , obtenha o usuário de login atual da sessão, monte a fonte de dados do microblog, passe a fonte de dados para o serviço, chame a interface da camada Dao para salvar as informações do microblog no banco de dados. O código principal é o seguinte:

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());
	}

insira a descrição da imagem aqui

Figura 5.7 Publicar interface de informações do Weibo

Pesquise no Weibo: conforme mostrado na Figura 5.8, insira uma palavra-chave na caixa de pesquisa na página inicial do Weibo, clique em Pesquisar para enviar o formulário, o navegador enviará uma solicitação para passar a palavra-chave para o controlador de segundo plano e consultará o Weibo relacionado no banco de dados através de informações de consulta vagas. No método específico na camada de serviço, chame a interface da camada Dao para obter informações relevantes do microblog, percorra a coleção, reúna as informações básicas do microblog e do objeto publicador, converta a expressão no microblog em uma imagem gif correspondente e ajuste o formato de hora do microblog como Correspondente ao formato, modifique as palavras-chave de pesquisa no conteúdo do Weibo para serem exibidas em vermelho e retorne os dados modificados à página inicial para exibição, conforme mostrado na Figura 5.9. O código principal é o seguinte:

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();
	}

insira a descrição da imagem aqui

Figura 5.8 Publicar interface de informações do Weibo

insira a descrição da imagem aqui

Figura 5.9 Interface de exibição do Weibo de pesquisa

Operação do Weibo; clique no Weibo para curtir, encaminhar e salvar os tipos de função, enviar a solicitação de ID do Weibo ao controlador de segundo plano por meio do Ajax, obter as informações do usuário de login da Sessão e passar os parâmetros para o método correspondente do Serviço por meio do Weibo As diferentes operações do blog chamam a interface da camada Dao correspondente para salvar curtidas, retuítes e informações de coleta do Weibo no banco de dados. Depois de clicar no comentário, pule para o JavaScript por meio do evento click na página de primeiro plano, envie uma solicitação assíncrona para o controlador de segundo plano por meio de Ajax e passe o ID do Weibo para o método correspondente na camada de serviço. Use a interface da camada Dao para encontrar o número Weibo correspondente no banco de dados. Para as informações de comentários, a paginação dos comentários do microblog é controlada pela classe PageBean correspondente, o número de itens a serem exibidos na paginação é controlado pela instrução SQL na camada do banco de dados e o json os dados são passados ​​no controlador para a página inicial para exibição. No final das informações do comentário, os usuários podem publicar seus próprios comentários, adicionar emoticons, clicar em publicar para enviar o formulário ao controlador de segundo plano e chamar a interface da camada Dao no código de segundo plano para salvar as informações do comentário do usuário. Como mostrado na Figura 5.10. O código principal é o seguinte:

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);

insira a descrição da imagem aqui

Figura 5.10 Interface de operação de texto do Weibo

Weibo pessoal: Conforme mostrado na Figura 5.11: Na barra de navegação na parte superior da página, você pode clicar para entrar na página inicial pessoal do usuário para visualizar meu Weibo. No meio da página, a barra de navegação é exibida na parte superior do a página, e as informações básicas do usuário são exibidas abaixo, e as postagens postadas pelo usuário são exibidas no meio. Weibo, clicando na imagem inserida no Weibo também pode ampliar a imagem por meio de JavaScript e exibir os amigos recomendados por o sistema para o usuário no lado direito da página. A solicitação enviada após clicar no botão Meu Weibo será recebida pelo controlador de segundo plano, e o ID do usuário atualmente conectado será obtido da Sessão do servidor, passado para a camada de Serviço, e a interface da camada Dao será chamada na camada de serviço para obter o ID do usuário conectado no momento do banco de dados. As informações do microblog são reunidas em uma coleção List, percorra a coleção List, altere o formato de data da fonte de dados do microblog, chame a classe de ferramenta para substituir a expressão no texto do microblog com as informações da imagem correspondente, e usar o banco de dados Oralce na paginação da Pseudo-coluna do microblog para obter as informações do microblog do intervalo correspondente, realizar a paginação da camada do banco de dados, passar todos os dados que precisa ser exibido na página para o controlador, e o controlador então encapsula os dados na resposta Response e os passa para a página inicial. O código principal é o seguinte:

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());

insira a descrição da imagem aqui

Figura 5.11 Interface pessoal do Weibo

5.4 Módulo Friend
Ver microblog de amigo: clique em meu amigo na barra de navegação da página para pular para a página do microblog de amigo. Serviço. No serviço, chame o método da camada Dao para primeiro encontrar todas as informações de amigo do usuário correspondente na tabela de amigos do banco de dados e, em seguida, verifique as informações do Weibo correspondentes a esses amigos na tabela do Weibo do banco de dados na ordem inversa da versão do Weibo tempo e listar todas as informações Weibo encontradas e informações publicadas do usuário são encapsuladas em uma coleção List, percorrer a coleção List para modificar a data Weibo, converter emoticons Weibo em nomes de imagens correspondentes, passar a coleção processada para o controlador e o controlador responder com todos os dados reunidos Vá para a página de primeiro plano e use a tag C para percorrer a lista na página de primeiro plano para exibir os dados do Weibo, conforme mostrado na Figura 5.12. O código principal é o seguinte:

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());

Função Follow: Quando o usuário loga no sistema, ele pode selecionar o usuário que precisa seguir dentre os usuários recomendados no lado direito da página. Após clicar em Follow, a página inicial envia uma requisição assíncrona através da tecnologia Ajax para enviar o id do usuário a ser seguido para o controlador de segundo plano. Obtenha as informações do usuário logado na sessão do servidor, passe o id do usuário logado e o id do usuário seguido para o método correspondente na camada de serviço, processe-o no método correspondente da camada de serviço, monte a fonte de dados de informações do amigo e chame a interface da camada Dao Salve as informações de atenção do usuário, atualize o número de atenção do usuário ao mesmo tempo, atualize o número de fãs do usuário que é seguido, e, em seguida, modifique a atenção das informações de texto da página a serem seguidas por meio de javaScript na página inicial. O código principal é o seguinte:

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

Deixar de seguir: e seguir o tipo de função, clique em Meus amigos na barra de navegação, clique em Seguir no meio, você pode ver todos os amigos que sigo, o número de amigos e suas informações pessoais, conforme mostrado na Figura 5.13, clique em Deixar de seguir, passe o ID do amigo para o controlador de segundo plano por meio do Ajax, obtenha as informações do usuário na solicitação no controlador, passe o ID do amigo e o ID do usuário para o método correspondente na camada de serviço e chame a interface da camada Dao para corresponder ao ID do usuário e ao amigo id As informações de amigo do usuário são excluídas e o número de seguidores do usuário e o número de fãs do usuário seguido são alterados ao mesmo tempo. Em seguida, retorne a resposta para atualizar a lista de amigos na página de primeiro plano.

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

Bloquear usuários: Semelhante a deixar de seguir usuários, exceto que na interface da camada Dao, os registros de usuários existentes não são excluídos, mas excluídos logicamente, ou seja, o status do registro correspondente na tabela de amigos é modificado e as mensagens privadas e Weibo publicadas pelo usuário bloqueado As informações não serão vistas por usuários bloqueados. O código principal é o seguinte:

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

insira a descrição da imagem aqui

Figura 5.12 Interface de informações do Weibo amigo

insira a descrição da imagem aqui

Figura 5.13 Interface da lista de amigos

Mensagem privada: Você pode visualizar o número de mensagens privadas não verificadas do usuário de login atual na página de usuários recomendados, conforme mostrado na Figura 5.14, o número de mensagens privadas não lidas é através de todas as informações de mensagens privadas no banco de dados para todos os destinatários do usuário de login atual e o status da informação é Para mensagens privadas não lidas, passe o valor obtido para a página inicial e todos os valores exibidos na página inicial são obtidos da resposta enviada de volta do servidor por meio de expressões EL. Clique na mensagem privada não lida ou clique no botão de mensagem privada na lista de amigos mostrada na Figura 5.13 para pular para a página de mensagem privada do usuário. O código principal é o seguinte:

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);

insira a descrição da imagem aqui

Figura 5.14 Interface de mensagem privada não lida do usuário

Exibir mensagens privadas: conforme mostrado na Figura 5.15, quando um usuário clica em uma mensagem privada para seguir um amigo, o controlador de segundo plano pula para a página de usuário de minha mensagem privada. O lado esquerdo da página exibe as últimas informações de mensagem privada do usuário, e o lado direito da página exibe todas as mensagens privadas que foram enviadas Clique em um usuário na lista para enviar uma mensagem privada diretamente para o usuário, e emoticons são permitidos na mensagem privada. No código de fundo, passe o id do usuário para enviar a mensagem privada e o id do usuário de login obtido da Sessão para o método correspondente na camada de Serviço, chame a interface da camada Dao para encontrar todos os registros de mensagens privadas relacionadas ao usuário na camada banco de dados e modificá-lo ao mesmo tempo O status de todas as mensagens privadas é lido, reúna os registros obtidos em uma coleção, percorra a coleção e chame a classe de ferramenta para modificar o formato de data da mensagem privada e o formato de expressão no texto, e ao mesmo tempo obter todos os usuários que possuem registros de mensagens privadas com o usuário de login atual do banco de dados, retornar a coleção montada para o controlador, o controlador responde os dados para a página inicial, percorre os dados na coleção e os exibe na página JSP frontal. O código principal é o seguinte:

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

insira a descrição da imagem aqui

Figura 5.15 Interface de mensagem privada do usuário

Enviar uma mensagem privada: o usuário primeiro seleciona o usuário a ser enviado, insere as informações da mensagem privada a ser enviada e pode inserir emoticons na mensagem privada. Após clicar em enviar, o formulário será enviado. O navegador envia a solicitação para segundo plano controlador, e o controlador obtém o ID do usuário remetente e recebe o id do usuário, chama o método na camada de serviço, monta a fonte de dados como informações de mensagem privada, define as informações da mensagem privada como não lidas, chama a interface da camada Dao na camada método correspondente na camada de serviço para salvar as informações da mensagem privada no banco de dados. O código principal é o seguinte:

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");

Pesquisar usuários: Na página de pesquisa de usuários, os usuários podem inserir palavras-chave de apelidos de usuários para consultar usuários relacionados. Quando os usuários inserem apelidos de usuários a serem consultados, o navegador envia uma solicitação com palavras-chave e outras informações para ir para um método específico no controlador , a lógica de processamento do método em Service é chamada dentro do método do controlador e a camada de negócios chama o método de pesquisa na interface da camada Dao para localizar usuários cujos apelidos de usuário contêm palavras-chave, montar os usuários correspondentes obtidos do banco de dados em um conjunto e percorrer o conjunto para As palavras-chave contidas no apelido do usuário são alteradas para vermelho, o controlador retorna uma resposta e salta para a página de resultados da pesquisa e percorre a coleção para exibir todas as informações do usuário encontradas. Como mostrado na Figura 5.16. O código principal é o seguinte:

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

insira a descrição da imagem aqui

Figura 5.16 IU de pesquisa

Página inicial do usuário: Na página, clicar no nome de qualquer usuário ou na foto do perfil irá pular para a página inicial pessoal do usuário correspondente. A página inicial pessoal do usuário exibe as informações pessoais do usuário e o Weibo mais recente do usuário, organizado em ordem cronológica inversa, e o usuário também pode operar curtidas, encaminhamentos, comentários e favoritos do Weibo. No código adquirido, quando um usuário clica no avatar ou nome de outro usuário, o navegador envia uma requisição carregando o id do usuário para o background controller. O controlador chama o método correspondente no serviço, chama a interface da camada Dao no método de serviço para visualizar as informações básicas do usuário e as informações do Weibo do usuário do banco de dados e armazena todos os dados na coleção. Retorne ao controlador e o controlador carrega os dados de volta para a página inicial para exibição, conforme mostrado na Figura 5.17. O código principal é o seguinte:

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()));
}

insira a descrição da imagem aqui

Figura 5.17 Interface da página inicial do usuário

5.5
Liberação do módulo Conch: Quando o usuário entra na página inicial do Conch, a página do navegador envia uma solicitação ao controlador de back-end para chamar um método específico na camada de negócios, e o Serviço chama a interface da camada Dao para encontrar questões do conch relacionadas a diferentes filtrar as condições no banco de dados e encapsular os problemas encontrados em uma coleção, enviar a resposta do servidor por meio do controlador, pular para a página inicial do Conch e exibir todos os problemas do Conch em um loop. Caso o usuário precise publicar uma pergunta, após preencher a descrição da pergunta e o número de pontos a serem recompensados, clique em Publicar, e o navegador envia os dados do formulário para o controlador de segundo plano. Na camada de Serviço, é julgado primeiro se os pontos de concha do usuário forem maiores que os pontos de recompensa, se forem menores que os pontos de recompensa, retornará à página do navegador para avisar ao usuário que os pontos são insuficientes. Se os pontos forem suficientes, chame a interface da camada Dao para salvar as perguntas de concha do usuário no banco de dados e, ao mesmo tempo, reduza os pontos de concha do usuário para modificar as informações básicas do usuário. O código principal é o seguinte:

//海螺分页
	//获取海螺总数
	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());

insira a descrição da imagem aqui

Figura 5.18 Interface da página inicial do Conch

Exibir problemas de concha: quando um usuário clica em um problema específico na página inicial da concha, o navegador envia uma solicitação ao controlador de segundo plano para chamar o método correspondente à camada de serviço e chama a interface da camada Dao na camada de serviço para visualizar o problema específico informações da concha através do número da concha problema. O ID do usuário que postou a pergunta procura as informações do publicador correspondente no banco de dados, e o servidor retorna uma resposta ao navegador, exibindo as informações específicas da concha, e o usuário nome, título do usuário, data de lançamento, pergunta da concha, pontos de recompensa e pergunta do usuário da postagem são exibidos no topo O estado da pergunta, etc., exibe todas as informações de resposta da pergunta no meio, o usuário da pessoa que respondeu nome, cargo, conteúdo da resposta, data da resposta, se aceita, etc., conforme Figura 5.19. O código principal é o seguinte:

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);

insira a descrição da imagem aqui

A Figura 5.19 exibe a interface específica do problema

Responder a perguntas sobre conchas: Você pode responder perguntas sobre conchas na parte inferior da página de informações detalhadas das perguntas sobre conchas, inserir a resposta de resposta na caixa de entrada, inserir informações de emoticon, clicar em responder para enviar o formulário, o navegador solicita o transporte dos dados do formulário para o controlador de segundo plano e é controlado O método específico no servidor recebe, obtém o número do usuário na sessão, monta a fonte de dados das informações de resposta, passa os parâmetros para o serviço e chama a interface da camada Dao no serviço para salvar a informação de resposta da concha, como mostra a Figura 5.20. O código principal é o seguinte:

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

insira a descrição da imagem aqui

Figura 5.20 Interface de pergunta do Conch de resposta

Aceite a resposta para a pergunta: Na página inicial do Conch Questions, os usuários podem pular para a página Conch Questions postada pelo usuário clicando em My Conch Questions. Na página do Conch Questions postada pelo usuário, eles podem escolher a resposta que eles acha que é a mais correta. A resposta torna-se uma resposta aceita, aumentando os pontos de concha do adotante, conforme mostrado na Figura 5.21. No código de fundo, quando o usuário clica para aceitar, a solicitação do navegador carrega o id da pergunta da concha e a resposta da pergunta as informações são recebidas pelo método específico no controlador de segundo plano, chame a camada de serviço no controlador, chame a interface da camada Dao na camada de negócios para modificar o status do problema de concha no banco de dados a ser resolvido, modifique o status do comentário do aceito usuário na tabela de comentários para ser aceito e atualize a página de problemas do front conch. O código principal é o seguinte:

//设置海螺状态为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());

insira a descrição da imagem aqui

Figura 5.21 Aceitar interface de resposta de pergunta

5.6
Login do administrador do módulo administrador em segundo plano: o administrador pode clicar no login do administrador na página de login para pular para a página de login do administrador, conforme mostrado na Figura 5.22. Após o login do administrador, a página envia uma solicitação ao controlador de segundo plano e o segundo A camada Controller recebe a requisição, chama o método na camada de negócio com o nome de usuário e senha como parâmetros, chama a interface da camada Dao na camada Service e consulta a tabela de contas do administrador no banco de dados, retorna a classe administrador se existir , e a lança se não existir Quando ocorre uma exceção, a exceção é lançada camada por camada, recebida na camada do controlador, e a informação do erro é salva no valor de retorno do método e a página solicita. nome e senha estão corretos, ele irá pular para o método de processamento da página inicial do administrador no Controlador No método de processamento da página inicial do administrador, os dados a serem exibidos são obtidos e exibidos. O código principal é o seguinte:

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

insira a descrição da imagem aqui

Figura 5.22 Interface de login do administrador

Página inicial do administrador: Após o login, o sistema irá para a página inicial do administrador e a barra de navegação será exibida na parte superior da página inicial. Em termos de conteúdo da página, quatro gráficos serão usados ​​para exibir o número total de Weibo, usuários , comentários, concha, comentários, respostas, etc. E o número do mês atual, o gráfico de barras abaixo mostra o número dos 7 dias mais próximos de hoje. O plano de fundo primeiro salta para o método de processamento correspondente à página inicial do administrador na camada Controlador, chama o método correspondente na camada Serviço para obter os dados de exibição da página inicial, reúne os dados obtidos em uma coleção de mapas e chama a camada Dao em a camada de serviço O método para obter o usuário, Weibo, comentário, resposta e outros dados que precisam ser exibidos na página inicial é armazenado na coleção de mapas, os dados do valor de retorno são obtidos na camada de controle e armazenados na resposta do servidor , e voltou para a página inicial para exibir os dados usando expressões EL , conforme mostrado na Figura 5.23. O código principal é o seguinte:

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

insira a descrição da imagem aqui

Figura 5.23 Interface da página inicial do administrador

Página inicial de gerenciamento de usuários: o código de fundo chama o método correspondente na camada de serviço, e o método de serviço chama a interface da camada Dao para interagir com o banco de dados, obter todas as informações do usuário no banco de dados e encapsulá-las em uma coleção de listas e retorná-las para a camada do controlador para responder à coleção de listas do usuário para o navegador Na página, as informações do usuário são percorridas e exibidas por meio da tag c. A paginação da página usa a classe de paginação personalizada PageBean para salvar as informações de paginação e executa a paginação na camada de banco de dados para obter 10 partes de dados por vez. O código principal é o seguinte:

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);

insira a descrição da imagem aqui

Figura 5.24 Interface de gerenciamento do usuário

Pesquisar usuários: Digite as palavras-chave no apelido do usuário na página de gerenciamento de usuários para pesquisar usuários e o sistema exibirá a parte das informações do usuário obtidas em que o apelido é a palavra-chave inserida em vermelho. No código de segundo plano, clicar em Pesquisar passará a palavra-chave do apelido do usuário inserida pelo administrador para o controlador de segundo plano, chamará o método de usuário de pesquisa correspondente na camada de serviço no controlador e chamará a interface da camada Dao na camada de serviço no banco de dados Obter usuários por meio de consultas difusas. E retorne os dados obtidos camada por camada, responda à página inicial no Controller e, em seguida, exiba-os na página, conforme mostrado na Figura 5.25. O código principal é o seguinte:

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));
}

insira a descrição da imagem aqui

Figura 5.25 Interface do usuário de pesquisa do administrador

Banimento do usuário: O administrador pode clicar no botão de banimento na coluna de operação da página de gerenciamento de usuários para banir o usuário infrator. O administrador pode inserir o número de dias para o banimento. Antes dessa data, o usuário não pode fazer login normalmente e o O administrador pode Desbloquear usuários antecipadamente clicando em Desbloquear.A página específica é mostrada na Figura 5.26. No código de fundo, a interface da camada Dao é chamada na camada de serviço para alterar o status do usuário e a data de banimento. O desbanimento é semelhante ao banimento de usuários, portanto, nenhuma instrução específica será fornecida. O código principal é o seguinte:

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

insira a descrição da imagem aqui

Figura 5.26 Interface de usuário banido

Página inicial de gerenciamento do Weibo: os administradores clicam em gerenciamento do Weibo na barra de navegação, o sistema irá para a página de gerenciamento do Weibo do usuário, exibindo as informações do Weibo usadas no sistema, os administradores também podem inserir palavras-chave no conteúdo do Weibo Pesquisar no Weibo e, ao mesmo tempo exclua o Weibo com informações incorretas ou restaure o Weibo excluído. A página de gerenciamento do Weibo é mostrada na Figura 5.27. No código de fundo, quando o usuário clicar em gerenciamento do Weibo na barra de navegação, o navegador enviará a solicitação correspondente ao Controlador de a estrutura SpringMVC para mais métodos de processamento, chame o método de exibição de todos os microblogs na camada de serviço no controlador e, em seguida, chame o método da camada Dao na camada de serviço para obter todas as informações do Weibo, em termos de paginação, não use o método de paginação na página front-end, mas usa a pseudocoluna do Oracle para fazer a paginação no banco de dados, obtém 10 dados por vez e, finalmente, responde às informações obtidas do Weibo no Controlador Para o navegador, o navegador exibe o Weibo informações através da travessia da tag c. O código principal é o seguinte:

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));
		}
}

insira a descrição da imagem aqui

Figura 5.27 Interface de gerenciamento do Weibo

Pesquisa de microblog: os administradores podem pesquisar microblogs com a palavra-chave no conteúdo do microblog inserindo palavras-chave no conteúdo do microblog, e as palavras-chave no conteúdo do microblog pesquisado serão marcadas em vermelho, conforme mostrado na página específica Conforme mostrado em 5.28, no código de fundo, um método específico no controlador recebe a solicitação de pesquisa de microblog enviada por navegação, chama o método correspondente na camada de serviço, passa palavras-chave como parâmetros para a interface da camada Dao e pesquisa na interface da camada Dao O conteúdo do microblog no banco de dados A tabela de microblog contém as informações de microblog da palavra-chave e o microblog correspondente é encontrado no banco de dados por meio de consulta difusa. Em seguida, encapsule as informações do microblog encontradas na coleção List e retorne ao método correspondente na camada Controller, camada por camada, e responda os dados ao navegador no método, e o navegador receberá a resposta e exibirá os dados por meio da tag c na página. O código principal é o seguinte:

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

insira a descrição da imagem aqui

Figura 5.28 Interface do Weibo de pesquisa do administrador

Exclusão do Weibo: Na página de gerenciamento do Weibo, o administrador pode julgar se o Weibo é ilegal ou não de acordo com o conteúdo do Weibo. Se as informações do Weibo contiverem informações incorretas, o administrador pode excluir o Weibo por meio do botão excluir na barra de operação . Blog ou você pode restaurar o Weibo excluído. Quando o usuário clicar para excluir, a página enviará uma solicitação ao servidor com parâmetros como o número do Weibo e a solicitação será recebida pelo método correspondente no controlador e o O número do Weibo será Como parâmetro, use o método correspondente no Serviço, chame a interface da camada Dao no método e modifique o status do microblog correspondente ao número do microblog no banco de dados a ser excluído. A restauração de um microblog é semelhante à exclusão , exceto que o estado das informações de microblog correspondentes no banco de dados é modificado para Normal pode ser. O código principal é o seguinte:

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

Página inicial de gerenciamento de conchas: o administrador clica em gerenciamento de conchas na barra de navegação para pular para a página de gerenciamento de conchas, conforme mostrado na Figura 5.29, a barra de navegação está na parte superior da página e o conteúdo da página exibe todas as informações de conchas, o caixa de pesquisa da concha e as informações inferiores da concha incluem número de série, nome do editor, conteúdo da concha, data de lançamento, status da concha e operações que podem ser executadas. Em termos de código de fundo, quando o usuário clica em gerenciamento de concha na barra de navegação, o o navegador envia uma solicitação, solicita Recebido pelo método correspondente no controlador, chama a interface da camada Dao no Serviço para encontrar todas as informações de conchas na tabela de conchas do banco de dados, salva-as na coleção de listas, percorre a coleção de listas para montar o editor informações do usuário, modificar o formato da data etc. e, finalmente, montar a coleção No.'s List é retornada ao controlador e a resposta é enviada ao navegador para ir para a página inicial de gerenciamento de conchas e as informações de conchas pesquisadas são exibidas percorrendo a tag C. Como o método de paginação usado no sistema é o mesmo, ele não será descrito aqui. O código principal é o seguinte:

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);

insira a descrição da imagem aqui

Figura 5.29 Interface da página inicial de gerenciamento do Conch

Pesquisa de conchas: Na página inicial de gerenciamento de conchas, considerando o grande número de conchas, é difícil encontrar o problema, então a função de pesquisa é configurada. O administrador pode pesquisar problemas de conchas inserindo as palavras-chave no conteúdo da concha na concha caixa de pesquisa Na exibição da pesquisa Quando os resultados forem obtidos, as palavras-chave da pesquisa serão marcadas em vermelho para facilitar a visualização. A página específica é mostrada na Figura 5.30. No código de fundo, quando o usuário insere uma palavra-chave e clica para pesquisar, o navegador envia uma solicitação ao método especificado no controlador para recebê-lo, chama o método correspondente na camada de serviço no controlador para processar a lógica de negócios e em seguida, chama a interface da camada Dao na camada de serviço para passar A consulta difusa procura as informações de concha correspondentes na tabela de conchas do banco de dados e, finalmente, responde as informações de conchas encontradas ao navegador no Controlador e percorre e exibe os dados por meio de a tag c na página. Como o sistema usa o mesmo método de paginação, não vou entrar em detalhes. O código principal é o seguinte:

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);

insira a descrição da imagem aqui

Figura 5.30 Interface de busca do Conch

Capítulo 6 Teste do sistema

6.1 Visão geral do teste do sistema
No estágio de escrita do código, os testes de unidade são usados ​​principalmente para testar se o código tem defeitos, se as funções do sistema podem ser executadas normalmente e se o software pode atingir o objetivo esperado. Após a conclusão do sistema de software, escreva os casos de teste dos módulos correspondentes. Etapas para testar se há defeitos no sistema, usando testes de caixa preta e caixa branca para melhorar as funções do sistema, otimizar códigos de software e melhorar a qualidade dos sistemas de software.

6.2 Casos de teste
6.2.1 Módulo de cadastro de usuários
Tabela 6-1 Cadastro de usuários
insira a descrição da imagem aqui

6.2.2 Módulo de login do usuário
Tabela 6-2 Login do usuário
insira a descrição da imagem aqui

6.2.3 Módulo Modificar informações do usuário
Tabela 6-3 Modificar informações do usuário
insira a descrição da imagem aqui
insira a descrição da imagem aqui

6.2.4 Módulo Weibo
Tabela 6-4 Módulo Weibo do usuário
insira a descrição da imagem aqui
insira a descrição da imagem aqui

6.2.5 Módulo amigo do usuário
Tabela 6-5 Módulo amigo do usuário
insira a descrição da imagem aqui

6.2.6 Módulo Conch do Usuário
Tabela 6-6 Módulo Conch do Usuário
insira a descrição da imagem aqui

6.2.7 Módulo administrador
Tabela 6-7 Módulo administrador
insira a descrição da imagem aqui
insira a descrição da imagem aqui

6.3 Análise de Teste
Omitir

6.4 Resumo deste capítulo
Neste capítulo, os casos de teste do sistema são escritos principalmente para testar se o sistema pode realizar as funções projetadas e se contém vários defeitos. são poucos defeitos visíveis no sistema, alguns defeitos descobertos também foram resolvidos, mas não existe um sistema que esteja absolutamente livre de defeitos, então os defeitos do sistema devem ser continuamente descobertos no uso posterior.

Capítulo 7 Resumo
Omitido

Referências
[1] Jia Wenxiao, Deng Junjie. Análise da tecnologia de desenvolvimento da Web baseada em Java [J]. Teste eletrônico, 2016 [2] Li Chuanyang.
Projeto e implementação do sistema de análise Weibo [D]. Universidade de Correios e Telecomunicações de Pequim, 2015
[3] Liu Yunchen. Design e construção do site [M]. Tsinghua University Press, 2008 [
4] Qin Yahua. Design e implementação do site do microblog baseado em WEB2.0 [D]. Universidade de Tecnologia de Pequim 2012
[5] Chen Ling, Xia Xun. Usando o SQL dinâmico de Mybatis para realizar paginação física [J]. Tecnologia e aplicação digital. 2011(11) [6]
Sa Shixuan, Wang Shan. Introdução aos sistemas de banco de dados (terceira edição) [M]. Education Press, 1998
[7] Pesquisa de tecnologia de acesso a banco de dados baseada em Java [J]. Informação sobre ciência e tecnologia. 2009 (04) [
8] Zhang Feng. Pesquisa e implementação de aplicativos da Web baseados na tecnologia Ajax e framework J2EE [D]. China University of Geosciences 2008
[9] Programação de rede baseada na tecnologia Java multithreading [J]. Habilidades e manutenção de programação de computadores. 2009 (22)
[10] Li Wei. Projeto de um pequeno e prático sistema de comunicação instantânea por chat em rede [J]. Journal da Universidade de Yangtze (Natural Science Edition). 2011(12)
[11] Zhong Ruiqi. Análise e Design Baseados na Incorporação Weibo Rede de Leitura de Pequenos Parceiros [D]. Universidade de Tecnologia do Sul da China 2011 [12] Escrito
por Wang Shaofeng. Object- Oriented Technology UML Course [M]. Tsinghua University University Press, 2004
[13] Xu Chunmian. Pesquisa sobre questões relacionadas ao desenvolvimento de sites [J]. Communication World. 2015 (09) [14] Zhang Yu, Wang
Yinghui, Zhang Xiangnan. Projeto e implementação de framework MVC baseado em Spring [J]. Engenharia da Computação. 2010(04)
[15] Hu Yiqiao, Zhang Liping. Escolha do modelo de desenvolvimento J2EE [J]. Aplicação de sistema de computador. 2002 (08) [16] Wang Liai. Projeto
e implementação do site do curso "Programação Java" [J]. Conhecimento e tecnologia de computadores . 2016(27)
[17] Rong Yandong.Pesquisa de aplicação no Mybatis Persistence Layer Framework [J].Segurança e Tecnologia da Informação. 2015(12)

Agradecimentos
omitir


5. Download do código-fonte:

O código-fonte e a tese deste projeto são os seguintes, amigos que precisam podem clicar para fazer o download. Se o link falhar, você pode clicar no cartão abaixo para escanear o código e baixá-lo você mesmo.

número de série Um conjunto completo de recursos para design de graduação (clique para baixar)
O código-fonte deste projeto Projeto e implementação de sistema de microblog de arquitetura BS baseado em javaEE+SSM+MySql (código fonte + documento)_JAVAEE_SSM_BS arquitetura microblog system.zip

Acho que você gosta

Origin blog.csdn.net/m0_66238867/article/details/125471185
Recomendado
Clasificación