日记本系统(更新中)

写在前面

系统采用传统的Jsp+Servlet+Model的MVC开发模式,前端采用主流的BootStrap技术,数据库采用Mysql,实现了个人日记本系统,亮点是Bootstrap的综合运用,ckeditor的运用以及FileUpload组件上传图片,以及MD5加密的应用(该项目是非本人开发,只是学习其中的知识);

一、需求:

  1. 登陆注册
  2. 日记的增删该查
  3. 日记分类(增删改查)
  4. 个人中心(头像,名字,签名等信息)

二、数据库设计:

  1. 三张表:
    t_user(userId,userName,password,nickName,imageName,mood)//password因为采用MD5加密,所以设置长一点(50)
    t_diary (diaryId,title,content,typeId,releaseDate )//content 内容长,datatype用text,releaseDate的格式用datetime
    t_diaryType(diaryTypeId,typeName)

  2. 主外键设置(外键:其他表中的主键称为外键):
    t_diary 中的 typeId外键 关联 t_diaryTaye中的 diaryTypeId主键 (对应关系为多对1)
    navicat设置外键:

    外键名(name):可以不填, 系统自动生成;
    栏位名(Field Name): 就是设置‘typeId’为外键;
    参考数据库(Reference DadaBase): 外键关联的数据库;
    引用表(Reference Table): 关联的表;
    外栏位名(Outside field name): 关联的字段(这里是“diaryTypeId”, 可以与栏位名相同);
    删除时:删除时候选择的动作
    刷新时:更新时候选择的动作
    (在设置外键的时候,删除时和更新时两列有四个值可以选择:CASCADE、NO ACTION、RESTRICT、SET NULL,自己全亲自试了一遍,它们的区别如下:
    CASCADE:父表delete、update的时候,子表会delete、update掉关联记录;
    SET NULL:父表delete、update的时候,子表会将关联记录的外键字段所在列设为null,所以注意在设计子表时外键不能设为not null;
    RESTRICT:如果想要删除父表的记录时,而在子表中有关联该父表的记录,则不允许删除父表中的记录;
    NO ACTION:同 RESTRICT,也是首先先检查外键;)

  3. 设计表注意事项:
    1.对于id这种主键:int 型,主键,不允许为空,自动递增
    2.对于日期,需要特殊格式:如datetime
    3.像比较长的文本如日记内容可设置格式为text
    4.对于其他的属性,只要是包含汉字型的,如名称,密码都将类型设置为varchar,长度根据需求设置即可。

三.后台代码

四个包:

