ssm+maven搭建及扩展修改(四.前后端分离-下篇)

接下来就是真正的前后端分离,激动不!!!

前后端分离-上篇,我想大家也有疑问,ajax请求的url为啥要带.action,而不是纯访问链接???这就是没分离的缺点,主要在springDispatcherServlet拦截请求链接的原因,web.xml里配置的是<url-pattern>*.action</url-pattern>,所以只有带.action的链接才被捕捉到进而访问后台controller层。前后端分离后就改为<url-pattern>/</url-pattern>,因为页面及静态文件在另一个工程里访问路径不会受springDispatcherServlet配置影响都可以访问。

这里,我将用vue+ivew+nginx前端技术搭配Tomcat启动后台服务做个简单展示。简单介绍下,前端分离后,当然可以不用架构只是纯html+jquery+css去写,页面代码量会很大繁琐,不易后期维护,何必呢,就是搞大的。普及下,目前有三种vue,angular,react三种架构,从易到难,react最难上手,当然react支持ie8很吊

一.vue搭建

参照文章vue3.0搭建

这里前端往后台发送请求不用jquery的ajax,采用搭配vue的axios,需要下载插件库。

如果按我的步奏是有淘宝镜像的就用cnpm下载会快很多,没有的话用npm

1.cnpm install --save axios

2.cnpm install --save vue-axios

下载好后,找到main.js

添加代码

import axios from 'axios'
import VueAxios from 'vue-axios'

Vue.use(VueAxios,axios);

然后,npm run serve,启动项目

二.修改vue页面

首先在ownpage根目录里package.json平级添加文件vue.config.js,这是防止跨域问题。

const path = require('path');
const debug = process.env.NODE_ENV !== 'production';

function resolve (dir) {
   return path.join(__dirname,dir)
}
module.exports = {
    baseUrl: '/', // 根域上下文目录
    outputDir: 'dist', // 构建输出目录
    assetsDir: 'assets', // 静态资源目录 (js, css, img, fonts)
    lintOnSave: false, // 是否开启eslint保存检测,有效值:ture | false | 'error'
    runtimeCompiler: true, // 运行时版本是否需要编译
    transpileDependencies: [], // 默认babel-loader忽略mode_modules,这里可增加例外的依赖包名
    productionSourceMap: true, // 是否在构建生产包时生成 sourceMap 文件,false将提高构建速度
    configureWebpack: config => { // webpack配置,值位对象时会合并配置,为方法时会改写配置
        if (debug) { // 开发环境配置
            config.devtool = 'cheap-module-eval-source-map';
            config.resolve = {
           		extensions: ['.js', '.vue', '.json',".css"],
            	alias: {
              		'vue$': 'vue/dist/vue.esm.js',
              		'@': resolve('src'),
            	}
        	}
        } else { // 生产环境配置
        	config.devtool = 'cheap-module-eval-source-map';
            config.resolve = {
           		extensions: ['.js', '.vue', '.json',".css"],
            	alias: {
              		'vue$': 'vue/dist/vue.esm.js',
              		'@': resolve('src'),
            	}
        	}
        }
        // Object.assign(config, { // 开发生产共同配置
        //     resolve: {
        //         alias: {
        //             '@': path.resolve(__dirname, './src'),
        //             '@c': path.resolve(__dirname, './src/components'),
        //             'vue$': 'vue/dist/vue.esm.js'
        //         }
        //     }
        // })
    },
    chainWebpack: config => { // webpack链接API,用于生成和修改webapck配置,
        if (debug) {
            config.resolve.alias
            .set('@$', resolve('src'))
            .set('assets',resolve('src/assets'))
            .set('components',resolve('src/components'))
            .set('layout',resolve('src/layout'))
            .set('base',resolve('src/base'))
            .set('static',resolve('src/static'))
        } else {
            // 生产开发配置
            config.resolve.alias
            .set('@$', resolve('src'))
            .set('assets',resolve('src/assets'))
            .set('components',resolve('src/components'))
            .set('layout',resolve('src/layout'))
            .set('base',resolve('src/base'))
            .set('static',resolve('src/static'))
        }
    },
    parallel: require('os').cpus().length > 1, // 构建时开启多进程处理babel编译
    pluginOptions: { // 第三方插件配置
    },
    pwa: { // 单页插件相关配置 https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa
    },
    devServer: {
        open: true,
        host: 'localhost',
        port: 8080,
        https: false,
        hotOnly: false,
        proxy: { // 配置跨域
            '/ownkua': {
          //要访问的跨域的api的域名
                target: 'http://localhost:8099/',
                ws: true,
                changOrigin: true,
                pathRewrite: {
                    '^/ownkua': ''
                }
            }
        },
        before: app => { }
    }
}

下一步,路劲:./views/Home.vue

修改:

<template>
  <div>
    <span v-for="value,key,index in persons" style="font-size:36px;font-weigth: 600;">{{value.name}}</span>
    <button @click="getValue" style="height:30px;width:60px">点击</button>
  </div>
</template>

<script>
export default {
  name: 'home',
  data(){
    return{
      persons:[]
    }
  },
  methods:{
    getValue(){
      var _that = this;
      this.axios({
        method:'post',
        url:'/ownkua/own/personController/showPerson2',
        data:{
          id:1
        }
      }).then(function(response) {
        _that.persons = response.data;
      }).catch(function (error) {
        console.log(error);
      });
    }
  }
}
</script>

好了,重新启动 npm run serve ,这是为了读取新加的vue.config.js配置。

下一步,修改后台文件web.xml


<servlet-mapping>
	<servlet-name>springDispatcherServlet</servlet-name>
	<url-pattern>*.action</url-pattern>
</servlet-mapping>

修改为

<servlet-mapping>
	<servlet-name>springDispatcherServlet</servlet-name>
	<url-pattern>/</url-pattern>
</servlet-mapping>

重启后台服务!!!!

查看页面(http://localhost:8080/),默认都是8080端口,点击按钮:

完美,前后端分离完成!!!谢谢!!!

后面,完善后台架构,深入学习优化,敬请期待!!!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴回答您的问题!Java项目员工管理系统是一个非常常见的实践项目。它通常涉及到前后端分离的架构,使用JavaEE作为后端框架,Vue作为前端框架,SSM作为整个项目的技术栈,MySQL作为数据库,同时使用Maven进行项目构建和依赖管理,Axios用于前后端数据交互,HTML用于构建前端页面。 以下是一个简单的步骤指南,以帮助您开始这个项目: 1. 确定项目需求:明确系统所需的功能和特性,例如员工信息的增删改查、权限管理等。 2. 创建数据库:使用MySQL或其他数据库管理系统创建一个数据库,定义员工表和其他相关表。 3. 后端开发: - 使用JavaEE作为后端框架,搭建项目结构。 - 使用SSM框架(Spring、SpringMVC、MyBatis)进行后端开发。配置数据源、连接数据库,并编写DAO层接口和Mapper文件。 - 实现业务逻辑层和控制层,编写接口和请求处理方法。 4. 前端开发: - 使用Vue作为前端框架,搭建项目结构。 - 使用Axios进行前后端数据交互,发送HTTP请求。 - 使用HTML和CSS构建前端页面,实现员工信息的展示、增删改查等功能。 5. 前后端联调: - 后端提供接口,在前端使用Axios发送请求,获取后端数据。 - 前端通过Ajax获取数据,并进行展示和交互。 6. 项目打包部署: - 使用Maven进行项目构建和依赖管理。配置pom.xml文件,添加所需的依赖。 - 部署后端项目到服务器,配置数据库连接等相关配置。 - 将前端代码打包为静态文件,并部署到Web服务器中。 这只是一个简单的指南,实际开发过程中还需要考虑更多的细节和问题。希望以上信息对您有所帮助!如有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值