使用Vue+JFinal框架搭建前后端分离系统

前后端分离作为Web开发的一种方式,现在应用越来越广泛。前端一般比较流行Vue.js框架,后端框架比较多,网上有很多Vue+SpringMVC前后端分离的demo,但是Vue+JFinal框架貌似没有搜到,本文基于Vue.js和JFinal框架,给出了搭建了一个前后端分离项目的简单例子。

第一步:maven搭建后端JFinal部分

1、用maven新建web项目,项目名vue-jfinal

2、添加JFinal框架和jetty容器等依赖

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.jfinal</groupId>
            <artifactId>jfinal</artifactId>
            <version>3.3</version>
        </dependency>
        <dependency>
            <groupId>com.jfinal</groupId>
            <artifactId>jetty-server</artifactId>
            <version>8.1.8</version>
            <scope>provided</scope>
        </dependency>

3、修改web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>
    <filter>
        <filter-name>jfinal</filter-name>
        <filter-class>com.jfinal.core.JFinalFilter</filter-class>
        <init-param>
            <param-name>configClass</param-name>
            <param-value>common.demoConfig</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>jfinal</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

4、在src/main/java中新建controller的Package添加demoController.java

package controller;

import com.jfinal.core.Controller;

public class demoController extends Controller {
    public void index() {
        //跨域请求设置
        getResponse().addHeader("Access-Control-Allow-Origin", "*");
        renderJson("{\"age\":25,\"name\":\"huiliuyi\"}");
    }
}

5、在src/main/java中新建common的Package添加demoConfig.java

package common;

import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.core.JFinal;
import com.jfinal.template.Engine;

import controller.demoController;

public class demoConfig extends JFinalConfig {

    @Override
    public void configConstant(Constants arg0) {
        arg0.setDevMode(true);
    }

