EasyTalking微博系统

2023-11-15

 

 

EasyTalking微博系统

摘要

随着互联网的迅猛发展,人们的日常生活、学习工作已经离不开网络。人们的生活和工作在未来的生活中将越来越依赖于计算机网络技术的发展,越来越网络化、电子化、虚拟化、便捷化。Internet目前的应用历程和发展趋势,可以相信网络科学技术将极大的改变人们的日常生活和工作方式,甚至是社会的价值观。

本设计尝试用JSP在网络上架构一个EasyTalking微博,以推进微博电子化,管理智能化的发展。本文从理论和实践两个角度出发,对一个具有数据分析功能的EasyTalking微博进行设计与实现分析。论文首先详尽地介绍了面向对象分析与设计的有关概念与技术,介绍了在本系统中运用到的知识,包括面向对象的分析设计流程、java、JSP技术的特点、结构框架以及使用方法。接着对EasyTalking微博的可行性进行了分析,然后对系统的设计思想、设计目标与系统的整体结构进行了明确的规划。最后对系统的数据库、程序的设计与实现作了详细的讲解。

  EasyTalking微博是在myeclipse,jdk 平台上运用JSP技术开发,实现了用户管理,我的微博,我的图片,关注好友,后台管理等功能。论文在撰写过程中,坚持将理论与实践应用相结合的道理,对相关理论进行阐述的同时配合系统从实际应用和操作技巧上加以说明,希望能够更充分地体现到这些知识与技术在本系统中的应用与实现。

 

       关键词 :面向对象分析与设计  JSP  jdk myeclipse  sql

 


 EasyTalking Micro-Blogsystem


 With the development of Internettechnology, people's daily life, learning can not be separated from thenetwork. People's life and work in the future will be more and more dependenton the development of digital technology,network,electronic,virtualization.Internet development process and the currentapplication status and development trend, can fully believe that networktechnology will greatly change the way of life and work, and even social valueswill change.
   This procedure tries to build up abookshop in the network with JSP, So that every customer needn't go out and cando shopping easily through surfing the Net at home .this article is analyzingthe design and realization of an online bookshop with Data Mining function,from the views of theory and practice. Starting with introducing concepts andtechniques of OOA and OOP in detail, especially introducing the knowledge whichapply for this system, such as: the feature and flow of OOA and OOP; analyzingthe feature、structure and using methodof developing techniques JSP and ADO.NET which using in my system. And then,this article analyses the feasibility of the system, then minutely layouts thedesign thoughts, goals and the system holistic framework. At last, this articleminutely explains the design and realization of Web page layout, data base andapplication program of our system.
  This online bookstore system uses JSPtechnology to realize on Visual Studio.Net platform. Its main function has:manage users, new books on sale, look for classified books, search books,collect favorite book, process of purchase, sales list, the comment of thebooks, website's management, etc. 

During the course of writing this article, I strive tointegrate theory and practice. While expatiating the different kind oftheories, I illuminate the application and operation skill combining the systemso as to fully incarnate the application of these theories and techniques tothis system.

 

keywords: OOA;OOD;JSP;jdk;mysql


目录

..............................................................................................................................II

Abstract..........................................................................................................................III

.............................................................................................................................IV

第一章需求分析..............................................................................................................1

1.1任务概述.............................................................................................................1

1.1.1目标...........................................................................................................1

1.1.2用户的特点................................................................................................1

1.2可行性分析.........................................................................................................1

1.2.1 技术可行性...............................................................................................1

1.2.2 操作可行性...............................................................................................1

1.3需求规定.............................................................................................................2

1.3.1功能的规定................................................................................................2

1.3.4程序运行环境配置......................................................................................3

第二章数据库设计..........................................................................................................4

2.1数据库设计定义..................................................................................................4

2.2E-R..................................................................................................................4

2.2数据表设计.........................................................................................................6

2.2.1数据表总览................................................................................................6

2.2.2数据表详细说明.........................................................................................7

第三章详细设计..............................................................................................................9

3.1系统首页.............................................................................................................9

3.1.1注册界面....................................................................................................9

3.1.2登录界面..................................................................................................10

3.2.2转发,评论,删除界面.............................................................................11

3.3个人信息修改....................................................................................................12

第四章系统实现............................................................................................................13

4.1登陆模块...........................................................................................................13

4.2发布微博模块....................................................................................................19

4.3.注册界面...................................................................................................23

4.4发送好友信息..............................................................................................29

}.............................................................................................................................30

4.5转发,评论,删除模块......................................................................................30

4.6个人信息修改....................................................................................................34

第五章系统测试............................................................................................................40

5.1测试的任务及目标.............................................................................................40

5.1.1测试的任务...............................................................................................40

5.1.2测试的方法...............................................................................................40

5.2测试用例...........................................................................................................40

5.2EasyTalking微博系统测试结论........................................................................42

第六章结束语...............................................................................................................43

参考文献........................................................................................................................44

致  ............................................................................................................................46


需求分析

所谓"需求分析",指业务需求的分析,系统框架的设计,为后续程序的开发打下坚实的基础。

1.1任务概述

1.1.1目标

EasyTalking微博系统是针对简易的微博页面和后台而开发的。EasyTalking微博系统是一项独立的网站系统。

1.1.2用户的特点

EasyTalking系统的最终用户是网站的使用人员(管理员,注册用户和游客),他们具有一定的计算机基础知识和操作计算机的能力。

系统维护人员是计算机专业人员,熟练操作系统和数据库。

1.2可行性分析

可行性分析是通过对项目的主要内容、技术、经济等方面分析,从而为项目决策提供依据的一种综合性的系统分析方法。可行性研究的目的就是通过各方面的分析,得出系统在实施时的可行性,也是一种简化了的系统分析和系统设计的过程,作为基于JavaWEB程序开发的微博系统的设计与开发,必须要考虑到其技术的可行性,也要考虑到其操作上的可行性。

1.2.1技术可行性

大学课程中的《数据库原理》,《操作系统知识》,《JAVA程序开发基础》等多门课程为整个课题开发提供了坚实的基础。JSP是一种相对便捷实用的语言,MySQL也是一种易于操作,简便实用的数据库,所以技术难度并不高。所以在技术上是可行的。

1.2.2操作可行性

本系统主要的对象是网站的使用人员为主,多以增、删、改、查等操作为主,由于强大的MySql数据库管理系统存在,不管是在设计还是在操作上都是十分简单。


 

1.3需求规定

1.3.1功能的规定

功能设计:

本课题是关于简单的微博系统的,其简要功能描述如下:

