如何用初级的JavaWeb知识写一个较简单的网站(一)
本人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知识写一个较简单的网站(一)相关推荐
- Java入门知识,写一个最简单java程序
本文目录 一.Java语言的简介 二.写一个最简单Java程序 1.Notepad配置 2.最简单的Java程序 3.代码分析 4.编译与编译常见错误 5.执行java程序 一.Java语言的简介 0 ...
- 用HTML,css,boostrap写一个综合大型购物网站
用HTML,css,boostrap写一个综合大型购物网站 首先来看看页面的效果: 有需要的可以参考 首先是首页index: <!DOCTYPE html> <html>< ...
- 如何写一个完整的django网站:配置环境啥的不讲(python+mysql+html相关) 肆
虽然好像到现在为止只有几个人看了,但是心塞的作者还是给大家放一下网站的目录伐, 其中两个文件夹中可以忽略,存放css和js样式的,但是实践证明必须导入外部文件中的内容,额,js和css存放在图片2所示 ...
- 用JAVA写一个最简单的飞翔的小鸟
如果你想写一个最简单的飞翔的小鸟的 Java 程序,可以先了解 Java 的图形绘制功能.Java 提供了一个叫做 Graphics 的图形绘制类,可以用来绘制图形.填充颜色.画线等. 你可以通过创建 ...
- 利用taichi写一个最简单的SPH(光滑粒子动力学)
简介 参考doyub Kim那本<Fluid Engine Development>写一个最简单的弱可压SPH. 目前有BUG, 粒子太散了 效果展示 CSDN有图片大小限制,大概就这样 ...
- 自己写一个最简单的bootloader_jz2440
写在前面: 我的博客已迁移至自建服务器:博客传送门,CSDN博客暂时停止,如有机器学习方面的兴趣,欢迎来看一看. 此外目前我在gitHub上准备一些李航的<统计学习方法>的实现算法,目标将 ...
- cmd写java程序_用cmd写一个最简单的Java程序
一,准备: 1.确保电脑中装有eclipse软件并且确保配置好环境变量 (1)环境变量配置方法: 特别提示:jdk和eclipse保存的路径不能有中文字符 1.打开我的电脑--属性--高级--环境变量 ...
- 用Python写一个最简单的计时秒表
在Windows上是自带计时秒表的,这玩意一般用不上.但对于做视频相关操作的工程师有一个巨大的作用,就是用摄像头拍屏幕上的秒表然后把摄像头得到的图像经过压缩->传输->解析->重新显 ...
- python写一个很简单的Atm机系统,使用pickle模块和json模块来保存数据
我做的是一个很简单的Atm系统,很多都没约束条件 目的: 用面向对象思维来处理 运用文件的读写 文件的读写用pickle模块和json模块来处理 pickle模块: pickle模块处理数据功能很强大 ...
最新文章
- sqlserver监控阻塞(死锁)具体情况
- 在Python-dataframe中如何把出生日期转化为年龄?
- linux下面子目录绑定域名的方法,.htaccess绑定子域名到子目录方法
- NPS cisco 802.1x window7 实现认证接入网络
- flex(入门)之timer的使用,键盘,鼠标的监听
- [leetcode]5336. 上升下降字符串
- logistic模型预测人口python_基于python的logistic回归建模预测
- netsetman使用教程_人性化的IP切换工具—NetSetMan
- Youtube视频传输规律
- 最新勒索软件WannaCrypt病毒感染前清除处理及加固
- Android camera2对焦设置
- 【Rust日报】2021-09-05 perseus:完全支持 SSR 和 SSG 的 Rust 高端前端开发框架
- BSV上的高效 zk-SNARK:技术解释
- 阿里云服务器如何购买?三种购买方式图文教程
- echarts系列-带图教你调整左右位置x轴样式网格虚线刻度居中双轴Y轴滚动上下移动文字旋转改分割线颜色部分字体改色折注混合,X轴的颜色,X轴字体颜色,调整柱子颜色,调整小图标图例的大小和位置,鼠标
- 【论文笔记】 知识图谱 之 TransE算法(Translating Embedding)
- 拼多多猛击阿里,极兔狠怼三通一达,段永平要挑战马云?
- IP化构建新型“路网系统” 工业互联网驶上快车道
- Qlik Sense 的一些问题【已解决】
- S32K SDK使用详解之S32 SDK软件架构详解