    @Override
    public void configEngine(Engine arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void configHandler(Handlers arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void configInterceptor(Interceptors arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void configPlugin(Plugins arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void configRoute(Routes arg0) {
        arg0.add("/demo", demoController.class);
    }

    public static void main(String[] args) {
        JFinal.start("src/main/webapp", 8081, "/", 5);
    }
}

6、运行demoConfig.java文件,run as Java Applicaiton,如下图,则后端搭建完毕

在Eclipse Version: Oxygen.1 Release (4.7.1)中项目目录如下:

第二步:使用vue-cli搭建vue.js前端部分

1、安装vue-cli

npm install --global vue-cli

2、创建一个基于webpack模板的项目

vue init webpack vue-jfinal

接下来会有一些yes/no的选项,按下图设置

3、进入项目目录,安装vue-resource插件

cd vue-jfinalnpm install vue-resource

4、使用webstorm打开vue-jfinal,项目目录如下图,并设置Run/Debug Configuration

4、在main.js中添加vue-resource的引用

原文件

// The Vue build version to load with the `import` command// (runtime-only or standalone) has been set in webpack.base.conf with an alias.import Vue from ‘vue‘import App from ‘./App‘import router from ‘./router‘

Vue.config.productionTip = false

/* eslint-disable no-new */new Vue({  el: ‘#app‘,  router,  components: { App },  template: ‘<App/>‘})

添加后:

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from ‘vue‘
import App from ‘./App‘
import router from ‘./router‘
import VueResource from ‘vue-resource‘
Vue.use(VueResource)

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: ‘#app‘,
  router,
  components: { App },
  template: ‘<App/>‘
})

5、修改vue-jfinal项目中App.vue文件

原文件

<template>
  <div id="app">
    <img src="./assets/logo.png">
    <router-view/>
  </div>
</template>

<script>
export default {
  name: ‘App‘
}
</script>

<style>
#app {
  font-family: ‘Avenir‘, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

修改后:

<template>
  <div id="app">
    <img src="./assets/logo.png">
    <h1>服务端数据为:{{serverData}}</h1>
    <button v-on:click="getdata()">获得服务器端数据</button>
    <router-view/>
  </div>
</template>

<script>
export default {
  name: ‘App‘,
  data(){
    return {
      serverData:"页面数据"
    }
  },
  methods:{
    getdata(){
      this.$http.get(‘http://localhost:8081/demo‘).then(function(response){
        this.serverData=response.data
      })
    }
  }
}
</script>

<style>
#app {
  font-family: ‘Avenir‘, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

第三步:测试前后端分离

1、在webstorm中点击run按钮,浏览器中输入http://localhost:8080访问,出现下面界面则前端搭建成功

2、点击 获得后端数据按钮,出现下图则表示获得后端数据成功

第四步:将jfinal项目和vue项目放在同一个项目目录下,目录截图

git连接:https://github.com/Feynman61/vue-jfinal.git

总结:

前后端分离的开发模式现在已经非常普遍了,优点也很明了,就是将前后端开发人员的工作分离开,这样前后端开发人员就能专注于自己的工作,提高开发效率。

如果大家在实际操作中有什么问题,欢迎大家留言评论,我会第一时间回复大家。

原文地址:https://www.cnblogs.com/feynman61/p/8908976.html

时间: 2024-09-30 03:09:49

使用Vue+JFinal框架搭建前后端分离系统的相关文章

利用grunt-contrib-connect和grunt-connect-proxy搭建前后端分离的开发环境

前后端分离这个词一点都不新鲜,完全的前后端分离在岗位协作方面,前端不写任何后台,后台不写任何页面,双方通过接口传递数据完成软件的各个功能实现.此种情况下,前后端的项目都独立开发和独立部署,在开发期间有2个问题不可避免:第一是前端调用后台接口时的跨域问题(因为前后端分开部署):第二是前端脱离后台服务后无法独立运行.本文总结最近一个项目的工作经验,介绍利用grunt-contrib-connect和grunt-connect-proxy搭建前后端分离的开发环境的实践过程,希望能对你有所帮助. 注:

从零开始搭建前后端分离的NetCore(EF Core CodeFirst+Au)+Vue的项目框架之二autofac解耦

在 上一篇 中将项目的基本骨架搭起来能正常跑通,这一篇将讲到,如何通过autofac将DbContext和model进行解耦,只用添加model,而不用在DbContext中添加DbSet. 在这里就不详细讲autofac是干什么用的了,简单说下autofac. 1.autofac可替换net core自带的DI IOC,用来扩展. 2.autofac可提供Aop,具体实现在博客园有很多示例. 3.autofac的几个生命周期用法:InstancePerDependency 每次都创建一个对象

从零开始搭建前后端分离的NetCore2.2(EF Core CodeFirst+Autofac)+Vue的项目框架之七使用JWT生成Token(个人见解)

在 上一篇中讲到了在NetCore项目中如何进行全局的请求模型验证,只要在请求模型中加了验证特性,接口使用时只用将数据拿来使用,而不用去关系数据是否符合业务需求. 这篇中将讲些个人对于JWT的看法和使用,在网上也能找到很多相关资料和如何使用,基本都是直接嵌到  Startup 类中来单独使用.而博主是将jwt当做一个验证方法来使用.使用起来更加方便,并且在做验证时也更加的灵活. 1.什么是JWT? Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON

ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目

 一.前言 这几年前端的发展速度就像坐上了火箭,各种的框架一个接一个的出现,需要学习的东西越来越多,分工也越来越细,作为一个 .NET Web 程序猿,多了解了解行业的发展,让自己扩展出新的技能树,对自己的职业发展还是很有帮助的.毕竟,现在都快到9102年了,如果你还是只会 Web Form,或许还是能找到很多的工作机会,可是,这真的不再适应未来的发展了.如果你准备继续在 .NET 平台下进行开发,适时开始拥抱开源,拥抱 ASP.NET Core,即使,现在工作中可能用不到. 雪崩发生时,没有一

dotnet core webapi +vue 搭建前后端完全分离web架构

架构 服务端采用 dotnet core  webapi 前端采用: Vue + router +elementUI+axios 问题 使用前后端完全分离的架构,首先遇到的问题肯定是跨域访问.前后端可能不在同个server上,即使前后端处在同个server上,由于前后端完全分离, 前后端使用的端口号也可能是不一样的,所以必须解决跨域访问. 具体实现 服务端 服务端使用的dotnetcore +webapi架构,支持cors非常简单,只要引入Microsoft.AspNetCore.Cors 组件

dotnet core webapi +vue 搭建前后端完全分离web架构(二)

前言 最近几年前后端分离架构大行其道,而且各种框架也是层出不穷.本文通过dotnetcore +vue 来介绍 前后端分离架构实战. 涉及的技术栈 服务端技术 mysql 本项目使用mysql 作为持久化层 orm dapper 短小精悍,被称为orm中的瑞士军刀.作者之前使用EF 比较多,总感觉 EF 对一些复杂查询需要原生sql支持的不是那么好,EF 生成sql 不好控制,涉及对性能要求比较高的地方,优化起来不够理想.作者在最近的几个项目中接触到dapper,它对原生sql查询支持的相当给力

dotnet core webapi +vue 搭建前后端完全分离web架构(一)

摘要: 架构 服务端采用 dotnet core  webapi   前端采用: Vue + router +elementUI+axios            问题 使用前后端完全分离的架构,首先遇到的问题肯定是跨域访问. 架构 服务端采用 dotnet core  webapi 前端采用: Vue + router +elementUI+axios 问题 使用前后端完全分离的架构,首先遇到的问题肯定是跨域访问.前后端可能不在同个server上,即使前后端处在同个server上,由于前后端完

初识 vue —— 最简单的前后端交互示例

一.初识 vue 时的困惑 最近想学一门前端技术防身,看到博客园中写 vue 的多,那就 vue 吧.都说 vue 的官方教程写得好,所以我就从官方教程开始学习.官方教程说"Vue (读音 /vju?/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用."但是这个概念是个什么鬼?还是让人一头雾水嘛.而且我一开始也没有搞清楚 vue 的定位,只知道它是一个前端库,但是确实不知道它的优势是什么,还以为它是一个学会就能一劳永

vue+uwsgi+nginx部署前后端分离项目

一:vue+uwsgi+nginx部署 1.1:准备代码: # 路飞学城django代码 https://files.cnblogs.com/files/pyyu/luffy_boy.zip # vue代码 https://files.cnblogs.com/files/pyyu/07-luffy_project_01.zip 1.2:部署准备 1. 部署环境准备 ⑴ . 准备python3和虚拟环境解释器,python3,virtualenvwrapper. pip3 install -i h