国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于Springboot的旅游網(wǎng)管理系統(tǒng)后臺(tái)

這篇具有很好參考價(jià)值的文章主要介紹了基于Springboot的旅游網(wǎng)管理系統(tǒng)后臺(tái)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一. ?? 研究背景及意義

旅游作為一種經(jīng)濟(jì)活動(dòng),已經(jīng)成為世界經(jīng)濟(jì)中不可或缺的一部分。旅游業(yè)的快速發(fā)展,使得旅游產(chǎn)品和服務(wù)的供應(yīng)和需求日益增加,其中旅游網(wǎng)站起著至關(guān)重要的作用。近年來(lái),隨著移動(dòng)互聯(lián)網(wǎng)的普及和技術(shù)的進(jìn)步,旅游網(wǎng)站不斷創(chuàng)新和發(fā)展,為旅游市場(chǎng)的發(fā)展貢獻(xiàn)了巨大的力量。

旅游網(wǎng)站的研究背景在于,通過(guò)對(duì)旅游網(wǎng)站的市場(chǎng)現(xiàn)狀、用戶需求和技術(shù)創(chuàng)新等方面進(jìn)行研究,以更好地了解旅游網(wǎng)站的發(fā)展趨勢(shì)和用戶特征,進(jìn)而為旅游網(wǎng)站的設(shè)計(jì)和優(yōu)化提供依據(jù),提升旅游網(wǎng)站的服務(wù)質(zhì)量和用戶體驗(yàn)。

旅游網(wǎng)站的研究意義在于,為旅游網(wǎng)站的設(shè)計(jì)和優(yōu)化提供了思路和方法,以滿足用戶多樣化的需求。同時(shí),可以幫助企業(yè)更好地把握市場(chǎng)的機(jī)遇和挑戰(zhàn),提升旅游產(chǎn)品和服務(wù)的質(zhì)量和效益。此外,隨著旅游業(yè)的不斷發(fā)展,旅游網(wǎng)站的研究也為旅游業(yè)的升級(jí)和轉(zhuǎn)型提供了有價(jià)值的參考和借鑒。綜上所述,旅游網(wǎng)站的研究具有十分重要和現(xiàn)實(shí)的意義。

二. ?? 技術(shù)棧系列及主要功能

Ⅰ. 技術(shù)棧

  • Springboot
  • SpringMVC
  • MySQL
  • Mybatis-Plus
  • SpringSecurity
  • Thymeleaf
  • AdminLTE2
  • lombok、ajax、logback

Ⅱ. 主要功能

本系統(tǒng)基于以上技術(shù)來(lái)實(shí)現(xiàn)一個(gè)完善的旅游網(wǎng)后臺(tái)管理系統(tǒng),具有以下主要功能:

  • 管理員管理
  • 角色管理
  • 權(quán)限管理
  • 認(rèn)證和授權(quán)
  • 產(chǎn)品類型管理
  • 旅游產(chǎn)品管理

三. ?? 項(xiàng)目搭建

Ⅰ. 后端模塊

該項(xiàng)目和平常項(xiàng)目差不多,后端模塊按平常Springboot項(xiàng)目結(jié)構(gòu)搭建即可,如下:
基于Springboot的旅游網(wǎng)管理系統(tǒng)后臺(tái)

Ⅱ. 前端模塊

在項(xiàng)目中,我們使用AdminLTE框架作為管理員端頁(yè)面,使用自己編寫的網(wǎng)頁(yè)作為用戶端頁(yè)面。

tips:
AdminLTE是一款建立在bootstrap和jquery之上的開源的模板主題工具,它提供了一系列響應(yīng)的、 可重復(fù)使用的組件,并內(nèi)置了多個(gè)模板頁(yè)面;同時(shí)自適應(yīng)多種屏幕分辨率,兼容PC和移動(dòng)端。通過(guò)AdminLTE,我們可以快速的創(chuàng)建一個(gè)響應(yīng)式的Html5網(wǎng)站。AdminLTE框架在網(wǎng)頁(yè)架構(gòu)與設(shè)計(jì)上,有很大的輔助作用,尤其是前端架構(gòu)設(shè)計(jì)師,用好AdminLTE 不但美觀,而且可以免去寫很大CSS與JS的工作量。

