栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot入门学习(五)之旅游网站项目

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot入门学习(五)之旅游网站项目

目录

1、项目需求

2、技术需求

3、pom.xml

4、application.yml

4、MybatisPlus的配置文件

5、springboot中配置日期类型转换器

6、用户管理

7、线路管理

8、旅游公司管理

9、旅游线路管理

 10、部分功能……

 11、源码下载


1、项目需求
用户展示 旅游线路展示 线路图片上传与删除 线路分类 展示 旅行社展示

 

2、技术需求

前台有的老,学技术就可以了

后台技术 springboot 、 mybatis-plus 前台 bootstrap 、 jquery 、 thymeleaf 、 fifileinput 插件 数据库 mysql

3、pom.xml
com.qinluyu
    SpringBoot04
    1.0-SNAPSHOT
   
    war

    
    
        1.8
    
    
    
        spring-boot-starter-parent
        org.springframework.boot
        2.3.0.RELEASE
        
    
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
        
            org.springframework.boot
            spring-boot-starter-test
        
        
        
            mysql
            mysql-connector-java
            5.1.45
        
        
        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        
        
        
            com.baomidou
            mybatis-plus-boot-starter
            3.5.1
        
        
        
            com.github.pagehelper
            pagehelper
            5.1.10
        
        
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
        
            org.projectlombok
            lombok
            provided
        
        
        
            commons-fileupload
            commons-fileupload
            1.3.3
        
        
        
            org.springframework.boot
            spring-boot-maven-plugin
            
            2.5.6
        
    

4、application.yml
server:
  port:  9091
  servlet:
    context-path: /
spring:
  datasource:
    url:  jdbc:mysql://127.0.0.1:3306/travel?characterEncoding=utf8?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT
    username: root
    password: 123
    driver-class-name:  com.mysql.jdbc.Driver
    hikari:
      idle-timeout: 60000
      maximum-pool-size: 30
      minimum-idle: 10
thymeleaf:
  cache: false
mybatis-plus:
  mapper-locations:  classpath:/mybatis
@Configuration
@MapperScan("com.qinluyu.dao")
public class MybatisPlusConfig {
    @Bean
    public PageInterceptor pageInterceptor(){
        return new PageInterceptor();
    }
}

5、springboot中配置日期类型转换器
@Component
public class DateConverterConfig implements Converter {
    private static final List formarts = new ArrayList<>(4);
    static{
        formarts.add("yyyy-MM");
        formarts.add("yyyy-MM-dd");
        formarts.add("yyyy-MM-dd hh:mm");
        formarts.add("yyyy-MM-dd hh:mm:ss");
    }
    @Override public Date convert(String source) {
        String value = source.trim();
        if ("".equals(value)) {
        return null;
    }
        if(source.matches("^\d{4}-\d{1,2}$")){
            return parseDate(source, formarts.get(0));
        }
        else if(source.matches("^\d{4}-\d{1,2}-\d{1,2}$")){
            return parseDate(source, formarts.get(1));
        }
    else if(source.matches("^\d{4}-\d{1,2}-\d{1,2} {1}\d{1,2}:\d{1,2}$")){
        return parseDate(source, formarts.get(2));
    }
    else if(source.matches("^\d{4}-\d{1,2}-\d{1,2} {1}\d{1,2}:\d{1,2}:\d{1,2}$")){
        return parseDate(source, formarts.get(3));
    }
    else {
        throw new IllegalArgumentException("Invalid boolean value '" + source + "'");
    }

    }

    
    public Date parseDate(String dateStr, String format) {
        Date date=null;
        try {
            DateFormat dateFormat = new SimpleDateFormat(format);
            date = dateFormat.parse(dateStr);
        }
        catch (Exception e) {

        }
        return date;
    }
}

6、用户管理

(1)实体类

@Data
@TableName("tab_user")
public class User implements Serializable{
    
    @TableId(type = IdType.AUTO)
    private Integer uid;
    private String username;
    private String password;
    private String name;
    private Date birthday;
    private String sex;
    private String telephone;
    private String email;
    private String status;
    private String code;
    private Boolean isadmin;
}

(2)Dao类

public interface UserDao extends BaseMapper {
}

(3)Service类

public interface UserService {
    
    public PageInfo findPage(User condition, int pageNum, int pageSize);

    
    public List find(User condition);

    
    public int add(User user);

    
    public User findById(Integer id);

    
    public int update(User user);

    
    public int delete(Integer id);
}

(4)Service的实现类(重写)

@Service
public class UserServiceImpl implements UserService {
    

    
    @Resource
    private UserDao userDao;
    
