0

0

Javaweb如何搭建完整的个人博客系统?

WBOY

WBOY

发布时间:2023-04-21 21:55:07

|

1550人浏览过

|

来源于亿速云

转载

项目的基本流程

1.准备工作

pom.xml中引入的依赖包


    
        org.thymeleaf
        thymeleaf
        3.0.12.RELEASE
    

    
    
        javax.servlet
        javax.servlet-api
        3.1.0
        
        provided
    

    
        mysql
        mysql-connector-java
        5.1.49
    
    
	
    
        com.fasterxml.jackson.core
        jackson-databind
        2.12.3
    
    
    
    
        junit
        junit
        4.13.1
    

引入Jackson依赖是为了进行序列化、反序列化的操作
作用:使数据和对象之间可以相互转换,保证数据的完整性

Jackson是一个Java用来处理JSON格式数据的类库,性能非常好,经常被用来JSON序列化(将对象转换为JSON字符串)和反序列化(将JSON字符串转换为指定的数据类型)

序列化和反序列化操作:

public class WebUtil {

    //判断是否登录,通过请求对象获取session,如果session存在且登录时
    // 保存的键为user,值是用户对象,这个数据存在,就表示已登录
    //返回user:已登录就返回session中保存的用户,未登录返回null
    public static User checkLogin(HttpServletRequest req){
        User user = null;
        //如果从tomcat保存的session的map数据结构中,获取session,false表示获取不到,返回null
        HttpSession session = req.getSession(false);
        if(session!=null){
            user = (User)session.getAttribute("user");
        }
        return user;
    }

    //这个对象可以使用单例
    private static ObjectMapper M = new ObjectMapper();

    //反序列化:转换一个输入流中包含的json字符串为一个java对象
    //使用泛型:传一个什么类型给我,就返回一个该类型的对象
    public static  T read(InputStream is,Class clazz){
        try {
            return M.readValue(is,clazz);
        } catch (IOException e) {
            throw new RuntimeException("json反序列化出错",e);
        }
    }

    //序列化:将一个任意类型的java对象,转换为一个json字符串
    public static String write(Object o){
        try {
            return M.writeValueAsString(o);
        } catch (JsonProcessingException e) {
            throw new RuntimeException("json序列化出错",e);
        }
    }

2.数据库设计

1.创建所需表:

立即学习Java免费学习笔记(深入)”;

  • user(用户表)

  • acticle(文章表)

2.设计与之对应的数据库实体类:

Javaweb如何实现完整个人博客系统流程

3.数据库连接工具:

//数据库工具类:提供获取数据库连接,释放资源的统一代码
public class DBUtil {
    //静态变量,是类加载的时候初始化,只执行一次
    private static MysqlDataSource ds;
    //一个程序,连接一个数据库,只需要一个连接池,其中保存了多个数据库连接对象
    //1.获取连接池,内部使用,不开放
    private static DataSource getDataSource(){
        //ds类加载的时候,初始化为null,方法使用的时候,每次都判断一下
        if(ds==null){//判断为空,就创建及初始化属性
            ds=new MysqlDataSource();
            ds.setURL("jdbc:mysql://127.0.0.1:3306/blog");
            ds.setUser("root");
            ds.setPassword("010124124");
            ds.setUseSSL(false);//不安全连接,如果不设置,也不影响,只是有警告
            ds.setCharacterEncoding("UTF-8");
        }
        return ds;
    }

    //2.获取数据库连接对象:开放给外部的jdbc代码使用
    public static Connection getConnection(){
        try {
            return getDataSource().getConnection();
        } catch (SQLException e) {
            throw new RuntimeException("获取数据库连接出错,可能是url,账号密码写错了",e);
        }
    }
    
    //3.释放资源
    //查询操作需要释放三个资源,更新操作(插入,修改,删除)只需要释放前两个资源
    public static void close(Connection c, Statement s, ResultSet r){
        try {
            if(r!=null) r.close();
            if(s!=null) s.close();
            if(c!=null) c.close();
        } catch (SQLException e) {
            throw new RuntimeException("释放数据库资源出错",e);
        }
    }

    //提供更新操作方便的释放资源功能
    public static void close(Connection c, Statement s){
        close(c,s,null);
    }

    public static void main(String[] args) {
        System.out.println(getConnection());
    }
}

4.用户表和文章表的CRUD操作(Dao类):

乐彼多用户商城系统LBMall(.net)
乐彼多用户商城系统LBMall(.net)

乐彼多用户商城系统,采用ASP.NET分层技术和AJAX技术,运营于高速稳定的微软.NET+MSSQL 2005平台;完全具备搭建超大型网络购物多用户网上商城的整体技术框架和应用层次LBMall 秉承乐彼软件优秀品质,后台人性化设计,管理窗口识别客户端分辨率自动调整,独立配置的菜单操作锁,使管理操作简单便捷。待办事项1、新订单、支付、付款、短信提醒2、每5分钟自动读取3、新事项声音提醒 店铺管理1

下载

Javaweb如何实现完整个人博客系统流程

3.准备前端页面

1.把之前写好的前端静态页面部署到webapp目录下

2.封装ajax:

在前后端交互中我们需要用到ajax进行数据交互
把之前封装好的ajax函数拷贝过来,放到一个单独的js文件中,方便后续使用

function ajax(args){//var ajax = function(){}
    let xhr = new XMLHttpRequest();
    // 设置回调函数
    xhr.onreadystatechange = function(){
        // 4: 客户端接收到响应后回调
        if(xhr.readyState == 4){
            // 回调函数可能需要使用响应的内容,作为传入参数
            args.callback(xhr.status, xhr.responseText);
        }
    }
    xhr.open(args.method, args.url);
    //如果args中,contentType属性有内容,就设置Content-Type请求头
    if(args.contentType){//js中,if判断,除了判断boolean值,还可以判断字符串,对象等,有值就为true
        xhr.setRequestHeader("Content-Type", args.contentType);
    }
    //如果args中,设置了body请求正文,调用send(body)
    if(args.body){
        xhr.send(args.body);
    }else{//如果没有设置,调用send()
        xhr.send();
    }
}

3.设计一个类:用于返回给前端ajax回调

//设计一个类,用于返回给前端ajax回调
public class JsonResult {
    private boolean ok;//表示执行一个操作是否成功
    private Object data;//操作成功,且是一个查询操作,需要返回一些数据给前端

	//同样省略getter、setter和toString
}

4.实现前端匹配的Servlet所需功能

Javaweb如何实现完整个人博客系统流程

5.项目难点

  • 实现用户不登录不允许访问主页内容并且重定向到登录页面,其次用户不登录的情况下访问某个接口也是非法的,也要重定向到登录页面

  • 文章发布后要将新的一篇文章插入到数据库中,查看全文要将markdown格式的数据转为HTML

  • 登录成功也要创建session并保存用户信息以供后面使用

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

419

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

535

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

311

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

77

2025.09.10

ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

159

2023.06.14

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

160

2023.08.31

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

117

2023.11.15

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

234

2024.09.24

Golang 网络安全与加密实战
Golang 网络安全与加密实战

本专题系统讲解 Golang 在网络安全与加密技术中的应用,包括对称加密与非对称加密(AES、RSA)、哈希与数字签名、JWT身份认证、SSL/TLS 安全通信、常见网络攻击防范(如SQL注入、XSS、CSRF)及其防护措施。通过实战案例,帮助学习者掌握 如何使用 Go 语言保障网络通信的安全性,保护用户数据与隐私。

2

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 5万人学习

Django 教程
Django 教程

共28课时 | 3.6万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号