使用AdminLTE非常簡(jiǎn)單,只需要根據(jù)需求將需要的組件復(fù)制到我們的頁(yè)面中即可。
基于Springboot的旅游網(wǎng)管理系統(tǒng)后臺(tái)

四. ?? 主要實(shí)現(xiàn)過(guò)程

主要挑幾個(gè)核心部分來(lái)展開描述:

Ⅰ. 認(rèn)證和授權(quán)

1. SpringSecurity配置類

眾所周知,SpringSecurity遵循RBAC原則,即角色,權(quán)限,用戶表,在我們添加完這個(gè)表的實(shí)體類以及一些常規(guī)CRUD操作后,就可以開始編寫系統(tǒng)的認(rèn)證和授權(quán)了。
如何來(lái)編寫一個(gè)權(quán)限表?詳情請(qǐng)看獅子前面的文章:點(diǎn)擊

import com.lion.security.handler.MyAccessDeniedHandler;
import com.lion.security.handler.MyLoginFailureHandler;
import com.lion.security.handler.MyLoginSuccessHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)     // 開啟注解-鑒權(quán)配置
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    // Spring Security配置
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.formLogin()
                .loginPage("/backstage/admin_login")         //自定義表單登錄
                .usernameParameter("username")          //用戶名
                .passwordParameter("password")          //密碼
                .loginProcessingUrl("/backstage/admin/login")   //登錄提交路徑,提交后執(zhí)行認(rèn)證邏輯
                .successHandler(new MyLoginSuccessHandler())    //登錄成功跳轉(zhuǎn)路徑
                .failureHandler(new MyLoginFailureHandler());    //登錄失敗跳轉(zhuǎn)路徑
//          權(quán)限攔截配置
        http.authorizeRequests()
                .antMatchers("/backstage/admin/login").permitAll()      //登錄不需要認(rèn)證
                .antMatchers("/backstage/admin_fail").permitAll()       //登錄失敗不需要認(rèn)證
                .antMatchers("/backstage/admin_login").permitAll()      //登錄頁(yè)不需要認(rèn)證
                .antMatchers("/**/*.css","/**/*.js").permitAll()        //靜態(tài)資源放行
                .antMatchers("/backstage/**").authenticated();          //剩下的都要認(rèn)證

//        退出登錄配置
        http.logout()
                .logoutUrl("/backstage/admin/logout")       //退出登錄的路徑
                .logoutSuccessUrl("/backstage/admin_login") //退出登錄成功后跳轉(zhuǎn)的頁(yè)面
                .clearAuthentication(true)                  //退出成功后清除認(rèn)證信息
                .invalidateHttpSession(true);                //退出成功后清除session
//            異常處理
        http.exceptionHandling()
                .accessDeniedHandler(new MyAccessDeniedHandler());  //權(quán)限不足處理器

//        關(guān)閉csrf防護(hù)
        http.csrf().disable();
//        開啟跨域訪問(wèn)
        http.cors();

    }
//    密碼加密器
    @Bean
    public BCryptPasswordEncoder bCryptPasswordEncoder(){
        return new BCryptPasswordEncoder();
    }
}

security的配置類寫法很類似,咱們分塊來(lái)實(shí)現(xiàn):

自定義表單登錄塊——>權(quán)限攔截配置——>退出登錄配置——>異常處理——>關(guān)閉csrf防護(hù)——> 開啟跨域訪問(wèn)——>密碼加密器
根據(jù)自己需要來(lái)編寫相應(yīng)模塊,詳細(xì)目錄如下:
基于Springboot的旅游網(wǎng)管理系統(tǒng)后臺(tái)

