主:项目地址:http://download.csdn.net/download/qq_28316183/9977095:
1.首先看数据表结构
user表:
album表:
picture表:
2.查看项目的目录树;
3.登录页面index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>登录我的相册</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="css/normalize.css" />
<link rel="stylesheet" type="text/css" href="css/demo.css" />
<link rel="stylesheet" type="text/css" href="css/component.css" />
<link rel="stylesheet" type="text/css" href="css/content.css" />
<script src="js/modernizr.custom.js"></script>
</head>
<body>
<body>
<div class="container">
<header class="codrops-header">
<h1>相册管理系统</h1>
<p>记录下美好瞬间</p>
<nav class="codrops-demos">
<a class="current-demo" href="index.html">登录/注册</a>
</nav>
</header>
<section>
<p>请选择以下<strong>选项</strong>:</p>
<div class="mockup-content">
<p>1234567890</p>
<div class="morph-button morph-button-modal morph-button-modal-2 morph-button-fixed">
<button type="button">登录</button>
<div class="morph-content">
<div>
<div class="content-style-form content-style-form-1">
<span class="icon icon-close">Close the dialog</span>
<h2>登录</h2>
<form action="LoginServlet" method="post">
<p><label>账号:</label><input type="text" name="username" /></p>
<p><label>密码:</label><input type="password" name="password" /></p>
<p><input type="submit" id="button" value="登录"></p>
</form>
</div>
</div>
</div>
</div><!-- morph-button -->
<strong class="joiner">or</strong>
<div class="morph-button morph-button-modal morph-button-modal-3 morph-button-fixed">
<button type="button">注册</button>
<div class="morph-content">
<div>
<div class="content-style-form content-style-form-2">
<span class="icon icon-close">Close the dialog</span>
<h2>注册</h2>
<form action="SaveUser" method="post">
<p><label>账号:</label><input type="text" name="username" /></p>
<p><label>密码:</label><input type="password" name="password" /></p>
<p><label>重新输入密码:</label><input type="password" name="repassword"/></p>
<p><input type="submit" id="button" value="注册"></p>
</form>
</div>
</div>
</div>
</div><!-- morph-button -->
<p>Kohlrabi radish okra azuki bean corn fava bean mustard tigernut juccama green bean celtuce collard greens avocado quandong.</p>
</div><!-- /form-mockup -->
</section>
</div><!-- /container -->
<script src="js/classie.js"></script>
<script src="js/uiMorphingButton_fixed.js"></script>
<script>
(function() {
var docElem = window.document.documentElement, didScroll, scrollPosition;
// trick to prevent scrolling when opening/closing button
function noScrollFn() {
window.scrollTo( scrollPosition ? scrollPosition.x : 0, scrollPosition ? scrollPosition.y : 0 );
}
function noScroll() {
window.removeEventListener( 'scroll', scrollHandler );
window.addEventListener( 'scroll', noScrollFn );
}
function scrollFn() {
window.addEventListener( 'scroll', scrollHandler );
}
function canScroll() {
window.removeEventListener( 'scroll', noScrollFn );
scrollFn();
}
function scrollHandler() {
if( !didScroll ) {
didScroll = true;
setTimeout( function() { scrollPage(); }, 60 );
}
};
function scrollPage() {
scrollPosition = { x : window.pageXOffset || docElem.scrollLeft, y : window.pageYOffset || docElem.scrollTop };
didScroll = false;
};
scrollFn();
[].slice.call( document.querySelectorAll( '.morph-button' ) ).forEach( function( bttn ) {
new UIMorphingButton( bttn, {
closeEl : '.icon-close',
onBeforeOpen : function() {
// don't allow to scroll
noScroll();
},
onAfterOpen : function() {
// can scroll again
canScroll();
},
onBeforeClose : function() {
// don't allow to scroll
noScroll();
},
onAfterClose : function() {
// can scroll again
canScroll();
}
} );
} );
// for demo purposes only
[].slice.call( document.querySelectorAll( 'form button' ) ).forEach( function( bttn ) {
bttn.addEventListener( 'click', function( ev ) { ev.preventDefault(); } );
} );
})();
</script>
</body>
</body>
</html>
用户登录的Servlet:LoginServlet:
package com.jkx.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.jkx.dao.AlbumDao;
import com.jkx.dao.UserDao;
import com.jkx.po.Album;
import com.jkx.po.User;
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//对获取的参数有效,但不一定能解决问题,默认只适合post提交
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
PrintWriter out =response.getWriter();
String qq=request.getParameter("username");
qq=new String(qq.getBytes("gbk"),"utf-8");//支队所传的参数有效
String pass=request.getParameter("password");
UserDao userdao=UserDao.getIntance();
User user=userdao.getUserByusernameAndPasswoed(qq, pass);
int userid=user.getUserid();
if(user!=null)
{
AlbumDao albumdao=AlbumDao.getIntance();
List<Album> albumlist=albumdao.getAlbumListbyuseris(userid);
request.setAttribute("albumlist", albumlist);
HttpSession session=request.getSession();
session.setAttribute("user", qq);
request.getRequestDispatcher("/ImageAlbum.jsp").forward(request,response);
return ; //结束语句
}
else
{
// request.getRequestDispatcher("/fail.jsp").forward(request,response);
response.sendRedirect("/fail.jsp");
return ; //����
}
}
}
用户注册的Servlet:SaveUser
package com.jkx.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jkx.dao.UserDao;
import com.jkx.po.User;
public class SaveUser extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOExce