本人JavaWeb初学者,这是学校一门课程的期末作业,之前已经写了不少了,但是由于一点误操作,导致项目有点崩盘,加上心态不是很好,所以把整个项目全部删除重做,这里记录一下我写整个项目的全过程。

环境是mysql + MyEclipes + Tomcat9.0
可视化工具是Navicat

先简单看一下大致需求,首页是下面这幅图片

这是某大学某学院的党建工作的网站,要求是实现栏目、文章和用户的增删改查。不是很难,要求的技术为jsp,servlet,过滤器等JavaWeb开发中较为简单的一些技术。

下面,开始工作,那么首先做的应该是设计数据库,数据库中应该包含三张表,t_user t_article 以及 t_column(这里由于所在工作室的命名规范,数据库命名一律为db_xxxxx,表的命名一律为t_xxxxx)

放在Navicat中如图

我们右键数据库,选择转储sql文件,这样就会得到这个数据库的建立语句,然后放到项目中,防止数据库丢失。

/*
Navicat MySQL Data TransferSource Server         : Test
Source Server Version : 50717
Source Host           : localhost:3306
Source Database       : db_partyTarget Server Type    : MYSQL
Target Server Version : 50717
File Encoding         : 65001Date: 2017-06-06 14:24:40
*/CREATE DATABASE `db_party`;SET FOREIGN_KEY_CHECKS=0;-- ----------------------------
-- Table structure for t_article
-- ----------------------------
DROP TABLE IF EXISTS `t_article`;
CREATE TABLE `t_article` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',`title` varchar(255) NOT NULL COMMENT '标题',`author` varchar(255) NOT NULL COMMENT '作者',`content` varchar(255) NOT NULL COMMENT '内容',`click_times` int(11) NOT NULL DEFAULT '0' COMMENT '点击次数',`publish_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '发布时间',`type` varchar(255) NOT NULL COMMENT '所属类型',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;-- ----------------------------
-- Table structure for t_column
-- ----------------------------
DROP TABLE IF EXISTS `t_column`;
CREATE TABLE `t_column` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',`name` varchar(255) NOT NULL COMMENT '名字',`level` varchar(255) NOT NULL COMMENT '级别',`pid` int(11) NOT NULL COMMENT '父id,0为根节点',`isleaf` int(255) NOT NULL COMMENT '是否是叶子节点,1代表是,0代表不是',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',`username` varchar(255) NOT NULL COMMENT '用户名',`password` varchar(255) NOT NULL COMMENT '密码',`sex` int(255) NOT NULL COMMENT '性别,1代表男,2代表女',`phone_num` varchar(255) NOT NULL COMMENT '电话',`email` varchar(255) NOT NULL COMMENT '电子邮件',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

建好了数据库,下面正式开始开发

打开MyEclipes,右键,new一个Web Project,填好Project Name,选好Java和JavaEE的版本

注意这里我选择的只是我电脑里的版本,真正的选择要随你电脑上的版本而定

注意这里有一个选项,是自动生成web.xml文件,一定要勾选,之后我们很多东西可能会在里面配置,当然现在的版本也可以通过注解的方式进行配置,不过勾选上,以防万一嘛

然后,在MyEclipes中配置tomcat并将项目配置到tomcat中去,配置过程我就不再说了,有不明白的可以自行百度

开启tomcat,测试一下看新new出来的项目能不能跑通

出现如图所示的画面就证明已经跑起来了,并且现在正在运行的就是你的默认欢迎页面index.jsp

下面开始我们的后台封装,我们先来建立与数据库的连接,我们来配置一个c3p0连接池,至于配置连接池的好处嘛,大家还是自行百度

首先,我们先把该导的jar包导入进去,将jar包拷到WebRoot/WEB-INF/lib下,然后右键,Build Path,add to Build Path

下面我们开始写c3p0的配置文件,我们在根目录里new一个新的文件夹resource,然后开始写配置文件。关于c3p0的配置文件网上也很多,这里我把我的代码上传,大家也可以不看,直接自己配