2. 自定義邏輯認(rèn)證

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.lion.domain.Admin;
import com.lion.domain.Permission;
import com.lion.mapper.AdminMapper;
import com.lion.service.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class MyUserDetailService implements UserDetailsService {
    @Autowired
    private AdminService adminService;


    // 自定義認(rèn)證邏輯
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        // 1.認(rèn)證
        Admin admin = adminService.findByAdminName(username);
        if (admin == null) {
            throw new UsernameNotFoundException("用戶不存在");
        }
//        admin的狀態(tài)是不可登錄則報(bào)錯(cuò)(自定義)
        if (!admin.isStatus()){
            throw new UsernameNotFoundException("用戶不可用");
        }


        // 2.授權(quán)
        List<Permission> permissions = adminService.findAllPermission(username);
        List<GrantedAuthority> grantedAuthorities = new ArrayList<>();
        for (Permission permission : permissions) {
            grantedAuthorities.add(new SimpleGrantedAuthority(permission.getPermissionDesc()));
        }


        // 3.封裝為UserDetails對(duì)象
        UserDetails userDetails = User.withUsername(admin.getUsername())
                .password(admin.getPassword())
                .authorities(grantedAuthorities)
                .build();


        // 4.返回封裝好的UserDetails對(duì)象
        return userDetails;
    }
}

Ⅱ. 富文本編輯器——wangEditor

在項(xiàng)目中,我們使用中國(guó)人開發(fā)的一個(gè)富文本編輯器——wangEditor,官網(wǎng)地
址:https://www.wangeditor.com/
使用步驟如下:

  1. 在前端頁(yè)面中引入 wangEditor.js
  2. 在頁(yè)面中加入 wangEditor 插件
  3. 編寫實(shí)體類返回值

wangEditor要求上傳圖片的返回值必須按照它的要求,所以我們創(chuàng)建一個(gè)實(shí)體類,用于返回上傳的結(jié)果。

import lombok.Data;

@Data
public class WangEditorResult {
    private int errno;
    private String[] data;
}

  1. 編寫上傳控制器,接收富文本編輯器上傳的圖片
@RequestMapping(value = "/upload")
    @ResponseBody
    public WangEditorResult upload(HttpServletRequest request, MultipartFile file) throws Exception {
        // 創(chuàng)建文件夾,存放上傳文件。
        //1.設(shè)置上傳文件夾的真實(shí)路徑
        String realPath = ResourceUtils.getURL("classpath:").getPath()+"/static/upload/";;
        //2.判斷該文件夾是否存在,如果不存在,新建文件夾
        File dir = new File(realPath);
        if (!dir.exists()){
            dir.mkdirs();
        }
        // 拿到上傳文件名
        String filename = file.getOriginalFilename();
        filename = UUID.randomUUID()+filename;
        // 創(chuàng)建空文件
        File newFile = new File(dir, filename);
        // 將上傳的文件寫到空文件中
        file.transferTo(newFile);


        WangEditorResult wangEditorResult = new WangEditorResult();
        String[] data = {"/upload/"+filename};
        wangEditorResult.setErrno(0);
        wangEditorResult.setData(data);
        return wangEditorResult;
    }
  1. 在yml中配置上傳文件的大小
# 上傳文件
  servlet:
    multipart:
      max-file-size: 10MB # 最大單個(gè)文件
      max-request-size: 10MB # 一次請(qǐng)求最大上傳

這樣,一個(gè)編輯器就完成了?。?!
基于Springboot的旅游網(wǎng)管理系統(tǒng)后臺(tái)

Ⅲ. 編寫AOP實(shí)現(xiàn)日志記錄功能

1. 編寫logback.xml文件

在后臺(tái)代碼運(yùn)行的過(guò)程中,我們要對(duì)每一次操作進(jìn)行日志記錄,一方面通過(guò)日志可以發(fā)現(xiàn)代碼的缺陷,另一方面可以追蹤內(nèi)部人員的操作記錄。
SpringBoot默認(rèn)使用Logback組件作為日志管理,首先在 /resources 下添加Logback配置文件 logback.xml

