基于SpringBoot+Vue的地方美食分享网站设计与实现

一、技术与工具

  • 开发语言:JAVA
  • 数据库:MySQL
  • 技术:SpringBoot + Vue
  • 开发工具:IDEA/Ecilpse、Navicat、Maven

二、系统展示

首页
注册页
管理员界面

三、摘要

        一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项目软件架构选择B/S模式和java技术,总体功能模块运用自顶向下的分层思想。再然后就是实现系统并进行代码编写实现功能。通过地方美食分享网站将会使地方美食分享各个方面的工作效率带来实质性的提升。

关键字:B/S模式;java技术;地方美食分享;软件架构

四、项目内容

        本项目在开发和设计过程中涉及到原理和技术有:B/S、java技术和MySQL数据库等等。开发步骤如下:

  • 绪论;剖析项目背景,说明研究的内容。
  • 开发技术;系统主要使用了java技术,b/s模式和myspl数据库,并对此做了介绍。
  • 系统分析;包罗了系统总体结构、对系统的性能、功能、流程图进行了分析。
  • 系统设计;对软件功能模块和数据库进行详细设计。
  • 系统总体设计;对系统管理员和用户的功能进行描述。
  • 对系统进行测试。

 五、代码展示

package com;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
@MapperScan(basePackages = {"com.dao"})
public class SpringbootSchemaApplication extends SpringBootServletInitializer{

	public static void main(String[] args) {
		SpringApplication.run(SpringbootSchemaApplication.class, args);
	}
	
	@Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder applicationBuilder) {
        return applicationBuilder.sources(SpringbootSchemaApplication.class);
    }
}

 

package com.interceptor;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.http.HttpStatus;

import com.annotation.IgnoreAuth;
import com.entity.EIException;
import com.entity.TokenEntity;
import com.service.TokenService;
import com.utils.R;

/**
 * 权限(Token)验证
 */
@Component
public class AuthorizationInterceptor implements HandlerInterceptor {

    public static final String LOGIN_TOKEN_KEY = "Token";

    @Autowired
    private TokenService tokenService;
    
	@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

		//支持跨域请求
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization");
        response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
	// 跨域时会首先发送一个OPTIONS请求,这里我们给OPTIONS请求直接返回正常状态
	if (request.getMethod().equals(RequestMethod.OPTIONS.name())) {
        	response.setStatus(HttpStatus.OK.value());
            return false;
        }
        
        IgnoreAuth annotation;
        if (handler instanceof HandlerMethod) {
            annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class);
        } else {
            return true;
        }

        //从header中获取token
        String token = request.getHeader(LOGIN_TOKEN_KEY);
        
        /**
         * 不需要验证权限的方法直接放过
         */
        if(annotation!=null) {
        	return true;
        }
        
        TokenEntity tokenEntity = null;
        if(StringUtils.isNotBlank(token)) {
        	tokenEntity = tokenService.getTokenEntity(token);
        }
        
        if(tokenEntity != null) {
        	request.getSession().setAttribute("userId", tokenEntity.getUserid());
        	request.getSession().setAttribute("role", tokenEntity.getRole());
        	request.getSession().setAttribute("tableName", tokenEntity.getTablename());
        	request.getSession().setAttribute("username", tokenEntity.getUsername());
        	return true;
        }
        
		PrintWriter writer = null;
		response.setCharacterEncoding("UTF-8");
		response.setContentType("application/json; charset=utf-8");
		try {
		    writer = response.getWriter();
		    writer.print(JSONObject.toJSONString(R.error(401, "请先登录")));
		} finally {
		    if(writer != null){
		        writer.close();
		    }
		}
//				throw new EIException("请先登录", 401);
		return false;
    }
}

六、总结

        通过完成该地方美食分享和撰写让我更加明白了软件开发过程中软件工程思想的重要性。在项目的前期由于对需求分析做的不够谨慎和明确,导致了后面在设计甚至编码时候造成了许多不必要的麻烦。由此在今后的学习和工作开发之中必须要牢牢把握住软件工程的设计思想和方法,这样可以进一步保证项目开发的健壮性和准确性。

  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于SpringBoot Vue地方特色美食分享系统的设计和实现是一个基于Web技术的应用,旨在提供用户和粉丝一种互动式的美食分享方式,让用户方便地了解当地美食,收集和分享地方特色美食信息。以下是该系统的设计及实现。 设计: 系统应该具备以下核心功能: 1. 首页:该页面应该列出所有已发布的地方特色美食信息。 2. 搜索页面:该页面应用于搜索特定地方或地区的美食信息。 3. 发布页面:该页面允许用户发布新地方美食信息,包括照片、地理位置、描述等内容。 4. 详情页面:该页面提供单一美食的详细信息,包括照片、介绍、菜谱以及其他相关信息。 5. 用户中心:该页面提供用户个人资料、发布的美食信息、收藏的美食信息等功能。 实现: 1. 后端系统:基于SpringBoot技术,通过使用MyBatis和MySQL存储数据,实现系统的数据存取和框架的管理工作。 2. 前端系统:基于Vue.js、Element-UI、Vuex等前端技术框架,实现前端页面的设计和程序逻辑的管理。 3. 数据库设计:在MySQL数据库中,设计多个表格用于存储美食信息、用户信息以及系统日志等需要的数据。 4. 服务器环境:通过使用Nginx作为Web服务器和运行环境,来实现对系统的高性能、高可用、高安全等多种保障。 总而言之,基于SpringBoot Vue地方特色美食分享系统是一个基于Web技术的应用,旨在提供用户和粉丝一种互动式的美食分享方式。该系统的核心功能包括首页、搜索、发布、详情和用户中心等页面。系统的实现需要通过后端网络框架、前端技术等多种因素的综合考虑,确保系统能够具备高性能、高可用、高安全等多种保障。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值