(1)用户身份验证和权限管理,包括普通用户和管理员。

(2)微博信息管理,包括发送微博,评论微博,转发微博,收藏微博,删除微博,微博的模糊查询和微博信息的分页展示

(3)好友信息管理,包括好友关注、取消关注,互为好友,搜寻好友,等功能。

(4)个人信息管理:用户可以增加、修改自己的个人信息,登录密码。

(5) 管理员进行微博信息管理:显示前台所有用户发送的微博信息,并显示该信息发送的用户,可以对此进行删除,修改,模糊查找功能。

(6) 管理员进行用户信息管理,包括系统用户的查询、用户信息的修改、删除等操作。

 

基于以上的功能分析,功能模块图绘制如图1-3.1:

   图1-3.1功能模块图

1.3.3B/S体系结构图

本系统所面向的对象是广大的互连网用户。因此,将要采用比较流行的B/S三层结构。

基于b/s结构的EasyTalking微博系统的业务流程图如图1-3.3所示:

图1-3.3 B/S流程图

1.3.4程序运行环境配置

本系统对其运行的环境有一定的要求,具体要求如下:

②  系统开发平台:window 10,

② 系统开发语言:Java,JSP,HTML

③  数据库系统软件:SQL,

④  运行平台:Myeclipse

⑤   运行环境:TomCat6.15

 


第二章 数据库设计

2.1数据库设计定义

数据库设计的定义是根据用户需求,在一个特定的数据库管理系统,数据库结构和设计的过程中建立一个数据库。数据库系统需要操作系统支持。

2.2E-R

我们采用E-R图的方法来进行数据库概念结构设计。

根据本系统设计规划出的E—R图,如下:

1. 实体和属性的定义:

1)转发信息(转发用户,账号,内容,发送内容,时间,状态等)

 
 
 

 

 

 

 

 

 

 

 

 


图2-2.1 转发信息E-R图

2)关注信息(关注微博ID,账号,其他账号,创建时间等)

                       

                                    

 

 

 

图2-2.2 关注信息E-R图

3)用户信息(用户账号,昵称,密码,学校,粉丝数,照片,创建时间等)

 

 

 

 

 

 

 

 

 

 

图2-2.3 用户信息E-R图

 

4)微博信息管理(微博编号,内容,媒体途径,账号,昵称,发表时间,转发ID等)

 
 
 

                               

 

 

 

 

 

 

 

 

 

 

图2-2.4 微博信息E-R图

 

 

5)评论信息管理(评论微博编号,评论微博ID,评论内容,评论账号,评论时间等)

 
 
 

 

 

 

 

 

 

 

 


图2-2.5 评论微博信息E-R图

2.2数据表设计

2.2.1数据表总览

表2-1 数据表总览

序号

逻辑数据库表名

物流表名(英文表名)

说明

1

前台用户信息表

users

管理前台用户基本信息

2

前台用户关系表

Relations

管理前台用户之间关系基本信息,例如关注好友

3

微博信息表

Weibo

管理前台用户所发送的微博信息

4

评论表

Comments

针对微博信息所发送的评论信息管理

5

收藏表

Collections

管理用户对自己喜欢的微博信息进行收藏管理

6

后台用户表

Admins

管理后台用户基本信息表

 

2.2.2数据表详细说明

1. 转发信息表

表2-2 t_infor(转发微博信息表)

字段名

描述

数据类型

长度

是否空

主键

id

转发用户ID

varchar

50

account

转发账号

varchar

50

content

微博内容

varchar

500

fasongaccount

发送内容

varchar

50

shijian

时间

varchar

50

status

状态

varchar

50

 

2. 关注信息表具体表如下:

表2-3 t_guanzhu(关注信息表)

字段名

描述

数据类型

长度

是否空

主键

id

关注微博id

varchar

50

account

账号

varchar

50

otheraccount

其他账号

varchar

50

createDt

创建时间

Datetime

 

3. 用户信息表具体表如下:

表2-4 t_user(用户信息表)

字段名

描述

数据类型

长度

是否空

主键

account

用户账号

varchar

50

nicheng

昵称

varchar

50

pwd

密码

varchar

50

school

学校

varchar

50

fensishu

粉丝数

varchar

50

guanzhu

关注人数

varchar

50

photo

照片

varchar

100

createDt

创建时间

varchar

50

4. 微博信息表:

表2-5 t_weibo(微博信息表)

字段名

描述

类型

长度

是否空

主键

id

微博编号

varchar

50

content

内容

varchar

50

mediapath

媒体途径

varchar

50

account

账号

varchar

50

nichen

昵称

varchar

50

shijian

时间

archar

50

zhuanfaid

转发ID

archar

50

 

5. 评论信息表,具体表如下:

表2-6 t_weibopinglun(评论信息表)

字段名

描述

类型

长度

是否空

主键

id

编号

varchar

50

weiboid

微博ID

varchar

50

pingluncontent

评论内容

varchar

500

pinglunaccount

评论账号

varchar

50

shijian

评论时间

varchar

50

 


第三章 详细设计

3.1系统首页

3.1系统首页(网站首页login.jsp)

图3-1. 网站首页

首页中拥有一个用户登录窗口,在其相应输入框中填定正确的账号和密码并点击登陆按钮,方可登录系统。同时系统会展现出最新发布的一些用户微博。其他区块与一般网站无异,只是较简洁,操作方面也是力求简约。

 

3.1.1注册界面

点击立即加入按钮,进行账号注册,包括账号,昵称,密码,确认密码,来自何处等信息,系统界面如下:

图3-1.1 注册界面设计图

  用户填写的信息插入user数据表,实现新增用户。

 

3.1.2登录界面

      输入正确的账号,密码点击登陆按钮可以顺利进入系统:

图3-1.2 登录界面设计图

       将账号和密码与user表数据进行验证,若不一致,系统会报错。

  3.2个人微博界面

此界面比较简单实用。功能包括发表微博,转发微博,评论微博,删除微博,修改头像,添加关注等,同时使用九宫格模式排列出了当前热门微博用户,点击微博用户,可以方便快捷的添加关注。

图3.2 微博主界面图

3.2.1发表微博:发表微博功能包括文字发表,添加表情,添加图片,添加视频等功能,文字输入限制是106了字,这也保证的短博客的及时性,便于分享!

图3-2.1 发表微博设计图

3.2.2转发,评论,删除界面

用户实时发表的微博,用户可以及时的转发,评论和删除:

 

图3-2.2 转发,评论,删除操作界面设计图

 

3.3个人信息修改

用户可以修改个人信息,包括头像修改,粉丝数,热门微博用户等。

 

 