    @Override
    public PageInfo findPage(User condition, int pageNum, int pageSize) {

        return PageHelper.startPage(pageNum,pageSize).doSelectPageInfo(()->{
            userDao.selectList(Wrappers.query());
        });
    }

    
    @Override
    public List find(User condition) {

        return userDao.selectList(Wrappers.query());
    }

    
    @Override
    public int add(User user) {
        return userDao.insert(user);
    }

    
    @Override
    public User findById(Integer id) {
        return userDao.selectById(id);
    }

    
    @Override
    public int update(User user) {
        return userDao.updateById(user);
    }

    
    @Override
    public int delete(Integer id) {
        return userDao.deleteById(id);
    }
}

(5)controller类

@Controller
@RequestMapping("/admin/user")
public class UserController {
    @Resource
    private UserService userService;

    
    @RequestMapping("/page")
    public String page(User user, @RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "10")Integer pageSize, Model model){
        PageInfo page = userService.findPage(user, pageNum, pageSize);
        model.addAttribute("page", page);
        return "/user/list";
    }

    
    @RequestMapping("/toadd")
    public String toAdd() {

        return "/user/add";
    }

    
    @RequestMapping("/doadd")
    public String doAdd(User user) {
        userService.add(user);
        return "redirect:/admin/user/page";
    }

    
    @RequestMapping("/toupdate/{id}")
    public String toUpdate(@PathVariable("id") Integer id, Model model) {
        User user = userService.findById(id);
        model.addAttribute("user", user);
        return "/user/update";
    }

    
    @RequestMapping("/doupdate")
    public String doUpdate(User user) {
        userService.update(user);
        return "redirect:/admin/user/page";
    }

    
    @RequestMapping("/delete/{id}")
    public String delete(@PathVariable("id") Integer id) {
        userService.delete(id);
        return "redirect:/admin/user/page";
    }

    
    @RequestMapping("/delete")
    public String batchDelete(@RequestParam("ids") Integer[] ids) {
        for (Integer id : ids) {
            userService.delete(id);
        }return "redirect:/admin/user/page";
    }

(6)前端分页

                    
                

                    

(7)添加(删除)数据后回显


                

7、线路管理

8、旅游公司管理

9、旅游线路管理

(1)图片上传

private void performRImage(Route route, @RequestParam("rimageFile") MultipartFile rimageFile, HttpServletRequest request) throws IOException {
        String savePath = request.getServletContext().getRealPath("img/product/rimage/");
        String fileName = UUID.randomUUID().toString().replaceAll("-", "") + "." + FilenameUtils.getExtension(rimageFile.getOriginalFilename());
        File savePathDir = new File(savePath);
        if (!savePathDir.exists()) {
            savePathDir.mkdirs();
        }
        rimageFile.transferTo(new File(savePathDir, fileName));
        route.setRimage("img/product/rimage/" + fileName);
    }
    
    @RequestMapping("/toimage")
    public String toImage(Integer id, Model model) {
        Route route = routeService.findById(id);
        model.addAttribute("route", route);
        return "route/image";
    }
    @RequestMapping("/doimage")
    public String doImage(
            Integer rid,
            @RequestParam("bigPicFile") MultipartFile[] bigPicFile,
            @RequestParam("smallPicFile")MultipartFile[] smallPicFile,
            HttpServletRequest request) throws Exception {
        List bigPic = new ArrayList<>();
        List smallPic = new ArrayList<>();
        String path = request.getServletContext().getRealPath("/");
        for (MultipartFile f : bigPicFile) {
            File bigPath = new File(path + "img\product\big-pic\");
            if (!bigPath.exists()) {
                bigPath.mkdirs();
            }
            String fileName = UUID.randomUUID().toString().replace("-", "") + "." +
                    FilenameUtils.getExtension(f.getOriginalFilename());
            f.transferTo(new File(bigPath, fileName));
            bigPic.add("img/product/big-pic/" + fileName);
        }
        for (MultipartFile f : smallPicFile) {
            File smallPath = new File(path + "img\product\small-pic\");
            if (!smallPath.exists()) {
                smallPath.mkdirs();
            }
            String fileName = UUID.randomUUID().toString().replace("-", "") + "." +
                    FilenameUtils.getExtension(f.getOriginalFilename());
            f.transferTo(new File(smallPath, fileName));
            smallPic.add("img/product/small-pic/" + fileName);
        }
//要添加的图片列表
        List ris = new ArrayList<>();
        for (int i=0; i 

 10、部分功能……

经测试后,基本功能实现

部分功能还需再写,比如分类管理可以添加、删除却不能修改

图片如果是空,则提交不了

等等

 11、源码下载

SpringBoot入门学习之旅游网站项目-Java文档类资源-CSDN下载

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/861087.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号