Dao:数据访问对象层
Model:模型层
Util:工具层
Web:web访问层

  1. Util:
    连接数据库:
    注意事项:添加mysql得jar包:mysql-connector-java
 public class DbUtil2 {private String dbUrl="jdbc:mysql://localhost:3306/db_diary";private String dbUserName="root";private String dbPassword="l1542735938";private String jdbcName="com.mysql.jdbc.Driver";
//获取连接:先加载驱动,再连接public Connection getCon() throws Exception{Class.forName(jdbcName);
Connection con =DriverManager.getConnection(dbUrl,dbUserName,dbPassword);return con;}
//关闭连接public void closeCon(Connection con) throws Exception{if (con!=null){con.close();}}
  1. model
    根据数据库中的表建相关的类;
  2. dao
    用于登陆账号密码的验证等
    如验证登陆信息:
 public User login(Connection con ,User user) throws Exception{User resultUser=null;//若不存在则返回Null//查找数据库中是否存在userString sql="select *from t_user where userName=?and password=?";PreparedStatement pstmt=con.prepareStatement(sql);pstmt.setString(1, user.getUserName());pstmt.setString(2, user.getPassword());ResultSet rs=pstmt.executeQuery();if(rs.next()){//如果存在,就初始化resultUserresultUser=new User();resultUser.setUserId(rs.getInt("userId"));resultUser.setUserName(rs.getString("userName"));resultUser.setPassword(rs.getString("password"));}return resultUser;}
  1. web
    注意事项

    1. 先将tomcat的包添加(buildPath)
    2. 继承HttpServlet
    3. 覆盖父类的doPost,doGet方法

代码

package web;import java.io.IOException;
import java.sql.Connection;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 dao.UserDao;
import model.User;
import util.DbUtil;public class LoginServlet extends HttpServlet{private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取session对象,用于保存当前登陆对象HttpSession session=req.getSession();//获取前台用户信息,用于验证是否合法String userName=req.getParameter("userName");String password=req.getParameter("password");Connection con= null;DbUtil dbUtil=new DbUtil();UserDao userDao=new UserDao();try {con=dbUtil.getCon();User currentUser=userDao.login(con, new User(userName,password));if(currentUser==null){}else{session.setAttribute("currentUser", currentUser);resp.sendRedirect("main.jsp");}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} finally{try {dbUtil.closeCon(con);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}

javaWeb——日记本系统相关推荐

  1. JavaWeb项目实战 - SpringBoot日记本系统(第一期)

    哈喽,我是兔哥呀,终于啊,这个SpringBoot日记本系统完成啦.(虽然留了一堆BUG) 撒花,写教程是真的很累的一件事情. 第一期教程一共9个小节: 大家可以直接关注这个专栏: SpringBoo ...

  2. jsp servlet mysql项目_JSP+Servlet+JDBC+mysql实现的个人日记本系统

    项目简介 本系统基于JSP+Servlet+Mysql 一个基于JSP+Servlet+Jdbc的个人日记本系统.涉及技术少,易于理解,适合JavaWeb初学者学习使用. 难度等级:入门 技术栈 编辑 ...

  3. mysql日记本程序_JSP+Servlet+JDBC+mysql实现的个人日记本系统

    项目简介 本系统基于JSP+Servlet+Mysql 一个基于JSP+Servlet+Jdbc的个人日记本系统.涉及技术少,易于理解,适合JavaWeb初学者学习使用. 难度等级:入门 技术栈 编辑 ...

  4. JavaWeb购物系统(七)购物系统主页,商品的管理

    效果图 未登录状态 登陆状态 商品管理页面 商品修改模态框 功能 商品展示 添加商品到购物车 查看商品 商品的信息的修改 正文 index.jsp <%@ taglib prefix=" ...

  5. SpringBoot日记本系统全程直播09:项目一期完结

    大家好,我是兔哥呀.我又来啦,这个SpringBoot日记本系统已经接近尾声了,目前已经完成的模块有日记本的增删改查,类型的增删改查,头像上传,还有个人中心. 最后一节呢,我们来做一个收尾工作哈. 目 ...

  6. Java实战项目之个人日记本系统【源码+课后指导】_Java毕业设计/计算机毕业设计

    供大家练习学习用的Java实战项目来咯--[个人日记本系统]!Java实战项目之个人日记本系统[源码+课后指导]_Java毕业设计/计算机毕业设计https://www.bilibili.com/vi ...

  7. 用java做日记本系统_jsp+servlet开发java web个人日记本系统

    项目描述 Jsp_Servlet技术使用个人日记本系统,主要有日记分类,添加日记,删除日记和一些个人资料的修改. 运行环境 jdk8+tomcat7+mysql5.6+IntelliJ IDEA(ec ...

  8. 计算机课程设计-ssm在线点餐系统(沙箱支付)-javaweb外卖系统

    计算机课程设计-ssm在线点餐系统(沙箱支付)-javaweb外卖系统 1 开发环境及工具下载 开发语言:Java 后台:SSM(Spring+SpringMVC+Mybatis) 前端:HTML+C ...

  9. JSP养老院管理系统JSP养老院系统javaweb养老院系统JSP敬老院管理系统JSP敬老院系统

    JSP养老院管理系统JSP养老院系统javaweb养老院系统JSP敬老院管理系统JSP敬老院系统 protected void doGet(HttpServletRequest req, HttpSe ...

  10. 基于LayUI框架的Jsp日记本系统

    基于LayUI框架的Jsp日记本系统 先看几张效果图 下载地址: 链接: https://pan.baidu.com/s/1Aa_qUcpi2_B4-QIpl4FWGw 提取码: 5r5k

最新文章

  1. fbx 转 gltf glb 文件
  2. firedac的TFDStoredProc动态创建并调用存储过程
  3. 从Cell的视图推出一个新的界面
  4. node 遍历读取制定后缀文件名
  5. java 检查进程是否存在
  6. SQL Server 和 Oracle 以及 MySQL 有哪些区别?
  7. 【JSP开发】有关session的一些重要的知识点
  8. Spring面试基础题
  9. 2019全球最具颠覆性的17大公司
  10. kappa一致性检验教程_一致性检验(kappa一致性分析)
  11. 零基础是学习Java还是大数据?
  12. 机器学习常用的六种分类方法,Python代码详细都在这里!
  13. 【STM32学习笔记】#001 前期准备
  14. 第四周铁人战队学习总结
  15. python 创业_如何在下午使用python和破折号创业
  16. 计算机科学技术考研内容,计算机科学与技术考研考哪些科目?
  17. Android10.0 展讯平台解锁
  18. 学习笔记 | 硬盘故障检测
  19. 工业制造中PHM的云架构
  20. SCI SCIE区别

热门文章

  1. 多目标优化算法(一)NSGA-Ⅱ(NSGA2)
  2. 论文精读:车尧-《社会网络视角下战略性新兴产业的专利情报研究》
  3. 科技爱好者周刊(第 199 期):俄罗斯的 HTTPS 证书问题
  4. mysql软件字体模糊_Windows 10字体模糊发虚! 如何解决?
  5. 整人输入指定内容退出html,整人代码
  6. cad填充密度怎么调整_CAD填充图案时无法正常填充看似封闭的区域怎么解决?
  7. Object-C语法
  8. 微信文章互阅python脚本,一天可刷120分
  9. 博士一篇SCI三区即可入职该高校,配偶是硕士的,直接给事业编!还有45万安家费…...
  10. 工业控制领域关键技术趋势