<?xml version="1.0" encoding="UTF-8"?>  <c3p0-config>  <default-config>  <!-- 数据库的url --><property name="jdbcUrl">jdbc:mysql://localhost:3306/db_party</property><!-- 数据库驱动 --><property name="driverClass">com.mysql.jdbc.Driver</property><!-- 用户名 -->  <property name="user">root</property><!-- 密码 -->  <property name="password">mysql</property><!-- 当连接池连接耗尽时,客户端调用getConnection()后等待获取新连接的时间,超时将抛出SQLException若设为0将无线等待,单位毫秒,默认0 --><property name="checkoutTimeout">30000</property><!-- 每多少秒检查所有连接池中的空闲连接,默认值0,不检查 -->  <property name="idleConnectionTestPeriod">300</property><!-- 初始化连接池中的连接数 -->  <property name="initialPoolSize">100</property><!-- 最大空闲时间,超过300s不用则连接被丢弃,若为0则永不丢弃 -->  <property name="maxIdleTime">300</property>  <!-- 连接池中保留的最大连接数 --><property name="maxPoolSize">100</property><!-- 连接池中保留的最小连接数 -->  <property name="minPoolSize">10</property><!-- 用于控制数据源内加载的PreparedStatements数量 -->  <property name="maxStatements">200</property>  </default-config>  </c3p0-config>  

需要提到的是,由于这个文件夹是作为配置文件的文件夹,所以需要右键,Build Path,Use as source folder 可以看到,resource文件夹瞬间地位就上升了

然后我们开始写工具类,在src文件夹中new一个新的Class,注意把包名起好,尽量不要写裸体类,进来之后,把和数据库相关的操作都封装在这个类里面,写好之后,记得写一下测试类,如图,如果控制台能正常输出,则说明一切正常

封装好了数据库,我们开始写实体类,比如我们先来实现用户的登录注册功能,那我们就先来写一个User的实体类,同样把类打好包,一般实体类我们放在entites包里面

然后在类中写出该实体类的属性,一般来讲是要和数据库中的字段一一对应的,属性要设为private,并添加get和set方法。MyEclipes中添加get和set方法是快捷键是shift+alt+s

写好实体类之后,开始写User的Dao层,Dao层里面一般是和数据库打交道的一些方法,无非也就是增删改查的一些方法

我们在src下面再new一个UserDao的类,注意外面的包名写好

然后里面写好增删改查等方法,比如我们刚刚写好的insert方法

写好方法之后最好是再写一个测试类测试一下方法写没写错,当然要是对自己有足够的信心不写也没有大问题

然后,再将其他方法写好,UserDao就算是写好了,当然我们这里写的比较简单,如果更严谨一点的话要先写接口,再写实现类,如果再严谨一点的话还要再写一个service层,这里我们就不那么麻烦了,如果对这方面有兴趣的可以自己去了解一下

我们就先介绍到这里,后面的我们会在后续文章继续介绍