图3-3 个人信息修改设计图

 

将用户修改的信息提交到user表按照用户账号account进行数据更新。

 


第四章 系统实现

4.1登陆模块

用户进入该系统,首先看到的是登陆界面,客户可以输入正确的登陆名称及密码,登陆微博系统。登陆模块如图4-1所示:

 

 

图4-1 登陆信息

 

登陆模块相关代码如下:

public Stringlogin(String account, String pwd,int userType) {

        try {

            Thread.sleep(700);

        } catch(InterruptedException e) {

            e.printStackTrace();

        }

 

        String result = "no";

 

        if (userType == 0)

        {

            Stringsql = "select * fromt_user where account=? and pwd=?";

            Object[]params = { account, pwd };

            DBmydb = new DB();

            mydb.doPstm(sql,params);

            try {

                ResultSet rs = mydb.getRs();

                boolean mark = (rs ==null || !rs.next() ?false :true);

                if (mark ==false) {

                    result= "no";

                } else {

                    result= "yes";

                    Tuseruser = new Tuser();

                    user.setAccount(rs.getString("account"));

                    user.setPwd(rs.getString("pwd"));

                    user.setNichen(rs.getString("nichen"));

                    user.setSchool(rs.getString("school"));

                    user.setFensishu(rs.getString("fensishu"));

                    user.setWeiyou(rs.getString("weiyou"));

                    user.setGuanzhu(rs.getString("guanzhu"));

                    user.setPhoto(rs.getString("photo"));

 

                    WebContextctx = WebContextFactory.get();

                    HttpSessionsession = ctx.getSession();

                    session.setAttribute("userType", 0);

                    session.setAttribute("user", user);

 

                    // 热门用户

                    ListhotuserList =newArrayList();

                    Stringsql3 ="select * fromt_user where del='no' order by fensishu desc limit 0,9";

                    Object[]params3 = {};

                    DBmydb3 = new DB();

                    try {

                        mydb3.doPstm(sql3, params3);

                        ResultSet rs3 = mydb3.getRs();

                        while (rs3.next()) {

                            Tuseruser3 =new Tuser();

                            user3.setAccount(rs3.getString("account"));

                            user3.setNichen(rs3.getString("nichen"));

                            user3.setPwd(rs3.getString("pwd"));

                            user3.setSchool(rs3.getString("school"));

 

                            user3.setFensishu(rs3.getString("fensishu"));

                            user3.setGuanzhu(rs3.getString("guanzhu"));

                            user3.setWeiyou(rs3.getString("weiyou"));

                            user3.setPhoto(rs3.getString("photo"));

 

                            hotuserList.add(user3);

                        }

                        rs3.close();

                    } catch (Exception e) {

                        e.printStackTrace();

                    }

                    mydb3.closed();

 

                    session.setAttribute("hotuserList", hotuserList);

 

                    // 自己最新10条围脖

 

                    ListweiboList =newArrayList();

                    Stringsql5 ="select * fromt_weibo order by shijian desc limit 0,10";

                    Object[]params5 = {};

                    DBmydb5 = new DB();

                    try {

                        mydb5.doPstm(sql5, params5);

                        ResultSet rs5 = mydb5.getRs();

                        while (rs5.next()) {

                            Tweiboweibo =new Tweibo();

 

                            weibo.setId(rs5.getString("id"));

                            weibo.setContent(rs5.getString("content"));

                            weibo.setMediapath(rs5.getString("mediapath"));

                            weibo.setAccount(rs5.getString("account"));

                            weibo.setShijian(rs5.getString("shijian"));

                            weibo.setNichen(rs5.getString("nichen"));

                            weibo.setZhuanfaid(rs5.getString("zhuanfaid"));

                            if (findUserByAccount(rs5.getString("account")) !=null) {

                                weibo.setPhoto(findUserByAccount(

                                        rs5.getString("account")).getPhoto());

                            }

                            weibo.setPinglunlist(findpinglunlistByweiboid(rs5.getString("id")));

                            weiboList.add(weibo);

                        }

                        rs5.close();

                    } catch (Exception e) {

                        e.printStackTrace();

                    }

                    mydb5.closed();

                   session.setAttribute("weiboList", weiboList);

 

                   

                    // 是否有发送的信件

                    ListinforList =newArrayList();

                    Stringsql6 ="select * fromt_infor where status = '0' and account = '" + account +"'  order by shijian desc";

                    Object[]params6 = {};

                    DBmydb6 = new DB();

                    try {

                        mydb6.doPstm(sql6, params6);

                        ResultSet rs6 = mydb6.getRs();

                        if(rs6 != null){

                           

                            while (rs6.next()) {

                                Tinfor infor =newTinfor();

 

                                infor.setId(rs6.getString("id"));

                                infor.setContent(rs6.getString("content"));

                                infor.setAccount(rs6.getString("account"));

                                infor.setShijian(rs6.getString("shijian"));

                                infor.setFasongaccount(rs6.getString("fasongaccount"));

                                inforList.add(infor);

                            }

                            rs6.close();

                        }

 

                    } catch (Exception e) {

                        e.printStackTrace();

                    }

                    mydb6.closed();

                   session.setAttribute("inforList", inforList);

                   

                   Tinfor infortemp =null ;

                    if(inforList !=null&& inforList.size() > 1){

                    infortemp = (Tinfor) inforList.get(0);

                    }

                   session.setAttribute("infor", infortemp);

                   

                   

                   

                   

                   session.setAttribute("guanzhulist", getGuanzhuuser(account));

                   session.setAttribute("fensilist", getMyFensi(account));

                   

                }

                rs.close();

            } catch (SQLException e) {

                e.printStackTrace();

            } finally {

                mydb.closed();

            }

 

        }

 

        return result;

    }

在客户输入好登陆信息后,使用者将进入该系统的主界面,如图4-2所示:

图4-1 系统主界面

4.2发布微博模块

进入系统之后,可以简单的发布微博,包括一些及时的文字,图片,表情,视频的分享,实时的分享自己的生活,情绪。

图4-2 发布微博

 

其中“发布”按钮相关代码如下:

