Estrutura do projeto:
Página inicial do projeto:
Página de inscrição:
Carregar imagem:
Imagem do efeito um:
Imagem do efeito dois:
Imagem do efeito três:
================================================= ===========
Abaixo está a parte do código
================================================= ===========
Banco de dados SQL necessário:
criar banco de dados db_ajax;
usardb_ajax;
criar tabela user_table
(
user_id int chave primária de incremento automático,
nome varchar(255) único,
passar varchar(255)
);
criar tabela photo_table
(
photo_id int chave primária de incremento automático,
título varchar(255),
nome do arquivo varchar(255),
proprietário_id int,
chave estrangeira (owner_id) faz referência a user_table (user_id)
);
<div id="uploadDiv" style="display:none">
<form action="proUpload" método="post"
enctype="multipart/form-data">
<table cellpacing="1" cellpadding="10">
<caption>Enviar fotos</caption>
<tr>
<td>Título da imagem:</td>
<td><input id="title" name="title" type="text" /></td>
</tr>
<tr>
<td>Navegar pelas fotos:</td>
<td><input id="arquivo" name="arquivo" type="arquivo" /></td>
</tr>
<tr>
<td colspan="2" alinhar="centro">
<input type="submit" value="Upload" />
<input type="reset" value="Redefinir" />
</td>
</tr>
</tabela>
</form>
</div>
<div id="tipDiv" style="display:none">
</div>
</body>
</html>
<!-- Configure o contêiner Spring para ser carregado quando a aplicação web for iniciada -->
<ouvinte>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</ouvinte>
<servlet>
<servlet-name>proLogin</servlet-name>
<servlet-class>com.b510.album.web.ProLoginServlet</servlet-class>
</servlet>
<mapeamento de servlet>
<servlet-name>proLogin</servlet-name>
<url-pattern>/proLogin</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>proRegist</servlet-name>
<servlet-class>com.b510.album.web.ProRegistServlet</servlet-class>
</servlet>
<mapeamento de servlet>
<servlet-name>proRegist</servlet-name>
<url-pattern>/proRegist</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>validateName</servlet-name>
<servlet-class>com.b510.album.web.ValidateNameServlet</servlet-class>
</servlet>
<mapeamento de servlet>
<servlet-name>validateName</servlet-name>
<url-pattern>/validateName</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>getPhoto</servlet-name>
<servlet-class>com.b510.album.web.GetPhotoServlet</servlet-class>
</servlet>
<mapeamento de servlet>
<servlet-name>getPhoto</servlet-name>
<url-pattern>/getFoto</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>showImg</servlet-name>
<servlet-class>com.b510.album.web.ShowImgServlet</servlet-class>
</servlet>
<mapeamento de servlet>
<servlet-name>showImg</servlet-name>
<url-pattern>/showImg</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>pageLoad</servlet-name>
<servlet-class>com.b510.album.web.PageLoadServlet</servlet-class>
</servlet>
<mapeamento de servlet>
<servlet-name>pageLoad</servlet-name>
<url-pattern>/pageLoad</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>turnPage</servlet-name>
<servlet-class>com.b510.album.web.TurnPageServlet</servlet-class>
</servlet>
<mapeamento de servlet>
<servlet-name>turnPage</servlet-name>
<url-pattern>/turnPage</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>proUpload</servlet-name>
<servlet-class>com.b510.album.web.ProUploadServlet</servlet-class>
</servlet>
<mapeamento de servlet>
<servlet-name>proUpload</servlet-name>
<url-pattern>/proUpload</url-pattern>
</servlet-mapping>
<lista de arquivos de boas-vindas>
<welcome-file>album.html</welcome-file>
</welcome-file-list>
</web-app>
<!-- Definir fonte de dados Bean, implementado usando fonte de dados C3P0 -->
<bean id="dataSource" destruir-method="fechar"
>
<!-- Especifique o driver para conectar ao banco de dados -->
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<!-- Especifique a URL para se conectar ao banco de dados -->
<nome da propriedade="jdbcUrl"
valor="jdbc:mysql://localhost:3308/db_ajax"/>
<!-- Especifique o nome de usuário para se conectar ao banco de dados -->
<nome da propriedade="usuário" valor="root"/>
<!-- Especifique a senha para se conectar ao banco de dados -->
<nome da propriedade="senha" valor="root"/>
<!--Especifique o número máximo de conexões com o pool de conexões do banco de dados-->
<nome da propriedade="maxPoolSize" valor="40"/>
<!-- Especifique o número mínimo de conexões para conectar ao pool de conexões do banco de dados -->
<nome da propriedade="minPoolSize" valor="1"/>
<!-- Especifique o número de conexões iniciais para conectar ao pool de conexões do banco de dados -->
<nome da propriedade="initialPoolSize" valor="1"/>
<!-- Especifique o tempo ocioso máximo para conexões com o pool de conexões do banco de dados -->
<nome da propriedade="maxIdleTime" valor="20"/>
</bean>
<!-- Definir SessionFactory do Hibernate -->
<bean id="sessionFactory"
>
<!-- Fonte de dados de injeção de dependência, injete o dataSource definido acima -->
<nome da propriedade="dataSource" ref="dataSource"/>
<!-- O atributo mapeamentoResouces é usado para listar todos os arquivos de mapeamento -->
<nome da propriedade="mappingResources">
<lista>
<!-- O seguinte é usado para listar os arquivos de mapeamento do Hibernate-->
<value>com/b510/album/model/User.hbm.xml</value>
<value>com/b510/album/model/Photo.hbm.xml</value>
</lista>
</propriedade>
<!-- Defina as propriedades do SessionFactory do Hibernate -->
<nome da propriedade="hibernateProperties">
<adereços>
<!--Especificar dialeto do banco de dados-->
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLInnoDBDialect</prop>
<!-- Se deve criar automaticamente um banco de dados sempre que necessário -->
<prop key="hibernate.hbm2ddl.auto">atualizar</prop>
<!-- Exibe o SQL gerado pela operação de persistência do Hibernate -->
<prop key="hibernate.show_sql">verdadeiro</prop>
<!-- Formate o script SQL e depois produza-o -->
<prop key="hibernate.format_sql">verdadeiro</prop>
</props>
</propriedade>
</bean>
<!-- Configurar componente UserDao -->
<bean id="userDao"
>
<!--Injetar referência do SessionFactory-->
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- Configurar componente PhotoDao -->
<bean id="fotoDao"
>
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- Configurar o componente de lógica de negócios albumService -->
<bean id="albumService"
>
<!-- Injete 2 componentes DAO no componente de lógica de negócios -->
<nome da propriedade="userDao" ref="userDao"/>
<nome da propriedade="photoDao" ref="photoDao"/>
</bean>
<!-- Configure o gerenciador de transações locais do Hibernate, use a classe HibernateTransactionManager -->
<!-- Esta classe implementa a interface PlatformTransactionManager, que é uma implementação específica para Hibernate -->
<bean id="transactionManager"
>
<!-- Ao configurar o HibernateTransactionManager, você precisa injetar uma referência ao SessionFactory -->
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- Configure o Bean do aspecto da transação e especifique o gerenciador de transações -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!-- Usado para configurar a semântica detalhada da transação-->
<tx:atributos>
<!-- Todos os métodos que começam com 'get' são somente leitura -->
<tx:nome do método="get*" somente leitura="true"/>
<!-- Outros métodos usam configurações de transação padrão -->
<tx:nome do método="*"/>
</tx: atributos>
</tx:conselho>
<aop:config>
<!-- Configure um pointcut para corresponder a todos os métodos executados por todas as classes que terminam com Impl no pacote lee -->
<aop:pointcut id="leeService"
expressão="execução(* com.b510.album.service.impl.*Impl.*(..))"/>
<!-- Especifique para aplicar o aspecto de transação txAdvice no ponto de entrada leeService -->
<aop:advisor conselho-ref="txAdvice"
pointcut-ref="leeService"/>
</aop:config>
</feijão>
função redefinir()
{
//Limpa as duas caixas de texto de linha única do usuário e passa
$("#usuário").val("");
$("#pass").val("");
}
//Muda para a caixa de diálogo de registro
função changeRegist()
{
//Oculta os dois botões de login
$("#loginDiv").hide("500");
//Mostra dois botões para registro
$("#registDiv").show("500");
}
//Função para lidar com o login do usuário
função proLogin()
{
//Obtém os valores das duas caixas de texto user e passa
var usuário = $.trim($("#usuário").val());
var passagem = $.trim($("#pass").val());
if (usuário == nulo || usuário == ""
|| passar == nulo || passar == "")
{
alert("Você deve inserir seu nome de usuário e senha antes de fazer login");
retornar falso;
}
outro
{
//Envia solicitação POST assíncrona para proLogin
$.post("proLogin", $('#usuário,#pass').serializeArray()
, null , "script");
}
}
//Função que trata do cadastro do usuário
registro de função()
{
//Obtém os valores das duas caixas de texto user e passa
var usuário = $.trim($("#usuário").val());
var passagem = $.trim($("#pass").val());
if (usuário == nulo || usuário == "" || passagem == nulo || passagem =="")
{
alert("Você deve inserir seu nome de usuário e senha antes de se registrar");
retornar falso;
}
outro
{
//Envia solicitação POST assíncrona para proRegist
$.post("proRegist", $('#usuário,#pass').serializeArray()
, null , "script");
}
}
//Verifica se o nome de usuário está disponível
função validarNome()
{
//Obtém o valor da caixa de texto do usuário
var usuário = $.trim($("#usuário").val());
if (usuário == nulo || usuário == "")
{
alert("Você ainda não digitou seu nome de usuário!");
retornar falso;
}
outro
{
//Envia uma solicitação POST assíncrona para validName
$.post("validateNome", $('#usuário').serializeArray()
, null , "script");
}
}
// Obtenha periodicamente fotos do usuário atual e da página atual
função onLoadHandler()
{
//Envia solicitação GET assíncrona para getPhoto
$.getScript("getFoto");
//Executa este método novamente após especificar 1 segundo
setTimeout("onLoadHandler()", 1000);
}
//exibe fotos
função showImg(nomedoarquivo)
{
$.getScript("showImg?img=" + nomeArquivo);
// document.getElementById("show").src="uploadfiles/" + fileName + "?now=" + new Date();
// $("#show").attr("src" , "uploadfiles/" + fileName);
}
//Função para lidar com a virada de página
função turnPage(bandeira)
{
$.getScript("turnPage?turn=" + bandeira);
}
//Abre a janela de upload
função openUpload()
{
$("#uploadDiv").show()
.diálogo(
{
modal: verdadeiro,
redimensionável: falso,
largura: 428,
altura: 220,
sobreposição: {opacidade: 0,5, fundo: "preto"}
});
}
importar javax.servlet.ServletConfig;
importar javax.servlet.ServletException;
importar javax.servlet.http.HttpServlet;
importar org.springframework.context.ApplicationContext;
importar org.springframework.web.context.support.WebApplicationContextUtils;
importar com.b510.album.service.AlbumService;
/**
*
* @autor Hongten
*
*/
classe pública BaseServlet estende HttpServlet {
privado estático final longo serialVersionUID = -2041755371540813745L;
serviço de álbum protegido como;
//Defina o construtor e obtenha uma referência para o contêiner Spring
public void init (configuração ServletConfig) lança ServletException {
super.init(config);
ApplicationContext ctx = WebApplicationContextUtils
.getWebApplicationContext(getServletContext());
as = (AlbumService) ctx.getBean("albumService");
}
}
importar java.io.IOException;
importar java.io.PrintWriter;
importar javax.servlet.ServletException;
importar javax.servlet.http.HttpServletRequest;
importar javax.servlet.http.HttpServletResponse;
importar com.b510.album.exception.AlbumException;
importar com.b510.album.web.base.BaseServlet;
/**
*
* @autor Hongten
*
*/
classe pública ValidateNameServlet estende BaseServlet {
privado estático final longo serialVersionUID = 9038839276327742641L;
serviço público void (solicitação HttpServletRequest, resposta HttpServletResponse)
lança IOException, ServletException {
String nome = request.getParameter("usuário");
resposta.setContentType("text/javascript;charset=GBK");
// Obtém o fluxo de saída
PrintWriter out = resposta.getWriter();
tentar {
if (nome! = nulo) {
if (as.validateNome(nome)) {
out.println("alert('Parabéns, este nome de usuário ainda não foi usado, você pode usar este nome de usuário!');");
} outro {
out.println("alert('Desculpe, este nome de usuário já está ocupado por outra pessoa!');");
out.println("$('#user').val('');");
}
} outro {
out.println("alert('Ocorreu uma exceção ao verificar o nome de usuário, altere o nome de usuário e tente novamente!');");
}
} catch (AlbumException ex) {
out.println("alert('" + ex.getMessage() + "Por favor, altere seu nome de usuário e tente novamente!');");
}
}
}
importar java.io.IOException;
importar java.io.PrintWriter;
importar java.util.List;
importar javax.servlet.ServletException;
importar javax.servlet.http.HttpServletRequest;
importar javax.servlet.http.HttpServletResponse;
importar javax.servlet.http.HttpSession;
importar com.b510.album.exception.AlbumException;
importar com.b510.album.vo.PhotoHolder;
importar com.b510.album.web.base.BaseServlet;
/**
*
* @autor Hongten
*
*/
classe pública TurnPageServlet estende BaseServlet {
privado estático final longo serialVersionUID = -5097286750384714951L;
serviço público void (solicitação HttpServletRequest, resposta HttpServletResponse)
lança IOException, ServletException {
String turno = request.getParameter("turn");
Sessão HttpSession = request.getSession(true);
String nome = (String) session.getAttribute("curUser");
Objeto pageObj = session.getAttribute("curPage");
// Se curPage em HttpSession for nulo, defina a página atual como a primeira página
int curPage = pageObj == nulo 1: (inteiro) pageObj;
resposta.setContentType("text/javascript;charset=GBK");
PrintWriter out = resposta.getWriter();
if (curPage == 1 && turn.equals("-1")) {
out.println("alert('Agora é a primeira página, não é possível avançar a página!')");
} outro {
// Executa a virada de página e modifica o valor de curPage.
curPage += Integer.parseInt(turn);
tentar {
List<PhotoHolder> fotos = as.getPhotoByUser(nome, curPage);
//Não há registro após virar a página
if (fotos.size() == 0) {
out.println("alert('Nenhum registro de foto encontrado após virar a página, o sistema retornará automaticamente para a página anterior')");
//Volta para a página anterior
curPage -= Integer.parseInt(turn);
} outro {
//Coloque o número da página que o usuário está navegando na HttpSession
session.setAttribute("curPage", curPage);
}
} catch (AlbumException ex) {
out.println("alert('" + ex.getMessage() + "Por favor, tente novamente!')");
}
}
}
}
importar java.io.IOException;
importar java.io.PrintWriter;
importar javax.servlet.ServletException;
importar javax.servlet.http.HttpServletRequest;
importar javax.servlet.http.HttpServletResponse;
importar javax.servlet.http.HttpSession;
importar com.b510.album.web.base.BaseServlet;
/**
*
* @autor Hongten
*
*/
classe pública ShowImgServlet estende BaseServlet {
privado estático final longo serialVersionUID = 1460203270448078666L;
serviço público void (solicitação HttpServletRequest, resposta HttpServletResponse)
lança IOException, ServletException {
String img = request.getParameter("img");
Sessão HttpSession = request.getSession(true);
//Coloque a imagem que o usuário está navegando no HttpSession.
session.setAttribute("curImg", img);
resposta.setContentType("text/javascript;charset=GBK");
// Obtém o fluxo de saída
PrintWriter out = resposta.getWriter();
out.println("$('#show').attr('src' , 'uploadfiles/" + img + "');");
}
}
importar java.io.FileOutputStream;
importar java.io.IOException;
importar java.io.InputStream;
importar java.io.PrintWriter;
importar java.util.Iterator;
importar java.util.List;
importar javax.servlet.ServletException;
importar javax.servlet.http.HttpServletRequest;
importar javax.servlet.http.HttpServletResponse;
importar org.apache.commons.fileupload.FileItem;
importar org.apache.commons.fileupload.FileItemFactory;
importar org.apache.commons.fileupload.FileUploadException;
importar org.apache.commons.fileupload.disk.DiskFileItemFactory;
importar org.apache.commons.fileupload.servlet.ServletFileUpload;
importar com.b510.album.exception.AlbumException;
importar com.b510.album.web.base.BaseServlet;
/**
*
* @autor Hongten
*
*/
@SuppressWarnings("desmarcado")
classe pública ProUploadServlet estende BaseServlet {
privado estático final longo serialVersionUID = 642229801989188793L;
serviço público void (solicitação HttpServletRequest, resposta HttpServletResponse)
lança IOException, ServletException {
Iterador iter = null;
String título = nulo;
resposta.setContentType("text/html;charset=GBK");
// Obtém o fluxo de saída
PrintWriter out = resposta.getWriter();
out.println("<script type='text/javascript>'");
tentar {
//Use o Uploader para lidar com uploads
Fábrica FileItemFactory = new DiskFileItemFactory();
Upload de ServletFileUpload = novo ServletFileUpload (fábrica);
Itens da lista = upload.parseRequest(request);
iter = itens.iterator();
//Percorre o conteúdo correspondente a cada controle do formulário
enquanto (iter.hasNext()) {
item de item de arquivo = (item de arquivo) iter.next();
//Se o item for um campo de formulário normal
if (item.isFormField()) {
String nome = item.getFieldName();
if (nome.equals("título")) {
título = item.getString("GBK");
}
}
//Se for um arquivo que precisa ser carregado
outro {
String usuário = (String) request.getSession().getAttribute(
"curUser");
String nomeArquivoservidor = null;
//retorna o nome do arquivo
String nomeArquivo = item.getNome();
// Obtém o sufixo do arquivo
String appden = nomedoarquivo.substring(nomedoarquivo
.lastIndexOf("."));
//retorna o tipo de arquivo
String contentType = item.getContentType();
// Somente imagens jpg, gif e png podem ser carregadas
if (contentType.equals("imagem/pjpeg")
|| contentType.equals("imagem/gif")
|| contentType.equals("imagem/jpeg")
|| contentType.equals("imagem/png")) {
InputStream entrada = item.getInputStream();
serverFileName = String.valueOf(Sistema
.currentTimeMillis());
Saída FileOutputStream = new FileOutputStream(
getServletContext().getRealPath("/")
+ "uploadarquivos//" + nomeArquivoservidor
+ aplicativoden);
byte[] buffer = novo byte[1024];
int len=0;
while ((len = input.read(buffer)) > 0) {
saída.write(buffer, 0, len);
}
input.close();
saída.close();
as.addPhoto(usuário, título, serverFileName + appden);
resposta.sendRedirect("album.html?resultCode=0");
} outro {
resposta.sendRedirect("album.html?resultCode=1");
}
}
}
} catch (FileUploadException foi) {
fue.printStackTrace();
resposta.sendRedirect("album.html?resultCode=2");
} catch (AlbumException ex) {
ex.printStackTrace();
}
}
}
importar java.io.IOException;
importar java.io.PrintWriter;
importar javax.servlet.ServletException;
importar javax.servlet.http.HttpServletRequest;
importar javax.servlet.http.HttpServletResponse;
importar javax.servlet.http.HttpSession;
importar com.b510.album.exception.AlbumException;
importar com.b510.album.web.base.BaseServlet;
/**
*
* @autor Hongten
*
*/
classe pública ProRegistServlet estende BaseServlet {
privado estático final longo serialVersionUID = -3174994243043815566L;
serviço público void (solicitação HttpServletRequest, resposta HttpServletResponse)
lança IOException, ServletException {
String nome = request.getParameter("usuário");
String pass = request.getParameter("pass");
resposta.setContentType("text/javascript;charset=GBK");
// Obtém o fluxo de saída
PrintWriter out = resposta.getWriter();
tentar {
out.println("$('#usuário,#pass').val('');");
if (nome! = null && pass! = null && as.registUser (nome, pass) > 0) {
Sessão HttpSession = request.getSession(true);
session.setAttribute("curUser", nome);
out.println("alert('Parabéns, você se registrou com sucesso!');");
out.println("$('#noLogin').hide(500);");
out.println("$('#hasLogin').show(500);");
//Chama o método para obter a lista de fotos
out.println("onLoadHandler();");
} outro {
out.println("alert('Seu registro falhou, escolha um nome de usuário adequado e tente novamente!');");
}
} catch (AlbumException ex) {
out.println("alert('" + ex.getMessage() + "Por favor, altere seu nome de usuário e tente novamente!');");
}
}
}
importar java.io.IOException;
importar java.io.PrintWriter;
importar javax.servlet.ServletException;
importar javax.servlet.http.HttpServletRequest;
importar javax.servlet.http.HttpServletResponse;
importar javax.servlet.http.HttpSession;
importar com.b510.album.exception.AlbumException;
importar com.b510.album.web.base.BaseServlet;
/**
*
* @autor Hongten
*
*/
classe pública ProLoginServlet estende BaseServlet {
privado estático final longo serialVersionUID = -1253530202224049958L;
serviço público void (solicitação HttpServletRequest, resposta HttpServletResponse)
lança IOException, ServletException {
String nome = request.getParameter("usuário");
String pass = request.getParameter("pass");
resposta.setContentType("text/javascript;charset=GBK");
// Obtém o fluxo de saída
PrintWriter out = resposta.getWriter();
tentar {
// Limpa o conteúdo das caixas de entrada com IDs de usuário e passa
out.println("$('#usuário,#pass').val('');");
if (nome! = null && pass! = null && as.userLogin (nome, pass)) {
Sessão HttpSession = request.getSession(true);
session.setAttribute("curUser", nome);
out.println("alert('Você efetuou login com sucesso!')");
out.println("$('#noLogin').hide(500)");
out.println("$('#hasLogin').show(500)");
//Chama o método para obter a lista de fotos
out.println("onLoadHandler();");
} outro {
out.println("alert('O nome de usuário e a senha que você digitou não coincidem, tente novamente!')");
}
} catch (AlbumException ex) {
out.println("alert('" + ex.getMessage() + "Por favor, altere seu nome de usuário e senha e tente novamente!')");
}
}
}
importar java.io.IOException;
importar java.io.PrintWriter;
importar javax.servlet.ServletException;
importar javax.servlet.http.HttpServletRequest;
importar javax.servlet.http.HttpServletResponse;
importar javax.servlet.http.HttpSession;
importar com.b510.album.web.base.BaseServlet;
/**
*
* @autor Hongten
*
*/
classe pública PageLoadServlet estende BaseServlet {
privado estático final longo serialVersionUID = 7512001492425261841L;
serviço público void (solicitação HttpServletRequest, resposta HttpServletResponse)
lança IOException, ServletException {
resposta.setContentType("text/javascript;charset=GBK");
// Obtém o fluxo de saída
PrintWriter out = resposta.getWriter();
Sessão HttpSession = request.getSession(true);
String nome = (String) session.getAttribute("curUser");
// Se o nome não for nulo, indica que o usuário efetuou login
if (nome! = nulo) {
//Ocultar o elemento com id noLogin (painel de login do usuário)
out.println("$('#noLogin').hide()");
//Ocultar o elemento com id hasLogin (Painel de Controle do Usuário)
out.println("$('#hasLogin').show()");
//Chama o método para obter a lista de fotos
out.println("onLoadHandler();");
//Retira o atributo curImg em HttpSession
String curImg = (String) session.getAttribute("curImg");
//Reexibe a foto que o usuário está navegando
if (curImg! = nulo) {
out.println("$('#show').attr('src' , 'uploadfiles/" + curImg
+ "');");
}
}
}
}
importar java.io.IOException;
importar java.io.PrintWriter;
importar java.util.List;
importar javax.servlet.ServletException;
importar javax.servlet.http.HttpServletRequest;
importar javax.servlet.http.HttpServletResponse;
importar javax.servlet.http.HttpSession;
importar com.b510.album.exception.AlbumException;
importar com.b510.album.vo.PhotoHolder;
importar com.b510.album.web.base.BaseServlet;
/**
*
* @autor Hongten
*
*/
classe pública GetPhotoServlet estende BaseServlet {
privado estático final longo serialVersionUID = -8380695760546582385L;
serviço público void (solicitação HttpServletRequest, resposta HttpServletResponse)
lança IOException, ServletException {
Sessão HttpSession = request.getSession(true);
// Obtém o número da página atual do usuário atual e a lista de fotos do sistema em HttpSession
String nome = (String) session.getAttribute("curUser");
Objeto pageObj = session.getAttribute("curPage");
// Se curPage em HttpSession for nulo, defina a página atual como a primeira página
int curPage = pageObj == nulo 1: (inteiro) pageObj;
resposta.setContentType("text/javascript;charset=GBK");
// Obtém o fluxo de saída
PrintWriter out = resposta.getWriter();
tentar {
List<PhotoHolder> fotos = as.getPhotoByUser(nome, curPage);
//Limpa o elemento com id da lista
out.println("var lista = $('#lista').empty();");
para (PhotoHolder ph: fotos) {
//Adiciona dinamicamente cada foto ao elemento com o id da lista
out.println("list.append(/"<div align='center'>"
+ "<a href='javascript:void(0)' onclick=///"showImg('"
+ ph.getFileName() + "');///">" + ph.getTitle()
+ "</a></div>/");");
}
} catch (AlbumException ex) {
out.println("alert('" + ex.getMessage() + "Por favor, tente novamente!')");
}
}
}
/**
*
* @autor Hongten
*
*/
classe pública PhotoHolder {
//O nome da foto
título da string privada;
//O nome do arquivo da foto no servidor
private String nomeArquivo;
//Construtor sem parâmetros
public PhotoHolder() {
}
//Construtor para inicializar todas as propriedades
public PhotoHolder(String título, String nome do arquivo) {
este.título = título;
this.fileName = nomedoarquivo;
}
//Os métodos setter e getter do atributo title
public void setTitle(String título) {
este.título = título;
}
public String getTítulo() {
retorne este.título;
}
//Métodos setter e getter do atributo fileName
public void setNomeArquivo(String nomeArquivo) {
this.fileName = nomedoarquivo;
}
public String getNomeArquivo() {
retorne este.nomedoarquivo;
}
}
importar java.util.ArrayList;
importar java.util.List;
importar com.b510.album.dao.PhotoDao;
importar com.b510.album.dao.UserDao;
importar com.b510.album.exception.AlbumException;
importar com.b510.album.model.Photo;
importar com.b510.album.model.User;
importar com.b510.album.service.AlbumService;
importar com.b510.album.vo.PhotoHolder;
/**
*
* @autor Hongten
*
*/
classe pública AlbumServiceImpl implementa AlbumService {
// 2 componentes DAO dos quais o componente de lógica de negócios depende
userDao privado ud = null;
privado PhotoDao pd = null;
// Injeção de dependência dos métodos setter exigidos por 2 componentes DAO
public void setUserDao(UserDaoud) {
isto.ud = ud;
}
public void setPhotoDao(PhotoDao pd) {
isto.pd = pd;
}
/**
* Verifique se o login do usuário foi bem-sucedido.
*
* @param nome
* Nome de usuário de login
* @param passar
* Senha de login
* @return O resultado do login do usuário, retorna verdadeiro se for bem sucedido, caso contrário retorna falso
*/
public boolean userLogin(String nome, String pass) {
tentar {
// Use UserDao para consultar usuários com base no nome de usuário
Usuário u = ud.findByName(nome);
if (u!= null && u.getPass().equals(pass)) {
retornar verdadeiro;
}
retornar falso;
} catch (Exceção ex) {
ex.printStackTrace();
throw new AlbumException("Ocorreu uma exceção ao processar o login do usuário!");
}
}
/**
* Cadastrar novo usuário
*
* @param nome
* Nome de usuário do usuário recém-registrado
* @param passar
* Senha para usuários recém-cadastrados
* @return a chave primária do usuário recém-registrado
*/
public int registUser(String nome, String pass) {
tentar {
//Cria uma nova instância de usuário
Usuário você = novo Usuário();
u.setNome(nome);
u.setPass(pass);
//Persiste o objeto Usuário
ud.save(u);
retornar u.getId();
} catch (Exceção ex) {
ex.printStackTrace();
throw new AlbumException("Ocorreu uma exceção durante o registro de novo usuário!");
}
}
/**
* Adicione fotos
*
*@param usuário
* Usuário que adicionou foto
* @param título
* Adicione um título à sua foto
* @param nomeArquivo
* Adicione o nome do arquivo da foto no servidor
* @return A chave primária da foto recém-adicionada
*/
public int addPhoto(String usuário, String título, String nomeArquivo) {
tentar {
//Cria uma nova instância de foto
Foto p = nova Foto();
p.setTitle(título);
p.setNomeArquivo(nomeArquivo);
p.setUser(ud.findByName(usuário));
//Instância de foto persistente
pd.save(p);
retornar p.getId();
} catch (Exceção ex) {
ex.printStackTrace();
throw new AlbumException("Ocorreu uma exceção durante a adição de fotos!");
}
}
/**
* Obtenha todas as fotos do usuário com base no usuário
*
*@param usuário
*Usuário atual
* @param páginaNão
*Número da página
* @return Retorna as fotos pertencentes ao usuário e à página especificada
*/
public List<PhotoHolder> getPhotoByUser(String usuário, int pageNo) {
tentar {
Lista<Foto> pl = pd.findByUser(ud.findByName(usuário), pageNo);
List<PhotoHolder> resultado = new ArrayList<PhotoHolder>();
para (Foto p: pl) {
resultado.add(new PhotoHolder(p.getTitle(), p.getFileName()));
}
resultado de retorno;
} catch (Exceção ex) {
ex.printStackTrace();
throw new AlbumException("Ocorreu uma exceção ao consultar a lista de fotos!");
}
}
/**
* Verifique se o nome de usuário está disponível, ou seja, se o nome de usuário já existe no banco de dados
*
* @param nome
* Nome de usuário que precisa ser verificado
* @return Retorna verdadeiro se o nome de usuário estiver disponível, caso contrário retorna falso.
*/
public boolean validarNome(Nome da string) {
tentar {
// Consulta a instância de usuário correspondente com base no nome de usuário
Usuário u = ud.findByName(nome);
if (você! = nulo) {
retornar falso;
}
retornar verdadeiro;
} catch (Exceção ex) {
ex.printStackTrace();
throw new AlbumException("Ocorreu uma exceção durante o processo de verificação se o nome de usuário existe!");
}
}
}
importar java.util.List;
importar com.b510.album.vo.PhotoHolder;
/**
*
* @autor Hongten
*
*/
interface pública AlbumService {
/**
* Verifique se o login do usuário foi bem-sucedido.
*
* @param nome
* Nome de usuário de login
* @param passar
* Senha de login
* @return O resultado do login do usuário, retorna verdadeiro se for bem sucedido, caso contrário retorna falso
*/
boolean userLogin (String nome, String pass);
/**
* Cadastrar novo usuário
*
* @param nome
* Nome de usuário do usuário recém-registrado
* @param passar
* Senha para usuários recém-cadastrados
* @return a chave primária do usuário recém-registrado
*/
int RegisterUser(String nome, String pass);
/**
* Adicione fotos
*
*@param usuário
* Usuário que adicionou foto
* @param título
* Adicione um título à sua foto
* @param nomeArquivo
* Adicione o nome do arquivo da foto no servidor
* @return A chave primária da foto recém-adicionada
*/
int addPhoto(String usuário, String título, String nomeArquivo);
/**
* Obtenha todas as fotos do usuário com base no usuário
*
*@param usuário
*Usuário atual
* @param páginaNão
*Número da página
* @return Retorna as fotos pertencentes ao usuário e à página especificada
*/
List<PhotoHolder> getPhotoByUser(String usuário, int pageNo);
/**
* Verifique se o nome de usuário está disponível, ou seja, se o nome de usuário já existe no banco de dados
*
* @param nome
* Nome de usuário que precisa ser verificado
* @return Retorna verdadeiro se o nome de usuário estiver disponível, caso contrário retorna falso.
*/
booleano validarNome(String nome);
}
/**
* Classe de entidade fotográfica
*
* @autor Hongten
*
*/
classe pública Foto {
//Atributo de identificação
ID inteiro privado;
//O nome da foto
título da string privada;
//O nome do arquivo da foto no servidor
private String nomeArquivo;
//Salva o usuário ao qual a foto pertence
usuário usuário privado;
//Construtor sem parâmetros
Foto pública() {
}
//Construtor para inicializar todas as propriedades
Foto pública (ID inteiro, String título, String fileName, Usuário usuário) {
isto.id = id;
este.título = título;
this.fileName = nomedoarquivo;
this.User = usuário;
}
// Métodos de setter e getter de atributo de identificação
public void SetId (ID inteiro) {
isto.id = id;
}
public integer getid () {
devolver isso.id;
}
// Os métodos Setter e Getter do atributo de título
public void Settitle (título da string) {
this.title = title;
}
public string gettitle () {
devolver este.title;
}
// Métodos de Setter e Getter de atributo de nome do arquivo
public void setFilename (String FileName) {
this.Filename = FileName;
}
public String getFilename () {
devolver este.filename;
}
// Métodos de setter e getter de atributo de usuário
public void SetUser (usuário do usuário) {
this.User = usuário;
}
Usuário público getUser () {
devolver este.User;
}
}
importar java.util.set;
importar java.util.hashset;
/**
* Classe de entidade do usuário
*
* @autor Hongten
*
*/
Public Class User {
// Atributo de identificação
ID inteiro privado;
// O nome de usuário do usuário
nome da string privada;
// Senha deste usuário
Passo de string privado;
// Use definido para salvar as fotos associadas a este usuário
Conjunto privado <Photo> Fotos = novo hashset <Photo> ();
// construtor sem parâmetros
public user () {
}
// construtor para inicializar todas as propriedades
Usuário público (ID inteiro, nome da string, String pass) {
isto.id = id;
este.nome = nome;
this.pass = pass;
}
// Métodos de setter e getter de atributo de identificação
public void SetId (ID inteiro) {
isto.id = id;
}
public integer getid () {
devolver isso.id;
}
// Métodos de setter e getter de atributo de nome
public void setNome(Nome da string) {
este.nome = nome;
}
public String getNome() {
retorne este.nome;
}
// Métodos de Setter e Getter de Pass atributo
public void setPass (String pass) {
this.pass = pass;
}
public String getPass () {
devolver este.pass;
}
// Setter e getter Métodos de fotos atributo
public void setphotos (Set <Photo> Fotos) {
this.photos = fotos;
}
Public Set <Photo> getphotos () {
retornar this.photos;
}
}
/**
*Exceção personalizada
*
* @autor Hongten
*
*/
classe pública albumException estende o RUNTimeException {
private estático final serialversionUid = 8050756054850450421L;
// fornece um construtor sem parâmetros
public albumException () {
}
// Forneça a um construtor parâmetros de string
public albumException (string msg) {
super (msg);
}
}
importar java.sql.SQLException;
importar java.util.List;
importar org.hibernate.hibernateException;
importar org.hibernate.Query;
importar org.hibernate.session;
importar org.springframework.orm.hibernate3.hibernatecallback;
importar org.springframework.orm.hibernate3.support.hibernatedaosupport;
/**
*
* @autor Hongten
*
*/
@Suppresswarnings ("sem controle")
classe pública HongtenHibernatedAosupport estende Hibernatedaosupport {
/**
* Use declarações HQL para operações de consulta de paginação
*
* @param hql
* Declaração HQL a ser consultada
* @param offset
* Índice do primeiro registro
* @param Pagesize
*O número de registros a serem exibidos em cada página
* @return Todos os registros da página atual
*/
Lista pública FindBypage (Final String HQL, Final Int Offset,
Final int PageSize) {
Lista Lista = GethibernateTemplate (). ExecuteFind (new Hibernatecallback () {
objeto público doinibernate (sessão)
lança hibernateException, sqlexception {
Resultado da lista = session.CreateQuery (HQL) .setFirstresult (deslocamento)
.setMaxResults (Pagesize) .List ();
resultado de retorno;
}
});
lista de retorno;
}
/**
* Use declarações HQL para operações de consulta de paginação
*
* @param hql
* Declaração HQL a ser consultada
* @param valor
* Se o HQL tiver um parâmetro que precisa ser transmitido, o valor é o parâmetro passado.
* @param offset
* Índice do primeiro registro
* @param Pagesize
*O número de registros a serem exibidos em cada página
* @return Todos os registros da página atual
*/
Lista pública FindBypage (HQL final da string, valor final do objeto,
Final Int Offset, Final Int PageSize) {
Lista Lista = GethibernateTemplate (). ExecuteFind (new Hibernatecallback () {
objeto público doinibernate (sessão)
lança hibernateException, sqlexception {
Resultado da lista = session.CreateQuery (HQL) .SetParameter (0, valor)
.setFirstResult (deslocamento) .SetMaxResults (Pagesize) .List ();
resultado de retorno;
}
});
lista de retorno;
}
/**
* Use declarações HQL para operações de consulta de paginação
*
* @param hql
* Declaração HQL a ser consultada
* valores @param
* Se o HQL tiver vários parâmetros que precisam ser transmitidos, os valores são a matriz de parâmetros passada.
* @param offset
* Índice do primeiro registro
* @param Pagesize
*O número de registros a serem exibidos em cada página
* @return Todos os registros da página atual
*/
Public List FindBypage (Final String HQL, valores finais do objeto [],
Final Int Offset, Final Int PageSize) {
Lista Lista = GethibernateTemplate (). ExecuteFind (new Hibernatecallback () {
objeto público doinibernate (sessão)
lança hibernateException, sqlexception {
Query Query = Session.CreateQuery (HQL);
for (int i = 0; i <valores.length; i ++) {
query.setParameter (i, valores [i]);
}
Resultado da lista = query.setfirstresult (deslocamento) .setMaxResults (
PageSize) .List ();
resultado de retorno;
}
});
lista de retorno;
}
}
importar java.util.List;
importação com.b510.album.dao.photodao;
importação com.b510.album.enhance.hongtenHibernatedaosupport;
importação com.b510.album.model.photo;
importação com.b510.album.model.user;
/**
*
* @autor Hongten
*
*/
@Suppresswarnings ("sem controle")
A classe pública PhotodaoHibernate estende os implementos de HongtenHibernatedaosupport
Photodao {
/**
* Carregue a instância da foto com base no atributo de identificação
*
* @param id
* O valor do atributo de identidade da instância da foto que precisa ser carregada
* @RETURN A instância da foto correspondente ao atributo de identificação especificado
*/
Foto pública Get (ID inteiro) {
retornar (foto) gethibernateTemplate (). get (foto.class, id);
}
/**
* Persiste a instância de foto especificada
*
* @param foto
* Instância de foto que precisa ser persistida
* @RETURN O valor do atributo de identidade após persistir a instância da foto
*/
Public integer salvar (foto foto) {
return (inteiro) gethibernateTemplate (). salvar (foto);
}
/**
* Modifique a instância de foto especificada
*
* @param foto
* Instância de foto que precisa ser modificada
*/
public void update (foto foto) {
gethibernateTemplate (). update (foto);
}
/**
* Exclua a instância de foto especificada
*
* @param foto
* Instância de foto que precisa ser excluída
*/
Public void Delete (foto foto) {
gethibernateTemplate (). delete (foto);
}
/**
* Exclua instância de foto com base no atributo de identificação
*
* @param id
* O valor do atributo de identificação da instância da foto que precisa ser excluída
*/
public void Excluir (ID inteiro) {
gethibernateTemplate (). Excluir (get (id));
}
/**
* Consulta todas as instâncias fotográficas
*
* @return todas as instâncias fotográficas no banco de dados
*/
Lista pública <Photo> findAll () {
return (list <Photo>) gethibernateTemplate (). encontre ("de foto");
}
/**
* Fotos de consulta pertencentes a usuários especificados e executar controle de paginação
*
* Usuário @param
* Consulte o usuário cuja foto pertence a
* @param pageno
*Página especificada a ser consultada
* @RETURN A foto consultada
*/
Lista pública <Photo> FindByUser (usuário do usuário, int pageno) {
int offset = (pageno - 1) * Page_size;
// retorna os resultados da consulta de paginação
Return (List <Photo>) FindBypage ("da foto B onde B.User =?", Usuário, Usuário,
deslocamento, página_size);
}
}
importar java.util.List;
importação com.b510.album.dao.userdao;
importação com.b510.album.enhance.hongtenHibernatedaosupport;
importação com.b510.album.model.user;
/**
*
* @autor Hongten
*
*/
@Suppresswarnings ("sem controle")
classe pública userdaohibernate estende hongtenhibernatedaosupport implementos
Userdao {
/**
* Carregue a instância do usuário com base no atributo de identificação
*
* @param id
* O valor do atributo de identidade da instância do usuário que precisa ser carregado
* @return user instância correspondente ao atributo de identificação especificado
*/
Usuário público Get (ID inteiro) {
return (usuário) gethibernateTemplate (). get (user.class, id);
}
/**
* Persiste a instância do usuário especificado
*
* Usuário @param
* Instância do usuário que precisa ser persistida
* @RETURN O valor do atributo de identidade após persistir a instância do usuário
*/
Public Integer Save (usuário do usuário) {
retornar (inteiro) gethibernateTemplate (). salvar (usuário);
}
/**
* Modifique a instância do usuário especificado
*
* Usuário @param
* A instância do usuário que precisa ser modificada
*/
public void update (usuário do usuário) {
gethibernateTemplate (). update (usuário);
}
/**
* Exclua a instância do usuário especificado
*
* Usuário @param
* Instância do usuário que precisa ser excluída
*/
public void Delete (usuário do usuário) {
gethibernateTemplate (). delete (usuário);
}
/**
* Exclua a instância do usuário com base no atributo de identificação
*
* @param id
* O valor do atributo de identificação da instância do usuário que precisa ser excluído
*/
public void Excluir (ID inteiro) {
gethibernateTemplate (). Excluir (get (id));
}
/**
* Consulta todas as instâncias de usuário
*
* @return todas as instâncias de usuário no banco de dados
*/
Lista pública <suser> findAll () {
return (list <suser>) gethibernateTemplate (). find ("do usuário");
}
/**
* Encontre usuários com base no nome de usuário
*
* Nome @param
* O nome de usuário do usuário a ser encontrado
* @RETURN O usuário encontrado
*/
Public User FindByName (Nome da String) {
List <suário> usuários = (list <suser>) gethibernateTemplate (). Find (
"Do usuário u, onde u.name =?", nome);
if (usuários! = null && users.size () == 1) {
retornar usuários.get (0);
}
retornar nulo;
}
}
importar java.util.List;
importação com.b510.album.model.photo;
importação com.b510.album.model.user;
/**
* Interface Photodao
*
* @autor Hongten
*
*/
interface pública Photodao {
// Use constantes para controlar o número de fotos exibidas em cada página
final int Page_size = 8;
/**
* Carregue a instância da foto com base no atributo de identificação
*
* @param id
* O valor do atributo de identidade da instância da foto que precisa ser carregada
* @RETURN A instância da foto correspondente ao atributo de identificação especificado
*/
Foto Get (ID inteiro);
/**
* Persiste a instância de foto especificada
*
* @param foto
* Instância de foto que precisa ser persistida
* @RETURN O valor do atributo de identidade após persistir a instância da foto
*/
Inteiro salvar (foto foto);
/**
* Modifique a instância de foto especificada
*
* @param foto
* Instância de foto que precisa ser modificada
*/
Atualização vazia (foto foto);
/**
* Exclua a instância de foto especificada
*
* @param foto
* Instância de foto que precisa ser excluída
*/
Excluir void (foto foto);
/**
* Exclua instância de foto com base no atributo de identificação
*
* @param id
* O valor do atributo de identificação da instância da foto que precisa ser excluída
*/
Excluir void (ID inteiro);
/**
* Consulta todas as instâncias fotográficas
*
* @return todas as instâncias fotográficas no banco de dados
*/
Lista <Photo> findAll ();
/**
* Fotos de consulta pertencentes a usuários especificados e executar controle de paginação
*
* Usuário @param
* Consulte o usuário cuja foto pertence a
* @param pageno
*Página especificada a ser consultada
* @RETURN A foto consultada
*/
Lista <Photo> FindByUser (usuário do usuário, int pageno);
}
importar java.util.List;
importação com.b510.album.model.user;
/**
* Interface do userdao
*
* @autor Hongten
*
*/
interface pública Userdao {
/**
* Carregue a instância do usuário com base no atributo de identificação
*
* @param id
* O valor do atributo de identidade da instância do usuário que precisa ser carregado
* @return user instância correspondente ao atributo de identificação especificado
*/
Usuário obtém (ID inteiro);
/**
* Persiste a instância do usuário especificado
*
* Usuário @param
* Instância do usuário que precisa ser persistida
* @RETURN O valor do atributo de identidade após persistir a instância do usuário
*/
Inteiro salvar (usuário do usuário);
/**
* Modifique a instância do usuário especificado
*
* Usuário @param
* A instância do usuário que precisa ser modificada
*/
Atualização void (usuário do usuário);
/**
* Exclua a instância do usuário especificado
*
* Usuário @param
* Instância do usuário que precisa ser excluída
*/
Excluir void (usuário do usuário);
/**
* Exclua a instância do usuário com base no atributo de identificação
*
* @param id
* O valor do atributo de identificação da instância do usuário que precisa ser excluído
*/
Excluir void (ID inteiro);
/**
* Consulta todas as instâncias de usuário
*
* @return todas as instâncias de usuário no banco de dados
*/
Lista <suser> findAll ();
/**
* Encontre usuários com base no nome de usuário
*
* Nome @param
* O nome de usuário do usuário a ser encontrado
* @RETURN O usuário encontrado
*/
Usuário findbyname (nome da string);
}
Como o projeto parece relativamente grande após a adição do pacote JAR, o pacote JAR é cancelado aqui.
A seguir, o anexo : Ajax_jquery_album_jb51net.rar (download do código -fonte)