在這里插入代碼片<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <!--定義日志文件的存儲(chǔ)地址-->
    <property name="LOG_HOME" value="${catalina.base}/logs/"/>


    <!-- 控制臺(tái)輸出 -->
    <appender name="Stdout" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 日志輸出編碼 -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級(jí)別從左顯示5個(gè)字符寬度%msg:日志消息,%n是換行符-->
            <pattern>%d{MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            </pattern>
        </layout>
    </appender>


    <!-- 按照每天生成日志文件 -->
    <appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件輸出的文件名-->
            <FileNamePattern>${LOG_HOME}/server.%d{yy99-MM-dd}.log</FileNamePattern>
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <!--格式化輸出:%d表示時(shí)間,%thread表示線程名,%-5level:級(jí)別從左顯示5個(gè)字符寬度%msg:日志消息,%n是換行符-->
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            </pattern>
        </layout>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>


    <!-- 日志輸出級(jí)別 -->
    <root level="info">
        <appender-ref ref="Stdout"/>
        <appender-ref ref="RollingFile"/>
    </root>
</configuration>

寫法很固定,理解即可?。?!

2. 編寫日志記錄實(shí)體類

import lombok.Data;
import java.util.Date;

@Data
public class Log {
    private String url; // 訪問(wèn)的路徑
    private Date visitTime; // 訪問(wèn)時(shí)間
    private String username; // 訪問(wèn)者
    private String ip; // 訪問(wèn)ip
    private int executionTime; // 訪問(wèn)時(shí)長(zhǎng)
    private String exceptionMessage; // 異常信息
}

3. 編寫日志AOP類

import com.lion.bean.Log;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;

@Component
@Aspect
public class LogAop {
    @Autowired
    private HttpServletRequest request;
    @Autowired
    private final static Logger logger = LoggerFactory.getLogger(LogAop.class);


    /**
     * 切點(diǎn),以backstage的所有controller方法作為切點(diǎn)
     */
    @Pointcut("execution(* com.lion.controller.backstage.*.*(..))")
    public void pointCut(){}

    /**
     * 前置通知
     * @param joinPoint
     */
    @Before("pointCut()")
    public void doBefore(JoinPoint joinPoint) {
        // 記錄訪問(wèn)時(shí)間
        Date date = new Date();
        request.setAttribute("visitTime",date);
    }

    /**
     * 后置通知
     */
    @After("pointCut()")
    public void doAfter(){
        Log log = new Log();

        Date visitTime = (Date) request.getAttribute("visitTime"); // 訪問(wèn)時(shí)間
        Date now = new Date();
        int executionTime = (int)(now.getTime() - visitTime.getTime()); // 訪問(wèn)時(shí)長(zhǎng)
        String ip = request.getRemoteAddr(); // 訪問(wèn)ip
        String url = request.getRequestURI();// 訪問(wèn)路徑
        // 拿到security中的User對(duì)象
        Object user = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        if (user instanceof User){
            String username = ((User)user).getUsername();
            log.setUsername(username);
        }
        log.setExecutionTime(executionTime);
        log.setUrl(url);
        log.setIp(ip);
        log.setVisitTime(visitTime);


        logger.info(log.toString());
    }

    /**
     * 異常通知
     * @param ex
     */
    @AfterThrowing(pointcut = "pointCut()",throwing = "ex")
    public void afterThrowing(Throwable ex){
        Log log = new Log();


        Date visitTime = (Date) request.getAttribute("visitTime"); // 訪問(wèn)時(shí)間
        Date now = new Date();
        int executionTime = (int) (now.getTime() - visitTime.getTime()); // 訪問(wèn)時(shí)長(zhǎng)
        String ip = request.getRemoteAddr(); // 訪問(wèn)ip
        String url = request.getRequestURI(); // 訪問(wèn)路徑
        // 拿到Security中的User對(duì)象
        Object user = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        if (user instanceof User){
            String username = ((User) user).getUsername();
            log.setUsername(username);
        }
        log.setExecutionTime(executionTime);
        log.setUrl(url);
        log.setIp(ip);
        log.setVisitTime(visitTime);


        // 異常信息
        String exMessage = ex.getMessage();
        log.setExceptionMessage(exMessage);

        logger.info(log.toString());
    }
}

以Controller為切點(diǎn),編寫前置通知,后置通知和異常通知,記錄用戶每一次操作的具體內(nèi)容。

五. ?? 實(shí)現(xiàn)效果

基于Springboot的旅游網(wǎng)管理系統(tǒng)后臺(tái)
基于Springboot的旅游網(wǎng)管理系統(tǒng)后臺(tái)

基于Springboot的旅游網(wǎng)管理系統(tǒng)后臺(tái)
基于Springboot的旅游網(wǎng)管理系統(tǒng)后臺(tái)
基于Springboot的旅游網(wǎng)管理系統(tǒng)后臺(tái)
基于Springboot的旅游網(wǎng)管理系統(tǒng)后臺(tái)
基于Springboot的旅游網(wǎng)管理系統(tǒng)后臺(tái)
基于Springboot的旅游網(wǎng)管理系統(tǒng)后臺(tái)
基于Springboot的旅游網(wǎng)管理系統(tǒng)后臺(tái)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-440021.html

到了這里,關(guān)于基于Springboot的旅游網(wǎng)管理系統(tǒng)后臺(tái)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【python】python旅游網(wǎng)數(shù)據(jù)抓取分析(源碼+論文)【獨(dú)一無(wú)二】

    【python】python旅游網(wǎng)數(shù)據(jù)抓取分析(源碼+論文)【獨(dú)一無(wú)二】

    ??博__主??:米碼收割機(jī) ??技__能??:C++/Python語(yǔ)言 ??公眾號(hào)??:測(cè)試開發(fā)自動(dòng)化【獲取源碼+商業(yè)合作】 ??榮__譽(yù)??:阿里云博客專家博主、51CTO技術(shù)博主 ??專__注??:專注主流機(jī)器人、人工智能等相關(guān)領(lǐng)域的開發(fā)、測(cè)試技術(shù)。 每個(gè)爬蟲針對(duì)特定的目標(biāo)網(wǎng)站(去哪兒網(wǎng)

    2024年02月04日
    瀏覽(20)
  • 基于SpringBoot+Vue的旅游管理系統(tǒng)

    基于SpringBoot+Vue的旅游管理系統(tǒng)

    目錄 前言 ?一、技術(shù)棧 二、系統(tǒng)功能介紹 登錄界面 管理員功能模塊 用戶功能模塊 三、核心代碼 1、登錄模塊 ?2、文件上傳模塊 3、代碼封裝 隨著科學(xué)技術(shù)的飛速發(fā)展,各行各業(yè)都在努力與現(xiàn)代先進(jìn)技術(shù)接軌,通過(guò)科技手段提高自身的優(yōu)勢(shì),旅游網(wǎng)站當(dāng)然也不能排除在外,

    2024年02月07日
    瀏覽(19)
  • 基于SpringBoot+Bootstrap的旅游管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    基于SpringBoot+Bootstrap的旅游管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    目錄 前言 ?一、技術(shù)棧 二、系統(tǒng)功能介紹 登錄模塊的實(shí)現(xiàn) 景點(diǎn)信息管理界面 訂票信息管理界面 用戶評(píng)價(jià)管理界面 用戶管理界面 景點(diǎn)資訊界面 系統(tǒng)主界面 用戶注冊(cè)界面 景點(diǎn)信息詳情界面 訂票信息界面 三、核心代碼 1、登錄模塊 ?2、文件上傳模塊 3、代碼封裝 隨著旅游業(yè)

    2024年02月07日
    瀏覽(18)
  • 基于Springboot+thymeleaf旅游景區(qū)管理系統(tǒng)——LW模板

    基于java的旅游管理系統(tǒng) 隨著我國(guó)經(jīng)濟(jì)的快速發(fā)展以及改革開放政策的不斷完善,旅游已經(jīng)成為了人們假期放松旅游的主要方式之一。我國(guó)也越來(lái)越重視旅游業(yè)的發(fā)展,出臺(tái)了《關(guān)于促進(jìn)全域旅游發(fā)展的指導(dǎo)意見》、《“十四五”文化和旅游發(fā)展規(guī)劃》等政策予以扶持。旅游

    2024年02月11日
    瀏覽(23)
  • 基于java旅游網(wǎng)站管理系統(tǒng)(springboot框架)開題答辯常規(guī)問(wèn)題

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實(shí)戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計(jì)教育和輔導(dǎo)。 所有項(xiàng)目都配有從入門到精通的基礎(chǔ)知識(shí)視頻課程,免費(fèi) 項(xiàng)目配有對(duì)應(yīng)開發(fā)文檔、開題報(bào)告、任務(wù)書、

    2024年01月21日
    瀏覽(37)
  • 基于Java(SpringBoot框架)畢業(yè)設(shè)計(jì)作品成品(44)旅游景點(diǎn)旅游線路旅游網(wǎng)站管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    基于Java(SpringBoot框架)畢業(yè)設(shè)計(jì)作品成品(44)旅游景點(diǎn)旅游線路旅游網(wǎng)站管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    博主介紹: 《Vue.js入門與商城開發(fā)實(shí)戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計(jì)教育和輔導(dǎo)。 所有項(xiàng)目都配有從入門到精通的基礎(chǔ)知識(shí)視頻課程,免費(fèi) 項(xiàng)目配有對(duì)應(yīng)開發(fā)文檔、開題報(bào)告、任務(wù)書、PPT、論文模版

    2024年02月06日
    瀏覽(25)
  • 基于SpringBoot的旅游路線管理系統(tǒng)(源碼+講解+運(yùn)行)做畢設(shè)/課設(shè)均可

    基于SpringBoot的旅游路線管理系統(tǒng)(源碼+講解+運(yùn)行)做畢設(shè)/課設(shè)均可

    【畢設(shè)者】基于SpringBoot的無(wú)忌旅游路線規(guī)劃系統(tǒng) (源碼+講解+幫你調(diào)試運(yùn)行)做畢設(shè)課設(shè)均可 今日推薦個(gè)每個(gè) 功能都有講解 的項(xiàng)目,最后評(píng)論區(qū)會(huì)附上觀看地址 前后端分離 前端使用: Vue+ Element Plus 后端使用: SpringBoot + Mysql8.0 +Mybatis ? ? 分為 管理員端 和 用戶端 ? ? ? 評(píng)論區(qū)

    2024年02月09日
    瀏覽(22)
  • 基于JAVA+Springboot+Thymeleaf前后端分離項(xiàng)目:旅游網(wǎng)站管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    基于JAVA+Springboot+Thymeleaf前后端分離項(xiàng)目:旅游網(wǎng)站管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實(shí)戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計(jì)教育和輔導(dǎo)。 所有項(xiàng)目都配有從入門到精通的基礎(chǔ)知識(shí)視頻課程,學(xué)習(xí)后應(yīng)對(duì)畢業(yè)設(shè)計(jì)答辯。 項(xiàng)目配有對(duì)應(yīng)開發(fā)文檔、

    2024年02月20日
    瀏覽(103)
  • springboot(ssm甘肅旅游管理系統(tǒng) 在線旅游景點(diǎn)管理系統(tǒng) Java系統(tǒng)

    springboot(ssm甘肅旅游管理系統(tǒng) 在線旅游景點(diǎn)管理系統(tǒng) Java系統(tǒng) 開發(fā)語(yǔ)言:Java 框架:ssm/springboot + vue JDK版本:JDK1.8(或11) 服務(wù)器:tomcat 數(shù)據(jù)庫(kù):mysql 5.7(或8.0) 數(shù)據(jù)庫(kù)工具:Navicat 開發(fā)軟件:eclipse//idea 依賴管理包:Maven 如需了解更多代碼細(xì)節(jié)或修改代碼功能界面,本人都

    2024年01月18日
    瀏覽(33)
  • springboot(ssm旅游信息管理系統(tǒng) 在線旅游系統(tǒng) Java系統(tǒng)

    springboot(ssm旅游信息管理系統(tǒng) 在線旅游系統(tǒng) Java系統(tǒng) 開發(fā)語(yǔ)言:Java 框架:ssm/springboot + vue JDK版本:JDK1.8(或11) 服務(wù)器:tomcat 數(shù)據(jù)庫(kù):mysql 5.7(或8.0) 數(shù)據(jù)庫(kù)工具:Navicat 開發(fā)軟件:eclipse//idea 依賴管理包:Maven 如需了解更多代碼細(xì)節(jié)或修改代碼功能界面,本人都能提供技

    2024年01月19日
    瀏覽(98)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包