publicvoid weiboAdd(HttpServletRequest req, HttpServletResponseres) {

        Stringid = String.valueOf(new Date().getTime());

        Stringcontent = req.getParameter("content");

        Stringmediapath = req.getParameter("fujian");

        Stringaccount = req.getParameter("account");

        Stringshijian = new Date().toLocaleString();

        Stringnichen = req.getParameter("nichen");

        Stringzhuanfaid = req.getParameter("zhuanfaid");

       

        Stringsql = "insertinto t_weibo values(?,?,?,?,?,?,?)";

        Object[]params = { id, content, mediapath, account, nichen, shijian,zhuanfaid };

        DBmydb = new DB();

        mydb.doPstm(sql,params);

        mydb.closed();

 

        req.setAttribute("message");

 

       

       

       

       

        // 热门用户

        ListhotuserList =newArrayList();

        Stringsql3 = "select* from t_user where del='no' order by fensishu desc limit 0,9";

        Object[]params3 = {};

        DBmydb3 = new DB();

        try {

            mydb3.doPstm(sql3, params3);

            ResultSet rs3 = mydb3.getRs();

            while (rs3.next()) {

                Tuseruser3 = new Tuser();

                user3.setAccount(rs3.getString("account"));

                user3.setNichen(rs3.getString("nichen"));

                user3.setPwd(rs3.getString("pwd"));

                user3.setSchool(rs3.getString("school"));

 

                user3.setFensishu(rs3.getString("fensishu"));

                user3.setGuanzhu(rs3.getString("guanzhu"));

                user3.setWeiyou(rs3.getString("weiyou"));

                user3.setPhoto(rs3.getString("photo"));

 

                hotuserList.add(user3);

            }

            rs3.close();

        } catch (Exception e) {

            e.printStackTrace();

        }

        mydb3.closed();

 

        req.setAttribute("hotuserList", hotuserList);

 

        // 自己最新10条围脖

 

        ListweiboList = new ArrayList();

        Stringsql5 = "select* from t_weibo order by shijian desc limit 0,10";

        Object[]params5 = {};

        DBmydb5 = new DB();

        try {

            mydb5.doPstm(sql5, params5);

            ResultSet rs5 = mydb5.getRs();

            while (rs5.next()) {

                Tweiboweibo = new Tweibo();

 

                weibo.setId(rs5.getString("id"));

                weibo.setContent(rs5.getString("content"));

                weibo.setMediapath(rs5.getString("mediapath"));

                weibo.setAccount(rs5.getString("account"));

                weibo.setShijian(rs5.getString("shijian"));

                weibo.setNichen(rs5.getString("nichen"));

                weibo.setZhuanfaid(rs5.getString("zhuanfaid"));

                if (findUserByAccount(rs5.getString("account")) != null) {

                    weibo.setPhoto(findUserByAccount(

                            rs5.getString("account")).getPhoto());

                }

                weibo.setPinglunlist(findpinglunlistByweiboid(rs5.getString("id")));

                weiboList.add(weibo);

            }

            rs5.close();

        } catch (Exception e) {

            e.printStackTrace();

        }

        mydb5.closed();

       req.setAttribute("weiboList", weiboList);

 

       

       

        StringtargetURL = "/main.jsp";

        dispatch(targetURL,req, res);

 

4.3.注册界面

注册界面相对简单,填写相关信息,加入EasyTalking微博系统,包括:账号,昵称,密码,确认密码,来自学校等信息。填写好信息之后,系统录入数据到数据库。点击立即注册,注册成功,就可以使用此账号,密码登录微博了。

图4.3 注册界面

其中注册功能相关代码如下:

publicvoid userAdd(HttpServletRequest req, HttpServletResponse res){

        String account = req.getParameter("account");

        String nichen = req.getParameter("nichen");

        String pwd = req.getParameter("pwd");

        String pwd2 = req.getParameter("pwd2");

        String school = req.getParameter("school");

 

        String fensishu = req.getParameter("fensishu");

        String guanzhu = req.getParameter("guanzhu");

        String weiyou = req.getParameter("weiyou");

        String photo = "img/user7.jpg" ;

        String fmt = "yyyy-MM-dd";

        SimpleDateFormat sdf = new SimpleDateFormat(fmt);

        Date date = newDate();

        String createDt = sdf.format(date);

        String del = "no";

        String result = "no";

        String sql = "select * from t_user where account=?";

        Object[] params = { account };

        DB mydb = new DB();

        mydb.doPstm(sql, params);

        try {

            ResultSetrs = mydb.getRs();

            boolean mark = (rs ==null ||!rs.next() ?false :true);

            if (mark ==false) {

                result = "no";

            } else {

                result = "yes";

            }

            rs.close();

        } catch(SQLException e) {

            e.printStackTrace();

        } finally {

            mydb.closed();

        }

       

       

        if (pwd !=null && pwd !=""&& !pwd.equals(pwd2)) {

            req.setAttribute("message","您两次输入的密码不一致!");

            StringtargetURL = "/reg.jsp";

            dispatch(targetURL,req, res);

        }elseif ("yes".equals(result)) {

            req.setAttribute("message","账号已经注册");

            StringtargetURL = "/reg.jsp";

            dispatch(targetURL,req, res);

        } else {

            sql= "insert into t_uservalues(?,?,?,?,?,?,?,?,?,?)";

            Object[]params1 = { account, nichen, pwd, school, fensishu,

                    guanzhu,weiyou, photo, createDt, del };

            DBmydb1 = new DB();

            mydb1.doPstm(sql,params1);

            mydb1.closed();

 

            //最近加入的人员

            ListuserList =newArrayList();

            Stringsql2 = "select * fromt_user where del='no' order by createDt desc limit 0,10";

            Object[]params2 = {};

            DBmydb2 = new DB();

            try {

                mydb2.doPstm(sql2, params2);

                ResultSet rs2 = mydb2.getRs();

                while (rs2.next()) {

                    Tuseruser2 =new Tuser();

                    user2.setAccount(rs2.getString("account"));

                    user2.setNichen(rs2.getString("nichen"));

                    user2.setPwd(rs2.getString("pwd"));

                    user2.setSchool(rs2.getString("school"));

 

                    user2.setFensishu(rs2.getString("fensishu"));

                    user2.setGuanzhu(rs2.getString("guanzhu"));

                    user2.setWeiyou(rs2.getString("weiyou"));

                    user2.setPhoto(rs2.getString("photo"));

 

                    userList.add(user2);

                }

                rs2.close();

            } catch (Exception e) {

                e.printStackTrace();

            }

            mydb2.closed();

           

           

            //热门用户

            ListhotuserList =newArrayList();

            Stringsql3 = "select * fromt_user where del='no' order by fensishu desc limit 0,5";

            Object[]params3 = {};

            DBmydb3 = new DB();

            try {

                mydb3.doPstm(sql3, params3);

                ResultSet rs3 = mydb3.getRs();

                while (rs3.next()) {

                    Tuseruser3 =new Tuser();

                    user3.setAccount(rs3.getString("account"));

                    user3.setNichen(rs3.getString("nichen"));

                    user3.setPwd(rs3.getString("pwd"));

                    user3.setSchool(rs3.getString("school"));

 

                    user3.setFensishu(rs3.getString("fensishu"));

                    user3.setGuanzhu(rs3.getString("guanzhu"));

                    user3.setWeiyou(rs3.getString("weiyou"));

                    user3.setPhoto(rs3.getString("photo"));

 

                    hotuserList.add(user3);

                }

                rs3.close();

            } catch (Exception e) {

                e.printStackTrace();

            }

            mydb3.closed();

           

           

            req.setAttribute("userList", userList);

           

            req.setAttribute("hotuserList", hotuserList);

           

            //最新3条围脖

           

            ListweiboList=newArrayList();

            Stringsql5="select * fromt_weibo order by shijian desc limit 0,3";

            Object[]params5={};

            DBmydb5=new DB();

            try

            {

                mydb5.doPstm(sql5, params5);

                ResultSet rs5=mydb5.getRs();

                while(rs5.next())

                {

                    Tweiboweibo=new Tweibo();

                   

                    weibo.setId(rs5.getString("id"));

                    weibo.setContent(rs5.getString("content"));

                    weibo.setMediapath(rs5.getString("mediapath"));

                    weibo.setAccount(rs5.getString("account"));

                    weibo.setShijian(rs5.getString("shijian"));

                    weibo.setNichen(rs5.getString("nichen"));

                    if(findUserByAccount(rs5.getString("account")) != null){

                        weibo.setPhoto(findUserByAccount(rs5.getString("account")).getPhoto());

                    }

                    weiboList.add(weibo);

                }

                rs5.close();

            }

            catch(Exception e)

            {

                e.printStackTrace();

            }

            mydb.closed();

           

            req.setAttribute("weiboList", weiboList);

           

            StringtargetURL = "/login.jsp";

            dispatch(targetURL,req, res);

        }

    }

4.4发送好友信息

作为一个简单的即时分享类的微博系统,接收好友账号信息是很重要的,用户方便与指定ID账号的朋友分享自己的生活,其界面及功能实现如下:

图4.4 发送好友信息界面

其中“发送好友ID”相关代码如下:

publicvoiduserSearch(HttpServletRequest req, HttpServletResponse res) {

        String nichen = req.getParameter("nichen");

        List userList = new ArrayList();

        String sql5 = "select* from t_user where nichen = ?";

        Object[] params5 = {nichen};

        DB mydb5 = new DB();

        try {

            mydb5.doPstm(sql5,params5);

            ResultSetrs = mydb5.getRs();

            while(rs.next()) {

                Tuser user = newTuser();

                user.setAccount(rs.getString("account"));

                user.setPwd(rs.getString("pwd"));

                user.setNichen(rs.getString("nichen"));

                user.setSchool(rs.getString("school"));

                user.setFensishu(rs.getString("fensishu"));

                user.setWeiyou(rs.getString("weiyou"));

                user.setGuanzhu(rs.getString("guanzhu"));

                user.setPhoto(rs.getString("photo"));

 

                userList.add(user);

            }

            rs.close();

        } catch(Exception e) {

            e.printStackTrace();

        }

        mydb5.closed();

        req.setAttribute("userList",userList);

 

        String targetURL = "/userlist.jsp";

        dispatch(targetURL, req, res);

    }

4.5转发,评论,删除模块

此模块中主要涉及的就是用户微博的转发,评论和删除。相关代码如下:

图4.5 转发,评论,删除界面

其中“添加”“修改”“删除”按钮相关代码如下:

       转发:publicvoid inforAdd(HttpServletRequest req,HttpServletResponse res) {

        String id = String.valueOf(new Date().getTime());

        String account = req.getParameter("account");

        String content = req.getParameter("content");

        String fasongaccount = req.getParameter("fasongaccount");

        String shijian = newDate().toLocaleString();

        String status = "0";

       

        String sql = "insert into t_infor values(?,?,?,?,?,?)";

        Object[] params = { id, account, content,fasongaccount,  shijian, status };

        DB mydb = new DB();

        mydb.doPstm(sql, params);

        mydb.closed();

 

        String targetURL = "/login.jsp";

        dispatch(targetURL, req, res);

 

    }

评论:  publicvoidweiboPinlun(HttpServletRequest req, HttpServletResponse res)

            throws ServletException, IOException {

        String id = String.valueOf(new Date().getTime());

        String content = req.getParameter("pinglunContent");

        String weiboid = req.getParameter("weiboid");

        String account = req.getParameter("pinglunaccount");

        String shijian = newDate().toLocaleString();

 

        String sql = "insert into t_weibopinglun values(?,?,?,?,?)";

        Object[] params = { id, weiboid, content,account, shijian };

        DB mydb = new DB();

        mydb.doPstm(sql, params);

        mydb.closed();

 

       

        // 热门用户

        List hotuserList =newArrayList();

        String sql3 = "select * from t_user where del='no' order byfensishu desc limit 0,9";

        Object[] params3 = {};

        DB mydb3 = new DB();

        try {

            mydb3.doPstm(sql3,params3);

            ResultSetrs3 = mydb3.getRs();

            while (rs3.next()) {

                Tuser user3 = newTuser();

                user3.setAccount(rs3.getString("account"));

                user3.setNichen(rs3.getString("nichen"));

                user3.setPwd(rs3.getString("pwd"));

                user3.setSchool(rs3.getString("school"));

 

                user3.setFensishu(rs3.getString("fensishu"));

                user3.setGuanzhu(rs3.getString("guanzhu"));

                user3.setWeiyou(rs3.getString("weiyou"));

                user3.setPhoto(rs3.getString("photo"));

 

                hotuserList.add(user3);

            }

            rs3.close();

        } catch(Exception e) {

            e.printStackTrace();

        }

        mydb3.closed();

 

        req.setAttribute("hotuserList", hotuserList);

 

        // 自己最新10条围脖

 

        List weiboList = new ArrayList();

        String sql5 = "select * from t_weibo order by shijian desc limit0,10";

        Object[] params5 = {};

        DB mydb5 = new DB();

        try {

            mydb5.doPstm(sql5,params5);

            ResultSetrs5 = mydb5.getRs();

            while (rs5.next()) {

                Tweibo weibo = newTweibo();

 

                weibo.setId(rs5.getString("id"));

                weibo.setContent(rs5.getString("content"));

                weibo.setMediapath(rs5.getString("mediapath"));

                weibo.setAccount(rs5.getString("account"));

                weibo.setShijian(rs5.getString("shijian"));

                weibo.setNichen(rs5.getString("nichen"));

                weibo.setZhuanfaid(rs5.getString("zhuanfaid"));

                if(findUserByAccount(rs5.getString("account")) != null) {

                    weibo.setPhoto(findUserByAccount(

                            rs5.getString("account")).getPhoto());

                }

                weibo.setPinglunlist(findpinglunlistByweiboid(rs5.getString("id")));

                weiboList.add(weibo);

            }

            rs5.close();

        } catch(Exception e) {

            e.printStackTrace();

        }

        mydb5.closed();

        req.setAttribute("weiboList", weiboList);

       

        String targetURL = "/main.jsp";

        dispatch(targetURL, req, res);

 

    }

删除:publicvoidweiboDel(HttpServletRequest req, HttpServletResponse res) {

        String id = req.getParameter("weiboid");

 

        String sql = "delete from t_weibo where id=?";

        Object[] params = { id };

        DB mydb = new DB();

        mydb.doPstm(sql, params);

        mydb.closed();

 

        req.setAttribute("message");

        req.setAttribute("path","weibo?type=weiboMana");

 

        String targetURL = "/common/success.jsp";

        dispatch(targetURL, req, res);

    }

4.6个人信息修改

      用户可以修改自己的个人信息,点击“修改头像”按钮,可以从本地文件选择满意的照片添加进去,相关代码如下:

 

图4.6 个人信息修改

 

其中“修改头像”按钮代码如下:

   publicvoiduserModifyPhoto(HttpServletRequest req, HttpServletResponse res) {

        String account = req.getParameter("account");

        String photo = req.getParameter("fujian");

        String sql = "updatet_user set photo='" + photo + "'where account=?";

        Object[] params = { account };

        DB mydb = new DB();

        mydb.doPstm(sql, params);

        mydb.closed();

 

        //最近加入的人员

        List userList = new ArrayList();

        String sql2 = "select* from t_user where del='no' order by createDt desc limit 0,10";

        Object[] params2 = {};

        DB mydb2 = new DB();

        try {

            mydb2.doPstm(sql2,params2);

            ResultSetrs2 = mydb2.getRs();

            while(rs2.next()) {

                Tuser user2 = newTuser();

                user2.setAccount(rs2.getString("account"));

                user2.setNichen(rs2.getString("nichen"));

                user2.setPwd(rs2.getString("pwd"));

                user2.setSchool(rs2.getString("school"));

 

                user2.setFensishu(rs2.getString("fensishu"));

                user2.setGuanzhu(rs2.getString("guanzhu"));

                user2.setWeiyou(rs2.getString("weiyou"));

                user2.setPhoto(rs2.getString("photo"));

 

                userList.add(user2);

            }

            rs2.close();

        } catch(Exception e) {

            e.printStackTrace();

        }

        mydb2.closed();

       

       

        //热门用户

        List hotuserList =newArrayList();

        String sql3 = "select* from t_user where del='no' order by fensishu desc limit 0,5";

        Object[] params3 = {};

        DB mydb3 = new DB();

        try {

            mydb3.doPstm(sql3,params3);

            ResultSetrs3 = mydb3.getRs();

            while(rs3.next()) {

                Tuser user3 = newTuser();

                user3.setAccount(rs3.getString("account"));

                user3.setNichen(rs3.getString("nichen"));

                user3.setPwd(rs3.getString("pwd"));

                user3.setSchool(rs3.getString("school"));

 

                user3.setFensishu(rs3.getString("fensishu"));

                user3.setGuanzhu(rs3.getString("guanzhu"));

                user3.setWeiyou(rs3.getString("weiyou"));

                user3.setPhoto(rs3.getString("photo"));

 

                hotuserList.add(user3);

            }

            rs3.close();

        } catch(Exception e) {

            e.printStackTrace();

        }

        mydb3.closed();

       

       

        req.setAttribute("userList",userList);

       

        req.setAttribute("hotuserList",hotuserList);

       

        //最新3条微博      

        List weiboList=newArrayList();

        String sql5="select* from t_weibo order by shijian desc limit 0,3";

        Object[] params5={};

        DB mydb5=new DB();

        try

        {

            mydb5.doPstm(sql5,params);

            ResultSetrs5=mydb.getRs();

            while(rs5.next())

            {

                Tweibo weibo=newTweibo();

               

                weibo.setId(rs5.getString("id"));

                weibo.setContent(rs5.getString("content"));

                weibo.setMediapath(rs5.getString("mediapath"));

                weibo.setAccount(rs5.getString("account"));

                weibo.setShijian(rs5.getString("shijian"));

                weibo.setNichen(rs5.getString("nichen"));

                if(findUserByAccount(rs5.getString("account")) != null){

                    weibo.setPhoto(findUserByAccount(rs5.getString("account")).getPhoto());

                }

                weiboList.add(weibo);

            }

            rs5.close();

        }

        catch(Exceptione)

        {

            e.printStackTrace();

        }

        mydb.closed();

       

        req.setAttribute("weiboList",weiboList);

       

        String targetURL = "/login.jsp";

        dispatch(targetURL, req, res);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第五章 系统测试

5.1测试的任务及目标

5.1.1测试的任务

在软件投入运行之前,尽可能多地发现软件中的错误。

5.1.2测试的方法

软件测试按是否查看程序内部结构可分为两种:黑盒测试和白盒测试。本系统测试主要以黑盒为主,与一些软件公司的处理方法类似,通过不断地输入数值,拿预期值与实际值进行对比,部分功能测试如下:

5.2测试用例

 

(1)   登陆界面测试

表5-1用户登录操作测试

测试内容

登录界面测试

测试步骤

操作或数据输入

显示或数据输出

实际输出结果

TEST-1

登录名为空,点击“确定”

显示“登录名不能为空”警告框

显示“登录名不能为空”警告框

TEST-2

输入“登陆名称”,并输入错误的“密码”

显示“登陆失败”警告框

显示“登陆失败”警告框

TEST-3

输入正确的“登陆名称及密码”

进入系统主界面

进入系统主界面

测试结果:用户登录界面功能正常

 

(2)       注册界面测试

表5-2注册界面测试

测试内容

注册界面测试

测试步骤

操作或数据输入

显示或数据输出

实际输出结果

TEST-1

输入的账号若在用户表中已存在

显示“账号已存在”

显示“账号已存在”

测试步骤

操作或数据输入

显示或数据输出

实际输出结果

TEST-2

输入的确认密码与密码不同

显示“您两次输入的密码不一致!”警告框

显示“您两次输入的密码不一致!”警告框

TEST-3

填写完整且正确的信息,点击注册按钮

进入登录界面

进入登录界面

TEST-4

点击返回登录界面的链接

进入登录界面

 

进入登录界面

 

测试结果:注册界面功能正常

 

(3)转发,评论,删除模块测试

表5-3转发,评论,删除模块测试

测试内容

转发,评论,删除模块测试

测试步骤

操作或数据输入

显示或数据输出

实际输出结果

TEST-1

   点击转发

进入转发界面,右上方有发送按钮

进入转发界面,右上方有发送按钮

TEST-2

点击评论

进入评论界面,右上方有发送按钮

进入评论界面,右上方有发送按钮

TEST-3

点击删除

显示“是否要删除此动态”提示框

显示“是否要删除此动态”提示框

测试结果:转发,评论,删除模块功能正常

 

 

 

 

 

(4)   发送好友信息模块测试

表5-4发送好友信息模块测试

测试内容

发送好友信息模块测试

测试步骤

操作或数据输入

显示或数据输出

实际输出结果

TEST-1

接收人员账号为空,点击“提交查询内容”

显示“接收人员账号不能为空”

显示“接收人员账号不能为空”

TEST-2

填入正确且已有的账号,点击“提交查询内容”

显示该好友的信息

显示该好友信息

测试结果:发送好友模块功能正常

 

(5)   发布微博模块测试

表5-5发布微博测试

测试内容

发布微博模块测试

测试步骤

操作或数据输入

显示或数据输出

实际输出结果

TEST-1

输入文本内容,点击图片

显示文件浏览框右下角有浏览按钮

显示文件浏览框右下角有浏览按钮

TEST-2

点击发送

新消息显示在你的个人界面

新消息显示在你的个人界面

测试结果:发布微博模块功能正确

 5.2 EasyTalking微博系统测试结论

通过整个系统的测试过程后,可以发现程序代码编写无误,系统运行稳定,容错性高,不会因为不当的操作引起系统的瘫痪。测试结果显示,整个微博系统的功能模块无误,均正常使用。


第六章 结束语

在三个月短暂的时间里,完成了本次EasyTalking微博系统的开发与设计,在这次设计过程中实现了对过去所学知识的回顾、总结和应用。EasyTalking微博系统能够实现数据的输入、查询、修改、等功能。完成了基于b/s结构的微博系统开发和应用,实现了预期设计的功能。但是,该系统在设计过程中仍然存在很多的缺点和不足,并没有做到完美。由于本人经验不足,能力有限,所以开发出的系统还不够完善,部分功能没有实现,系统操作上比较简单,这都是在以后的系统设计需要中应该注意的地方,并虚心的请教老师和同学将之完善。

此论文在对基于b/s结构的微博系统的论述后,深入论证了设计的全过程。整个设计过程力求简单明了,思路情绪,循序渐进,逐步求精。该系统所有相关程序均经过多次上机调试,证明是可行的。

经过三个多月的艰辛付出,完成了该系统开发任务。在实际的开发过程中,也遇到了很多难题,所有这些通过自己潜心研究和网上查找资料以及指导老师和同学的帮助,都得到了很好的解决。有了这次毕业前的“实战演习”,我相信,在今后的学习工作中,将受益匪浅。面对自己不会的问题更加的迎难而上,做到完美!


参考文献

 

[1]. 林信良.JSP & Servlet学习笔记[M]. 清华大学出版社, 2012年05月.

[2]. 张峋, 杨三成. 关键技术:JSP与JDBC应用详解[M].中国铁道出版社, 2010年11月.

[3]. 刘晓义.XML技术及应用[M].哈尔滨工程大学出版社, 2011年06月.

[4]. 赵俊峰 等.Java Web应用开发案例教程:基于MVC模式的JSP+Servlet+JDBC和AJAX[M]. 清华大学出版社, 2012年01月

[5]. 刘京华 等.Java Web整合开发王者归来[M]. 清华大学出版社,2010年01月

[6].王海涛,-贾宗璞.基于Struts和Hibernate的Web应用开发[J].计算机工程,2011.

[7].Metsker S J. Java设计模式[M]. 第2版. 电子工业出版社, 2012年09月

[8].张剑飞.JavaEE开发技术[M].哈尔滨工业大学出版社.2013

[9].李兆锋.张得生.JavaWeb项目开发案例精粹[M].电子工业出版社.2010

[10]王小科.C#开发实战宝典 [M].清华大学出版设,2010.1.

[11]冉春玉,姚辉.基于C/S和B/S模式的进销存系统的设计和实现[M].武汉.2012

[12]陈衍席.基于Java网络聊天系统的设计及实现研究[J]. 通讯世界,2016,07:207-208.

[13]孙赫.物联网的发展与知识产权保护[D].北京:北京交通大学,2014.

[14]王浩.JAVA源代码缺陷分析系统的设计与实现[J]. 信息技术与信息化,2015,12:118-120.

[15].Ou, J., et al. Design and research on teaching platformof stage task using JavaEE. [M] 2012. Chongqing, China.

[16].Li, Z. and Z. Weixi.Design of tourism e-business system based on JavaEE multi-pattern. [M] 2012. Sanya, China

[17] KatsarosD, Dimokas N,Tassiulas L. Social network analysis concepts in the design ofwireless ad-hoc network protocoIs[J]. Network, IEEE, 2010

[18] KatsarosD, Dimokas N,Tassiulas L. Social network analysis concepts in the design of wirelessad-hoc network protocoIs[J]. Network, IEEE, 2010,24(6): 23-29.


致  谢

经过近三个月紧张的毕业设计,EasyTalking微博系统的设计已经圆满的完成。通过此次设计,更加巩固了系统开发和程序设计的有关知识,提高了对Java和SQL的应用能力,进一步使自己的大学四年所学的知识得到升华。

本次毕业设计,是自己大学生活中所学知识的综合运用。通过这次设计,我不仅对系统开发的全过程有了一个更为清晰、全面的认识,也学到了许多书本上学不到的知识,使我的知识结构更加合理,提高了自己独立分析问题、解决问题的能力。

在论文完成之际,首先由衷的感谢我的论文指导老师谢旻,老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神知识给我留下了深刻的印象,让我受益匪浅。在学术思想上她给予了我很大的帮助,使我顺利的完成了论文阶段。

感谢帮助过我的同学,是他们帮我找到大量的资料。最后,向所有关心我的亲人、师长和朋友们表示深深的谢意

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EasyTalking微博系统 的相关文章

随机推荐

  • 顺序栈的基本操作(初始化、销毁、判空等)

    1 实验目的 通过该实验 让学生掌握栈的相关基本概念 认识栈是插入和删除集中在一端进行的线性结构 掌握栈的 先入后出 操作特点 栈在进行各类操作时 栈底指针固定不动 掌握栈空 栈满的判断条件 2 实验内容 用顺序存储结构 实现教材定义的栈的
  • 最大子数组之和对应的子数组

    给定一个整数数组 包含正负数 找到一个具有最大和的子数组 返回其最大的子数组 public static List
  • [译]理解HTTP/304响应

    原文 http www telerik com automated testing tools blog eric lawrence 12 11 06 understanding http 304 responses aspx 刚刚开始使用
  • 【JetBrains】安装使用技巧

    JetBrains 使用 JetBrains Toolbox 管理 IDE 远程开发 Gateway 通过 SSH 连接 疑难杂症 1 部署失败 使用 JetBrains Toolbox 管理 IDE 下载 Toolbox 工具 解压运行
  • Wireshark常用命令

    目录 页面 命令 不定期更新我自己遇到的语法 页面 命令 数据链路层 筛选mac地址为04 f9 38 ad 13 26的数据包 eth src 04 f9 38 ad 13 26 筛选源mac地址为04 f9 38 ad 13 26的数据
  • 模板特化

    上一篇 模板与重载 里 我遇见了想同时使用模板函数与非模板函数的情况 后来才知道 其实并不需要 当我想对某些特定的类型进行特殊操作时 只需要使用模板特化就可以 所谓特化 就是说对于模板函数 对于某些类型可能需要特殊处理 所以进行特殊化 可以
  • OpenApi-Generator:简化RESTful API开发流程

    目录 1 OpenAPI Generator简介 1 1 OpenAPI Generator是什么 1 2 为什么选择OpenAPI Generator 1 3 谁需要 OpenAPI Generator 2 OpenAPI 2 0规范 2
  • 单臂路由实现原理

    一 概述 单臂路由 router on a stick 是指在路由器的一个接口上通过配置子接口 或 逻辑接口 并不存在真正物理接口 的方式 实现原来相互隔离的不同VLAN 虚拟局域网 之间的互联互通 单臂路由的子接口 路由器的物理接口可以被
  • Python Pandas 处理空数据/缺失数据 dropna fillna,增加/更新列 assign,分层 qcut,向量函数

    Pandas 处理空数据 缺失数据 增加 更新列 分层 向量函数 数据准备 一 处理缺失数据 1 1 去除有缺失数据的行 dropna 1 2 替换缺失数据 fillna 二 增加 更新列 2 1 指定生成列的方式 2 2 复制现有的列生成
  • dataframe的索引遍历_pandas

    今天是pandas数据处理专题第三篇文章 我们来聊聊DataFrame中的索引 上篇文章当中我们简单介绍了一下DataFrame这个数据结构的一些常见的用法 从整体上大概了解了一下这个数据结构 今天这一篇我们将会深入其中索引相关的应用方法
  • 开发一个APP需要多少钱?

    作为一个移动端开发人员 我们可能被外行朋友或者被客户问及最多的一个问题就是 开发一个APP需要多少钱 不错 这个是大家特别关心的问题 也是互联网公司非常重视的一个问题 因为涉及到自己的成本问题 作为APP开发人员 站在产品经理的角度来给大家
  • windows 2008 32位IIS 服务器转到64位后的各种错误,以及解决方法

    之前在32位IIS服务器上没有问题 发布到64位出现各种错误 请检查以下几项 因各系统不一样 有则检查 无则跳过 重点第4点 1 先安装IIS 后安装 net 4 0环境 否则要重新注册iis windir Microsoft NET Fr
  • 机器学习可视化:模型评估和参数调优

    本篇文章详细阐述机器学习模型评估和参数调优 将主要围绕两个问题来阐述 知其所以然 当你选择的一个机器学习模型运行时 你要知道它是如何工作的 青出于蓝 更进一步 你得知道如何让此机器学习模型工作的更优 模型评估的方法 一般情况来说 F1评分或
  • 第四届蓝桥杯省赛JavaB组第六题三部排序

    标题 三部排序 一般的排序有许多经典算法 如快速排序 希尔排序等 但实际应用时 经常会或多或少有一些特殊的要求 我们没必要套用那些经典算法 可以根据实际情况建立更好的解法 比如 对一个整型数组中的数字进行分类排序 使得负数都靠左端 正数都靠
  • 在阿里云上运行hadoop遇到的50070,9000无法访问问题

    问题 我在阿里云上运行namenode和腾讯云上运行datanode 在hadooop配置完之后 运行hdfs 发现没有namenode 然后查看namenode的日志 日志显示50070端口被占用 9000端口拒绝服务 但是通过natst
  • vue - 实现页面全屏文字水印效果,类似 word 插入的自定义水印(支持单页或整个项目全部页面 “选择性“ 插入,可自定义水印文字、大小样式等,也能动态设置文字)和页面一同渲染,无任何卡顿示例源码

    效果图 代码干净简洁 示例源码注释详细 无任何乱七八糟的代码 本文实现了 单页或整个项目所有页面的全屏水印效果 支持自定义水印文字 可 动态 设置文字内容 你只需要复制本文提供的封装方法 直接在页面中或 App vue 中引入即可生效 只需
  • vue3+element-plus实现表格多选功能(可以清除选项或分页保留选项)

    如图所示 在实际开发中 数据量大的表格基本都添加上了分页功能 每个页面请求的数据回交换更新 第一页的选中效果在跳转至第二页后 如果没有做相关处理 选中项会被清空 具体解决方法如下 在需要处理的表格标签中加上 row key getRowKe
  • 第五章-CSRF漏洞

    第五章 CSRF漏洞 第一节 CSRF原理介绍 1 1 CSRF漏洞定义 CSRF Cross site request forery 跨站请求伪造 也被称为One Click Attack或者Session Riding 通常缩写为CSR
  • k8s组件理解

    一 k8s组件交互关系由下图可大致体现 二 k8s master组件理解 1 kube apiserver组件 kube apiserver Kubernetes kubernets API server 提供了k8s各类资源对象的增删改查
  • EasyTalking微博系统

    EasyTalking微博系统 摘要 随着互联网的迅猛发展 人们的日常生活 学习工作已经离不开网络 人们的生活和工作在未来的生活中将越来越依赖于计算机网络技术的发展 越来越网络化 电子化 虚拟化 便捷化 Internet目前的应用历程和发展