九宫格记忆网开发背景及功能结构 九宫格记忆网开发方案 当前速看
1.1开发背景
(资料图)
随着工作和生活节奏的不断加快,属于自己的私人时间越来越少,日记这种传统的倾诉方式也逐渐被人们淡忘,取而代之的是各种各样的网络日志。最近网络中又出现了一种全新的日记方式一九宫格日记,它由9个方方正正的格子组成,让用户可以像做填空题那样对号入座,填写相应的内容,从而完成一篇日记,整个过程不过几分钟,非常适合在快节奏的生活中,留下自己的心灵足迹。
1.2 需求分析
通过实际调查,要求九宫格日记网具有以下功能:
1.为了更好地体现九宫格日记的特点,需要以图片的形式保存每篇日记,并且日记的内容写在九宫格中。
2.为了便于浏览,默认情况下,只显示日记的缩略图。
3.对于每篇日记需要提供查看原图、左转和右转功能。
4.需要提供分页浏览日记列表功能。
5.写日记时,需要提供预览功能。
6.在保存日记时,需要生成日记图片和对应的缩略图。
1.3 系统设计
1.3.1系统目标
根据需求分析的描述及与用户的沟通,现制定网站实现目标如下: 界面友好、美观。区
2.日记内容灵活多变,既可以做选择题,也可以做填空题。
3.采用Ajax实现无刷新数据验证。
4.网站运行稳定可靠。
5.具有多浏览器兼容性,既要保证在Google Chrome上正常运行,又要保证在IE浏览器上正常运行。
1.3.2功能结构
九宫格记忆网的功能结构如下所示。
1.3.3功能结构
九宫格记忆网的系统流程如下所示:
1.3.4开发环境
系统开发环境要求 1.操作系统:Windows 10。 2.JDK环境:Java SE Development Kit(JDK) version 8。 3.开发工具:Eclipse。 4.Web服务器:Tomcat 9.0。 5.开发技术:Java Web + Ajax + jQuery。 6.数据库:MySQL 8.0数据库。
1.3.5系统预览
九宫格记忆网中有多个页面,下面列出网站中几个典型页面的预览。
1.主页面如下
当用户访问九宫格记忆网时,首先进入的是网站的主界面。九宫格记忆网的主界面主要包括以下4部分内容。 1.1 Banner信息栏:主要用于显示网站的Logo。 1.2 导航栏:主要用于显示网站的导航信息及欢迎信息。其中导航目将根据是否登录而显示不同的内容。 1.3主显示区:主要用于分页显示九宫格日记列表。 1.4版权信息栏:主要用于显示版权信息。 2.登录页面如下: 3.写日记页面如下,该页面用于填写日记信息,允许用户选择并预览自己喜欢的模板,以及选择预览日记内容等等。 1.4 数据库设计 1.4.1数据库设计 1.4.2 tb_user(用户信息表) 1.4.3 tb_diary(日记表) 1.4.4 tb_comments(评论记录表) 1.4.5 tb_likes(点赞记录表)
1.5部分源码
文件夹组织结构
数据库连接(ConnDB):package com.mr.tools;import java.io.InputStream; //导入java.io.InputStream类import java.sql.*; //导入java.sql包中的所有类import java.util.Properties; //导入java.util.Properties类public class ConnDB {public Connection conn = null; // 声明Connection对象的实例 public Statement stmt = null; // 声明Statement对象的实例 public ResultSet rs = null; // 声明ResultSet对象的实例 private static String propFileName = "connDB.properties"; // 指定资源文件保存的位置 private static Properties prop = new Properties(); // 创建并实例化Properties对象的实例 private static String dbClassName = "com.mysql.jdbc.Driver"; // 定义保存数据库驱动的变量 private static String dbUrl = "jdbc:mysql://localhost:3306/db_9griddiary?user=root&password=123456&useUnicode=true&"; public ConnDB() {// 构造方法 try {// 捕捉异常 // 将Properties文件读取到InputStream对象中 InputStream in = getClass().getResourceAsStream(propFileName); prop.load(in); // 通过输入流对象加载Properties文件 dbClassName = prop.getProperty("DB_CLASS_NAME"); // 获取数据库驱动 // 获取连接的URL dbUrl = prop.getProperty("DB_URL", dbUrl); } catch (Exception e) {e.printStackTrace(); // 输出异常信息 } } /** * 功能:获取连接的语句 * * @return */ public static Connection getConnection() {Connection conn = null; try {// 连接数据库时可能发生异常因此需要捕捉该异常 Class.forName(dbClassName).newInstance(); // 装载数据库驱动 conn = DriverManager.getConnection(dbUrl); // 建立与数据库URL中定义的数据库的连接 } catch (Exception ee) {ee.printStackTrace(); // 输出异常信息 } if (conn == null) {System.err .println("警告: DbConnectionManager.getConnection() 获得数据库链接失败.\r\n\r\n链接类型:" + dbClassName + "\r\n链接位置:" + dbUrl); // 在控制台上输出提示信息 } return conn; // 返回数据库连接对象 } /* * 功能:执行查询语句 */ public ResultSet executeQuery(String sql) {try {// 捕捉异常 conn = getConnection(); // 调用getConnection()方法构造Connection对象的一个实例conn stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = stmt.executeQuery(sql); } catch (SQLException ex) {System.err.println(ex.getMessage()); // 输出异常信息 } return rs; // 返回结果集对象 } /* * 功能:执行更新操作 */ public int executeUpdate(String sql) {int result = 0; // 定义保存返回值的变量 try {// 捕捉异常 conn = getConnection(); // 调用getConnection()方法构造Connection对象的一个实例conn stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); result = stmt.executeUpdate(sql); // 执行更新操作 } catch (SQLException ex) {result = 0; // 将保存返回值的变量赋值为0 } return result; // 返回保存返回值的变量 } /* * 功能:关闭数据库的连接 */ public void close() {try {// 捕捉异常 if (rs != null) {// 当ResultSet对象的实例rs不为空时 rs.close(); // 关闭ResultSet对象 } if (stmt != null) {// 当Statement对象的实例stmt不为空时 stmt.close(); // 关闭Statement对象 } if (conn != null) {// 当Connection对象的实例conn不为空时 conn.close(); // 关闭Connection对象 } } catch (Exception e) {e.printStackTrace(System.err); // 输出异常信息} }}配置中文乱码的过滤器(CharacterEncodingFilter)package com.mr.filter;import java.io.IOException;import javax.servlet.*;public class CharacterEncodingFilter implements Filter {protected String encoding = null; // 定义编码格式变量 protected FilterConfig filterConfig = null; // 定义过滤器配置对象 public void init(FilterConfig filterConfig) throws ServletException {this.filterConfig = filterConfig; // 初始化过滤器配置对象 this.encoding = filterConfig.getInitParameter("encoding"); // 获取配置文件中指定的编码格式 } // 过滤器的接口方法,用于执行过滤业务 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {if (encoding != null) {request.setCharacterEncoding(encoding); // 设置请求的编码 // 设置应答对象的内容类型(包括编码格式) response.setContentType("text/html; charset=" + encoding); } chain.doFilter(request, response); // 传递给下一个过滤器 } public void destroy() {this.encoding = null; this.filterConfig = null; }}编写实体类User.javapackage com.mr.model;public class User {private int id = 0;// 用户ID private String username = "";// 用户名 private String pwd = "";// 密码 private String email = "";// E-mail地址 private String question = "";// 密码提示问题 private String answer = "";// 密码提示问题答案 private String city = "";// 所在地 public String getEmail() {return email; } public void setEmail(String email) {this.email = email; } public String getQuestion() {return question; } public void setQuestion(String question) {this.question = question; } public String getAnswer() {return answer; } public void setAnswer(String answer) {this.answer = answer; } public String getCity() {return city; } public void setCity(String city) {this.city = city; } public int getId() {return id; } public void setId(int id) {this.id = id; } public String getUsername() {return username; } public void setUsername(String username) {this.username = username; } public String getPwd() {return pwd; } public void setPwd(String pwd) {this.pwd = pwd; }}Diary.javapackage com.mr.model;import java.util.Date;import java.util.LinkedList;import java.util.List;/** * 日记类 * */public class Diary {private int id = 0;// 日记ID号 private String title = "";// 日记标题 private String address = "";// 日记图片地址 private Date writeTime = null;// 写日记的时间 private int userid = 0;// 用户ID private String username = "";// 用户名 private Listcomments;// 日志评论 private int likes;// 点赞数 public Diary() {super(); } public String getUsername() {return username; } public void setUsername(String username) {this.username = username; } public int getId() {return id; } public void setId(int id) {this.id = id; } public String getTitle() {return title; } public void setTitle(String title) {this.title = title; } public String getAddress() {return address; } public void setAddress(String address) {this.address = address; } public Date getWriteTime() {return writeTime; } public void setWriteTime(Date writeTime) {this.writeTime = writeTime; } public int getUserid() {return userid; } public void setUserid(int userid) {this.userid = userid; } public ListgetComments() {return comments; } public void setComments(Listcomments) {this.comments = comments; } public int getLikes() {return likes; } public void setLikes(int likes) {this.likes = likes; }}Comment.javapackage com.mr.model;/** * 评论类 * */public class Commnet {private int id;// 留言编号 private String fromUserName;// 留言人 private String content;// 留言内容 private String create_time;// 留言时间 private boolean valid;// 是否有效 public Commnet() {super(); } public int getId() {return id; } public void setId(int id) {this.id = id; } public String getContent() {return content; } public void setContent(String content) {this.content = content; } public String getFromUserName() {return fromUserName; } public void setFromUserName(String fromUserName) {this.fromUserName = fromUserName; } public String getCreate_time() {return create_time; } public void setCreate_time(String create_time) {this.create_time = create_time; } public boolean isValid() {return valid; } public void setValid(boolean valid) {this.valid = valid; }}
1.6小 结 以上介绍的九宫格记忆网中,应用到了很多关键的技术,这些技术在开发过程中都是比较常用的技术。例如,采用了DIV+CSS布局、用户注册功能是通过Ajax实现的、在Servlet中生成日记图片技术和生成缩略图技术等,
标签:
相关推荐:
最新新闻:
- 不同种类的笔记本电脑键盘有哪些优缺点?笔记本键盘优缺点解析 世界快播报
- 如何挑选数码相机?数码相机的基本性能有哪些?:全球播报
- 电脑端的explorer对话框为什么很慢?解决方法是什么?
- 【教程】Devteam最新破解工具终于出炉了
- 2021年国家开放大学计算机网络(本)试题及答案 世界观察
- 微视频在计算机信息技术教学中的作用及特点 你知道多少? 热消息
- 热血无赖怎么使用计算机?Win7系统进不去热血无赖游戏如何解决?
- 焦点快报!如何用Google在线翻译引擎实现多国语言互译?详情介绍
- 速讯:北京移动动感地带到底是怎么收费的?详情介绍
- 【数据分析】获取设备唯一标识符的方法:每日消息
- 当前播报:realtekhdaudio装不上驱动的问题如何解决?解决方法步骤
- 九宫格记忆网开发背景及功能结构 九宫格记忆网开发方案 当前速看
- 世界消息!磁盘管理器里面看不到新硬盘怎么办?解决措施如下
- 怎么用安卓手机给u盘加密?安卓手机给u盘加密的方法
- LOL服务器连接异常如何解决?LOL服务器连接异常的解决方法_环球信息
- 《宫锁连城》剧情大曝光 琼瑶批于正抄袭《梅花烙》
- 世界今日讯!感人的校园爱情故事——伤感日志分享
- 世界微头条丨末日生存名作 《大灾变:黑暗之日》上架steam
- 《暗黑破坏神4》向系列前作致敬 更有暗黑味道 全球快看
- 今日热文:济宁生育津贴审核通过后多久到账?
- 环球百事通!《寂静岭2:重制版》给护士穿上黑丝 是因为原版露肉太多
- 即时焦点:尼尔官宣!《最后生还者》第二季已开始制作
- 首位女性艾滋病“治愈者”研究细节公布 脐带血中移植干细胞-信息
- 传闻称乐高赛车游戏《LEGO 2K Drive》正在开发中
- 国际黄金价格逼近2000美元大关!接近历史高点
- 全球速讯:离开EA后 战地先生成立全新工作室TTK GAMES
- 《偶像大师 闪耀色彩》游改TV动画公开 2024年春开播
- 沪深两市融资余额减少12.17亿元_全球观速讯
- 微信底栏新增“视频号”入口?腾讯回应绝了-世界速看
- 微软:EA才是PS最大的第三方发行商 而非动视暴雪
- 微软:动视暴雪不是PS最大的第三方 EA才是:环球观察
- 消息称开放世界大金刚新作与任天堂新主机同步发售
- 全员尖下巴《学园帅哥》改编像素风动作游戏
- 【环球报资讯】安徽香榭里园林景观工程有限公司
- 焦点短讯!领英可以AI写简历、招聘信息
- 数码单反用SSD存储?转接器来了-全球即时
- 头盔定期换 雅迪3C头盔只要49元
- 【环球播资讯】吃起来放心 摩飞果蔬解毒机339元
- 世界信息:半价655元!零刻迷你主机暴跌
- 《堡垒之夜》里昂克莱尔联动皮肤外观公布_天天热消息
- 《师父》销量已突破200万套 销售额破5000万|今日热门
- 2999元抢比矿泉水还小的华硕迷你主机 天天微头条
- 世界快消息!通勤利器 9号电动滑板车1499元
- 厨房神器 电动打蛋器只要16.9元 今头条
- RTX4070Ti主机限时直降1600元|焦点滚动
- 新玩法 全家跳绳机只要55元
- 要闻速递:迎来一季度“开门红” 2023 年西部陆海新通道第 1700 列铁海联运班列发车
- 全球热讯:《WWE 2K23》Steam评价特别好评:合格的年货之作
- 环球今亮点!《生化危机4:重制版》角色介绍:阿什莉、艾达王
- 商店关闭前 玩家买下了Wii U和3DS平台的所有游戏:全球球精选
- 焦点热文:中国移动9元90G/月 19元180G/月 限时办理
- 《High on Life》或将推出DLC 玩家:能不能先修BUG
- 天生我材必有用完整版在线阅读_天生我材必有用完整版-天天短讯
- 小米13 Ultra原生MIUI 14系统:确定4月发布
- 焦点要闻:苹果iPhone 14清库存 到手仅4899
- 击败《战神:诸神黄昏》、《地平线:西之绝境》!《索尼克:未知边境》获Fami通最佳动作冒险游戏
- 高空惊悚片《坠落》将拍摄续集 原导演回归
- 买车送手表?比亚迪智能手表曝光:支持汽车钥匙等功能,预计4月上市 全球热闻
- 外媒锐评:理解世嘉推广《女神异闻录》的想法 但氪金手游不合适 全球讯息
- 《控制》总销量超过300万份 收入达6.75亿元人民币
- 当前滚动:娃哈哈老总回应《狂飙》中的AD钙奶:不是广告植入
- 每日信息:《英灵神殿》升级档修复左手鼠标BUG 提升游戏性能
- 戴尔新款透明机械键盘699元到手:资讯推荐
- 夏河县气象台发布雷电黄色预警信号【2023-03-19】
- 克里斯·麦凯仍想拍《夜翼》电影 但还未和古恩谈过|世界速递
- 《生化危机4:重制版》箱子上的黄色记号合理吗? 环球热议
- 《铃芽之旅》预售突破3000万!目前豆瓣7.9分
- 不用对话与文本描述 大阪大学开发大脑所想AI生成图像-世界快看
- 《生化危机4:重制版》正式版并未解决体验版反馈问题
- 《暗黑破坏神4》BETA版实机演示:组队大战世界Boss
- 全球玩家大比拼 《最终幻想16》拥有在线排行榜功能|全球快资讯
- 11代四核神U加持!大唐NUC迷你主机低至699元
- 性价比逆天!金士顿64GB USB3.2 U盘低至27.9元 动态
- 天天讯息:装机首选!锐龙R5-5600板U套装低至1499元
- 长焦镜头之间也有差距?张老板是这么解释的
- 吃得多却饿得快,不一定是消化好!可能跟5种疾病有关,建议排查-环球消息
- 桥本环奈主演《献给国王的无名指》日剧新卡司 4月开播
- 249元!小米米家电子血压计现已开售 世界热点评
- 30系显卡价格崩了!RTX3070低至2239元|全球今头条
- 《漫威蜘蛛侠2》《漫威金刚狼》将采用全新对话技术
- 表情别随便发 有人因回复“合十”表情输上万官司|全球视点
- 《JOJO奇妙冒险:石之海》新宣传片 最终话4月7日播出_环球最资讯
- 全球热资讯!奇怪的文化输出:《柯南》撞脸“九转大肠”登热搜
- 外媒:《最后的生还者》世界爆火标示了新生代索尼进入全盛期-当前动态
- 天天微速讯:传Next Level Games正在开发《F-Zero GX》复刻版