热门开源Web开发框架推荐


JFinal

开源许可证: Apache-2.0

项目作者: JFinal

项目地址: https://gitee.com/jfinal/jfinal

推荐原因: JFinal 是一款基于 Java 语言的极速 WEB + ORM 框架,拥有 Java 语言优势的同时,拥有 Ruby、Python 等动态语言的开发效率。

主要编程语言: Java

项目示例:

1.控制器(支持 Enjoy、JSP、Velocity、JSON 等等以及自定义视图渲染)


@Before(BlogInterceptor.class)

public class BlogController extends Controller {



    @Inject

    BlogService service;



    public void index() {

        set("blogPage", service.paginate(getParaToInt(0, 1), 10));

        render("blog.html");

    }



    public void add() {

    }



    @Before(BlogValidator.class)

    public void save() {

        getModel(Blog.class).save();

        redirect("/blog");

    }



    public void edit() {

        set("blog", service.findById(getParaToInt()));

    }



    @Before(BlogValidator.class)

    public void update() {

        getModel(Blog.class).update();

        redirect("/blog");

    }



    public void delete() {

        service.deleteById(getParaToInt());

        redirect("/blog");

    }

}

2.Service所有业务与sql全部放在Service层。


public class BlogService {



    private Blog dao = new Blog().dao();

    

    public Page<Blog> paginate(int pageNumber, int pageSize) {

        return dao.paginate(pageNumber, pageSize, "select *", "from blog order by id asc");

    }

    

    public Blog findById(int id) {

        return dao.findById(id);

    }

    

    public void deleteById(int id) {

        dao.deleteById(id);

    }

}

3.Model(无xml、无annotaion、无attribute)


public class Blog extends Model<Blog> {

    

}

4.Validator(API引导式校验,比xml校验方便N倍,有代码检查不易出错)


public class BlogValidator extends Validator {

    protected void validate(Controller controller) {

        validateRequiredString("blog.title", "titleMsg", "请输入Blog标题!");

        validateRequiredString("blog.content", "contentMsg", "请输入Blog内容!");

    }



    protected void handleError(Controller controller) {

        controller.keepModel(Blog.class);

    }

}

5.拦截器(在此demo中仅为示例,本demo不需要此拦截器)


public class BlogInterceptor implements Interceptor {

    public void intercept(Invocation inv) {

        System.out.println("Before invoking " + inv.getActionKey());

        inv.invoke();

        System.out.println("After invoking " + inv.getActionKey());

    }

}

ymate-platform-v2

开源许可证: Apache-2.0

项目作者: 有理想的鱼

项目地址: https://gitee.com/suninformation/ymate-platform-v2

推荐原因: ymate-platform-v2 是一个简单、易用的轻量级 Java 应用开发框架

主要编程语言: Java

项目模块功能:

HServer

开源许可证: Apache-2.0

项目作者: HServer

项目地址: https://gitee.com/HServer/HServer

推荐原因: HServer 是一个开发灵活,轻量级,低入侵,高并发的新型 Web 开发框架。

主要编程语言: Java

项目原理及流程:

C++


drogon

开源许可证: MIT

项目作者: an-tao

项目地址: https://gitee.com/an-tao/drogon

推荐原因: 基于 C++14/17 的跨平台、高性能 HTTP Web 应用框架

主要编程语言: C++

操作案例:

1.创建一个HttpSimpleController对象。


/// The TestCtrl.h file

#pragma once

#include <drogon/HttpSimpleController.h>

using namespace drogon;

class TestCtrl:public drogon::HttpSimpleController<TestCtrl>

{

public:

    virtual void asyncHandleHttpRequest(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback) override;

    PATH_LIST_BEGIN

    PATH_ADD("/test",Get);

    PATH_LIST_END

};



/// The TestCtrl.cc file

#include "TestCtrl.h"

void TestCtrl::asyncHandleHttpRequest(const HttpRequestPtr& req,

                                      std::function<void (const HttpResponsePtr &)> &&callback)

{

    //write your application logic here

    auto resp = HttpResponse::newHttpResponse();

    resp->setBody("<p>Hello, world!</p>");

    resp->setExpiredTime(0);

    callback(resp);

}

2.代码都可以由 drogon_ctl命令创建后这样创建控制器:


/// The header file

#pragma once

#include <drogon/HttpSimpleController.h>

using namespace drogon;

class JsonCtrl : public drogon::HttpSimpleController<JsonCtrl>


# 总结:心得体会

既然选择这个行业,选择了做一个程序员,也就明白只有不断学习,积累实战经验才有资格往上走,拿高薪,为自己,为父母,为以后的家能有一定的经济保障。

学习时间都是自己挤出来的,短时间或许很难看到效果,一旦坚持下来了,必然会有所改变。不如好好想想自己为什么想进入这个行业,给自己内心一个答案。

面试大厂,最重要的就是夯实的基础,不然面试官随便一问你就凉了;其次会问一些技术原理,还会看你对知识掌握的广度,最重要的还是你的思路,这是面试官比较看重的。

最后,上面这些大厂面试真题都是非常好的学习资料,通过这些面试真题能够看看自己对技术知识掌握的大概情况,从而能够给自己定一个学习方向。包括上面分享到的学习指南,你都可以从学习指南里理顺学习路线,避免低效学习。

**大厂Java架构核心笔记(适合中高级程序员阅读):**

![](https://img-blog.csdnimg.cn/img_convert/e2ca591eeffa50ade95337d01d7b03e2.webp?x-oss-process=image/format,png)

会

既然选择这个行业,选择了做一个程序员,也就明白只有不断学习,积累实战经验才有资格往上走,拿高薪,为自己,为父母,为以后的家能有一定的经济保障。

学习时间都是自己挤出来的,短时间或许很难看到效果,一旦坚持下来了,必然会有所改变。不如好好想想自己为什么想进入这个行业,给自己内心一个答案。

面试大厂,最重要的就是夯实的基础,不然面试官随便一问你就凉了;其次会问一些技术原理,还会看你对知识掌握的广度,最重要的还是你的思路,这是面试官比较看重的。

最后,上面这些大厂面试真题都是非常好的学习资料,通过这些面试真题能够看看自己对技术知识掌握的大概情况,从而能够给自己定一个学习方向。包括上面分享到的学习指南,你都可以从学习指南里理顺学习路线,避免低效学习。

**大厂Java架构核心笔记(适合中高级程序员阅读):**

[外链图片转存中...(img-PBstcYrM-1721194049720)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值