图片艺廊管理网站说明
- 数据库设计:
主要由三张表:用户表、图片表、用户图片对应关系表。
- 用户表:
主要字段如下:
用户ID 整型 主键 自增长;
用户姓名 字符型 ;
用户密码 字符型 ;
- 文件表:
主要字段如下:
文件ID 整型 主键 自增长;
文件名 字符型;
文件类别 字符型;
- 用户图片对应关系表:
主要字段如下:
文件ID 整形;
用户姓名 字符型;
主键(文件ID,用户姓名);
外键 文件ID参照文件表(文件ID),用户姓名参照用户表(用户姓名);
- 网站设计前端与后端设计
本网站后端主要是由dao层、filter层、javaBean层、servletHandle层、untilBean层组成,前端主要是由css层、error层、images层、personalIndex层、index.jsp、regist.Jsp组成。
后端详细说明:
- dao层:存放操作数据库java类,主要组成如下。
ImageDao:实现对Image表的增删改查功能,涉及到与user_file表的组合查询,和数据库分页技术.
userDao:实现对user表的增删改查功能,涉及到与user_file表的组合查询。
- Filter层:用来处理REQUEST、FORWARD对JSp、servlet发起的每一次请求或请求转发的过滤,用来重新设置,请求与响应的contenType和编码,防止JSp、servlet之间转发、重定向时而会引起乱码的现象。
- javaBean层:这里要是实体bean:UserBean、IamgeBean与关系Bean:User_iamgeBean。用来dao层向servlet层传数据时对数据进行包装。
- servletHandle层:用来向前台发送数据,处理各种业务逻辑。
AddImageServlet:处理页面增加图片的请求,向数据库中插入记录,并向jsp返回结果
deleteImageServlet:处理页面删图片的请求,向数据库中删除记录,并向jsp返回结果
LoginImageServlet:处理页面加载图片的请求,从数据库中获取记录,并向jsp返回结果
UpdateUserPass:处理页面修改密码的请求,向数据库中修改记录,并向jsp返回结果
UserLoginServlet:处理页面加载用户的请求,从数据库中获取记录,并向jsp返回结果
UserRegistServlet:处理页面注册用户的请求,向数据库中插入记录,并向jsp返回结果
- untilBean层:采用工厂设计模式写了一个对数据库操作的工具类;主要是数据库的链接和操作数据库的静态方法。
前端详细说明:
- css层:主要是存放JSP页面的css样式表,每一张jsp对应一张样式表
- Error层:用来存放404(服务器找不到请求的网页)与500(服务器内部错误)发生时,所展示图片,当服务器错误时来给用户以更好地体验效果。
- images层:用来存放jsp页面上所用到的图片。
- personalIndex层:主要是存放网页主页上jsp,和img层;详细说明如下:
AddImage.jsp:增加图片的界面
PersonalIndex.jsp:用户主页,照片展示页面
Update Pass.jsp:用户修改密码界面
Img层:用来存放用户所上传的图片。
- index.jsp:登陆界面
- Regist.jsp:注册界面
- 网站制作过程遇到的困难
- 在网页制作过程中,涉及到各种差错处理、页面加载数据等等:例如用户名为空、用户名密码不匹配、加载数据失败等等一系列错误信息和图片链表等数据该如何在JSP中显示,首先链表的显示就要用到循环语句,而java老师常说jsp中尽量不要嵌入java代码。
于是我就想到了用EL表达式,而循环控制用到java标准标签库相关知识;又因为Servlet层向jsp层传的参数作用在不同的范围有session层、request层的数据,而el表达式恰好很方便的能解决这些问题。
- 在制作过程中,由于要求用到数据库分页技术,那么这将涉及到大量的数据,这些数据该如何展示,第一次想到的是页面分页展示,却又对如何分页展示没有头绪。
经历过大量试探之后,想到了一个数据库分页展示的方法,第一次加在数据的时候;首先将查询的结果集缓存到本地,用CachedRowSet将rs中的数据取出来,规定好一页15条记录。采用分页查询获取记录的前15条;封装成对象链表,向前台传入传入链表并展示。当点击下一页的时候。从servlet层取出第二页数据并展示,中间涉及到很多差错控制逻辑。
- 网页制作过程中有时遇到乱码问题。比如用response.getWriter()方法展示一些文字就会乱码,每次都要设置request的编码,和response的contenType很麻烦。
于是就想到了用过滤器来过滤每一次请求,并为其设置编码格式;和resonpse的contentType。
- 网页图片上很多的类别,刚开始不知道该如何按类别来加载这些图片,如何在servlet层处理这些逻辑。
最后处理是在IamgeDao中增加一个按类别、按用户名加载图片的方法,在servlet层进行调用,根据a链接传来的参数来加载图片数据传到jsp层。
注意:演示视频中需要大量的数据需要插入数据库。请先把personal/Img文件中存在的图片全部删除后在进行操作!
注:工程源码已上传至csdn