如何用初级的JavaWeb知识写一个较简单的网站(一)相关推荐

  1. Java入门知识,写一个最简单java程序

    本文目录 一.Java语言的简介 二.写一个最简单Java程序 1.Notepad配置 2.最简单的Java程序 3.代码分析 4.编译与编译常见错误 5.执行java程序 一.Java语言的简介 0 ...

  2. 用HTML,css,boostrap写一个综合大型购物网站

    用HTML,css,boostrap写一个综合大型购物网站 首先来看看页面的效果: 有需要的可以参考 首先是首页index: <!DOCTYPE html> <html>< ...

  3. 如何写一个完整的django网站:配置环境啥的不讲(python+mysql+html相关) 肆

    虽然好像到现在为止只有几个人看了,但是心塞的作者还是给大家放一下网站的目录伐, 其中两个文件夹中可以忽略,存放css和js样式的,但是实践证明必须导入外部文件中的内容,额,js和css存放在图片2所示 ...

  4. 用JAVA写一个最简单的飞翔的小鸟

    如果你想写一个最简单的飞翔的小鸟的 Java 程序,可以先了解 Java 的图形绘制功能.Java 提供了一个叫做 Graphics 的图形绘制类,可以用来绘制图形.填充颜色.画线等. 你可以通过创建 ...

  5. 利用taichi写一个最简单的SPH(光滑粒子动力学)

    简介 参考doyub Kim那本<Fluid Engine Development>写一个最简单的弱可压SPH. 目前有BUG, 粒子太散了 效果展示 CSDN有图片大小限制,大概就这样 ...

  6. 自己写一个最简单的bootloader_jz2440

    写在前面: 我的博客已迁移至自建服务器:博客传送门,CSDN博客暂时停止,如有机器学习方面的兴趣,欢迎来看一看. 此外目前我在gitHub上准备一些李航的<统计学习方法>的实现算法,目标将 ...

  7. cmd写java程序_用cmd写一个最简单的Java程序

    一,准备: 1.确保电脑中装有eclipse软件并且确保配置好环境变量 (1)环境变量配置方法: 特别提示:jdk和eclipse保存的路径不能有中文字符 1.打开我的电脑--属性--高级--环境变量 ...

  8. 用Python写一个最简单的计时秒表

    在Windows上是自带计时秒表的,这玩意一般用不上.但对于做视频相关操作的工程师有一个巨大的作用,就是用摄像头拍屏幕上的秒表然后把摄像头得到的图像经过压缩->传输->解析->重新显 ...

  9. python写一个很简单的Atm机系统,使用pickle模块和json模块来保存数据

    我做的是一个很简单的Atm系统,很多都没约束条件 目的: 用面向对象思维来处理 运用文件的读写 文件的读写用pickle模块和json模块来处理 pickle模块: pickle模块处理数据功能很强大 ...

最新文章

  1. sqlserver监控阻塞(死锁)具体情况
  2. 在Python-dataframe中如何把出生日期转化为年龄?
  3. linux下面子目录绑定域名的方法,.htaccess绑定子域名到子目录方法
  4. NPS cisco 802.1x window7 实现认证接入网络
  5. flex(入门)之timer的使用,键盘,鼠标的监听
  6. [leetcode]5336. 上升下降字符串
  7. logistic模型预测人口python_基于python的logistic回归建模预测
  8. netsetman使用教程_人性化的IP切换工具—NetSetMan
  9. Youtube视频传输规律
  10. 最新勒索软件WannaCrypt病毒感染前清除处理及加固
  11. Android camera2对焦设置
  12. 【Rust日报】2021-09-05 perseus:完全支持 SSR 和 SSG 的 Rust 高端前端开发框架
  13. BSV上的高效 zk-SNARK:技术解释
  14. 阿里云服务器如何购买?三种购买方式图文教程
  15. echarts系列-带图教你调整左右位置x轴样式网格虚线刻度居中双轴Y轴滚动上下移动文字旋转改分割线颜色部分字体改色折注混合,X轴的颜色,X轴字体颜色,调整柱子颜色,调整小图标图例的大小和位置,鼠标
  16. 【论文笔记】 知识图谱 之 TransE算法(Translating Embedding)
  17. 拼多多猛击阿里,极兔狠怼三通一达,段永平要挑战马云?
  18. IP化构建新型“路网系统” 工业互联网驶上快车道
  19. Qlik Sense 的一些问题【已解决】
  20. S32K SDK使用详解之S32 SDK软件架构详解

热门文章

  1. 【python】使用pyQT5显示网页
  2. Android okio简析
  3. 彩虹之眼文化集团整体方案设计
  4. 中标普华 Linux 桌面及 Office 办公套件 2.0 版发布
  5. 解密压缩包文件的打开密码
  6. 剑指Offer算法笔记(Java)剪绳子
  7. R语言使用epiDisplay包的alpha函数计算dataframe数据中指定数据列之间的信度分析、使用alpha函数和基于业务筛选的数据列的列表计算Cronbach‘s α
  8. 推荐10个网络存储技术网站和论坛
  9. windows延缓写入失败的处理
  10. python快速排序