
需求分析设计
UI设计架构设计 开发
前端开发后端开发 测试
功能测试性能测试安全测试 上线
预发布环境灰度全量量 多次迭代更更新 二、:ER图设计
1、:根据ER图建立数据库
category
reply
topic
user
三层结构:Servlet-Service-Dao层开发
包结构创建实体类开发工具类开发
连接池开发 开发Controller
通用Servlet 开发Service开发Dao层使用PostMan测试
1、project
先跟老师的课设置一样的:
Name: archetypeCatalog Value:internal
点fix
这里我改了一下:否则经常出现没法自动跳转到servlet的情况,原因还没找到。
之后apply—ok
可以在index.jsp里面写的东西看看,点右上角小箭头运行一下看看d出的网页是不是也OK。
2、配置pom.xml、建立对应的package:
添加对应maven依赖包:
javax.servlet javax.servlet-api3.1.0 provided mysql mysql-connector-java8.0.17 javax.servlet.jsp jsp-api2.2 provided commons-dbutils commons-dbutils1.7 org.apache.commons commons-dbcp22.7.0 commons-beanutils commons-beanutils1.9.4
3、实体类:
对应的属性、get方法、set方法、ToString方法
4、工具类:
建立配置文件:
mysql8:
driverClassName = com.mysql.cj.jdbc.Driver url = jdbc:mysql://127.0.0.1:3306/forum?userUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true username = root password = 123456 initialSize = 10 maxActive = 30
而database.properties默认不会被maven打包,所以要配置pom.xml:
将资源文件打包到target文件夹中:
target:
src/main/java
***.xml
true
5、封装通用baseServlet和分类列表接口开发
封装通用baseServlet
前端发起请求进入basedServlet的service:
发起请求到categoryServlet的pattern(urlPatterns = {"/category"})
–>进入basedServlet(extends baseServlet)
–>拿到前端传过来的方法(method,如list方法)
–>则可在basedServlet的service里面写了(if(method!=null)……)
–>使用反射方法(通过方法找到这个方法所在的类,再调用它)
后学在对应的servlet里面(userServlet等)即可不用重写doGet和doPost了。
即:
子类的servlet被访问,会调用service方法。
子类没有重写,name就会调用父类service方法。
好处:没有重写,节省代码。
所以后续编写的每一个servlet都要继承basedServlet。
分类列表接口
接口实现:CategoryServiceImplCategoryDao
Servlet-Service-Dao层开发:高内聚,低耦合
为什么要用servlet、service、serviceimpl、dao这么多来写,直接在servlet里面调用dao不行吗?
也可以,但是当程序复杂之后,无数servlet与无数dao交交叉叉,来来去去,之间形成了一种网状的结构,复杂且繁琐。如果使用service与serviceimpl,便可以有效分层。
举个栗子:A(servlet)从B(银行,serviceimpl)借200元,办理手续(直接调用)就行,耦合度低。
否则,A(servlet)从C(dao_1)借了100,又从D(dao_2)借了150,又借给C(dao_3)50元……它们之前的联系就太复杂了,耦合性太高。
6、看看效果
在跳转的url输入:
http://localhost:8080/category?method=list
可得按权重由大到小(降序)排序的列表。
1、分页
分页接口:
核心:当前第几页、每页显示多少条、总条数
数据数据库查询使用 select * from table limit m,n
m——是指记录的起始位置,从0开始,表示第1条记录。
n——是指从第m+1条开始,取n条。
select * from tablename limit 2,4 (即取出第3条至第6条, 共4条记录
)
PageDTO 分页信息
第几页,每页显示多少条,总共几页……
(DTO 数据传输对象)
由于都要用到分页功能,可以使用泛型(编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型)
属性、get、set、ToString、构造函数(计算)
TopicServlet
拿到最基本的分页信息。此时就可以用service调用了
TopicService
TopicServiceImpl
TopicDao
2、分页结果
url输入:http://localhost:8080/topic?method=list&c_id=2(默认取第一页数据)
本页的两条记录:
url:http://localhost:8080/topic?method=list&c_id=2&page=2 取第二页的相关数据
1、
ReplyDaoTopicServletTopicServiceTopicServiceImplTopicDao
2、debug
http://localhost:8080/topic?method=findDetailById&topic_id=1&page=2
1、用户注册接口
在user表中为phone字段添加索引(UNINE)使其值唯一。
密码加密 web工具类 MD5
Servlet-Service-Dao层开发
https://baike.baidu.com/item/MD5/212708?fr=aladdin
CommonUtil:
public static String MD5(String data) {
try {
java.security.MessageDigest md =
MessageDigest.getInstance("MD5");
byte[] array = md.digest(data.getBytes("UTF-8"));
StringBuilder sb = new StringBuilder();
for (byte item : array) {
sb.append(Integer.toHexString((item & 0xFF) |
0x100).substring(1, 3));
}
return sb.toString().toUpperCase();
} catch (Exception exception) {
}
return null;
}
按照需要来看是否进行双重MD5加密。
2、 POSTMan测试
x-www-form-urlencoded格式
就是application/x-www-from-urlencoded,会将表单内的数据转换为键值对, &分隔。
当form的action为get时,浏览器器⽤用x-www-form-urlencoded的编码⽅方式,将表单数据编码为
(name1=value1&name2=value2…),然后把这个字符串串append到url后⾯面,⽤用?分隔,跳转
到这个新的url。当form的action为post时,浏览器器将form数据封装到http body中,然后发送
到server
1、发布主题帖子
Servlet-Service-Dao层开发
先登录才能发布
2、盖楼回复
Servlet-Service-Dao层开发
3、帖子阅读量
把session和topic绑定,一个session访问同个topic只算一次阅读。
在查看详情里判断是否阅读过。TopicServlet【findDetailById()】–>TopicService【addOnePV】–>TopicServiceImpl【addOnePV】–>TopicDao【updatePV】
1、 前端相关资源准备和文件创建
bootstrap(前端框架 https://www.bootcss.com/) + jsp
导入框架对应的js和css即可使用:
1)新建文件夹
2)考入3个依赖
3)创建每个页面时加入页面基础
pom文件添加依赖
taglibs standard1.1.2 javax.servlet jstl1.2
jsp页面添加jstl表达式依赖包
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
修改web.xml版本
2、大致结构
3、主题列表
展示对应的主题列表
index.jsp
http://localhost:8080/topic?method=list&c_id=2
目前还没有对应的登录用户,所以看不见名称、头像等。
……
servlet里面设置的默认从第一页开始,每页2条记录。
4、主题详情
http://localhost:8080/topic?method=findDetailById&topic_id=1
5、注册页面
http://localhost:8080/user?method=register
或从其它页面跳转
6、登录-退出
7、发布主题
如果要写很多内容,建议用“大数据类型”
此处还是用varchar发剪短内容
……
8、回复盖楼
1、首页自动跳转配置
home首页 打开浏览器自动跳转到这里。
2、部署外置tomcat
打包:
先检查在pom.xml文件里:
在终端里打包:
得到打包好的war包:
将war包部署到tomcat里:
但此时要在url里加入项目名称才能访问到
把原本的那两个文件删掉:
重新启动tomcat:
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)