课程设计问题总结

本文涉及的产品
云解析 DNS,旗舰版 1个月
云解析DNS,个人版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 一些部署到阿里云的问题一直在阿里云上部署项目,但是只是以ip:端口的形式去进行访问部署到阿里云的项目,个人觉得很丑,之前也有申请过一个.top的域名,但是迟迟过不了认证,后来也一直没有纠结过这个事情,直到课设和前端合作了一个web项目。

一些部署到阿里云的问题

一直在阿里云上部署项目,但是只是以ip:端口的形式去进行访问部署到阿里云的项目,个人觉得很丑,之前也有申请过一个.top的域名,但是迟迟过不了认证,后来也一直没有纠结过这个事情,直到课设和前端合作了一个web项目。发现其实还是有许多问题等着解决

80/8080有什么区别

之前访问一个项目不论是在本地使用localhost形式还是部署到阿里云后使用ip形式访问,始终都要带上tomcat的默认端口8080,这让我觉得真的很丑,并且也心生疑问,为什么访问诸如百度阿里腾讯这类大型网站不需要带上项目部署的端口

80端口是为 HTTP(HyperText Transport Protocol)即超文本传输协议开放的,此为上网冲浪使用次数 最多的协议,主要用于WWW(World Wide Web)即万维网传输信息的协议。可以通过HTTP地址(即常说的“网址”)加“:80”来访问网站,因为浏览网页服务默认的端口号都是80,因此只要输入网址即可

看了这句话不难理解,其实 www.baidu.com 也就相当于 www.baidu.com:80

之前在跟安卓交互的时候,因为没有添加host请求头,所以我在这边看我的tomcat日志一直都没有拦截到请求的迹象,项目中在关键地方打了log之后才发现,没有加host的时候,使用我提供的接口请求的默认端口是80端口,也就更能证明上面说的80端口是HTTP协议默认的端口了

之前在阿里云配置域名解析之后,访问的结果是这样的
img_9164f7f29baf02bd383a2aca07a8f418.png
使用tomcat默认端口8080访问

实在是觉得:8080这个东西既不好看又累赘,所以修改了阿里云tomcat的配置

进入tomcat下conf目录编辑server.xml


img_35b3b18a71c9252401654b68dcfe36ca.png

找到Connector结点


img_cc3a32c9a64fc1ce0603503b8da7c821.png

修改port从8080变为80
重启tomcat就可以发现我们可以通过省略tomcat默认端口8080去访问云上的项目


img_49ab0ff05eae19d62b26ba33cef22bd6.png
不使用8080端口访问项目

DNS是什么

DNS 是域名系统 (Domain Name System) 的缩写,它是由解析器和域名服务器组成的。

域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,而IP地址不一定有域名。 域名系统采用类似目录树的等级结构。

域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。将域名映射为IP地址的过程就称为 “域名解析”

在Internet上域名与IP地址之间是一对一(或者多对一)的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。

DNS 命名用于 Internet 等 TCP/IP 网络中,通过用户友好的名称查找计算机和服务。当用户在应用程序中输入 DNS 名称时,DNS 服务可以将此名称解析为与之相关的其他信息,如 IP 地址。因为,你在上网时输入的网址,是通过域名解析系统解析找到了相对应的IP地址,这样才能上网。其实,域名的最终指向是IP。

以百度为例 打开win10 cmd

img_0d1fd5a2d2a1fcd745bb4c0a856747cc.png
ping命令

简单来说,我们最常用就是的DNS域名解析服务。比如上网时输入 www.baidu.com计算机通过DNS服务器将 www.baidu.com 解析成百度对应的服务器IP地址,220.181.112.244

编码时候的问题

Spring Boot篇

SSM用得已经很熟了,这次课设本来想使用Spring Boot 写一个正儿八经的web服务端,还准备尝试着去使用一下Rest风格,可最后因为前端的问题,课设最后也才算刚刚完成,最后将web和后端放在了一个项目

Spring Boot使用的时候出现的问题:

  • 因为我是用的是gradle构建的项目,在部署的时候迟迟找不到idea的gradle中的war选项,后来了解到需要在项目的build.gradle中添加如下属性

      apply plugin: 'war'
    

并且在执行打包之前,需要对整个程序的启动类进行一定的操作

@MapperScan("com.bsb.mapper")
@SpringBootApplication
public class SpringBootMybaitsApplication extends SpringBootServletInitializer {

  public static void main(String[] args) {
      SpringApplication.run(SpringBootMybaitsApplication.class, args);
  }

  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
      return builder.sources(SpringBootMybaitsApplication.class);
  }
}

修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法,注意这里要指向原先用main方法执行的Application启动类

  • 因为Spring Boot在idea项目初始化的时候会让开发者自己选择项目所需要的模块,真的很方便,但是,在部署到阿里云的时候出现了问题。因为Spring Boot是使用的内嵌的tomcat,所以在部署到阿里云tomcat的时候需要尤其注意在build.gradle中加入如下属性
    providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')

这句话的意思是,在执行项目打包的时候,内嵌的tomcat不会被打包进最后的.war中
这样就可以在阿里云的tomcat中部署,并且使用阿里云tomcat作为web服务器进行正常工作

后来还是使用了SSM,这也让我回顾了一些东西

Mybaits动态SQL

比如现在有一个需求,需要批量插入一组数据进数据库,会怎么做,循环一条一条做吗

Mybaits 提供了动态SQL功能
MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑。
MyBatis中用于实现动态SQL的元素主要有:

  • if
  • where
  • set
  • choose(when,otherwise)
  • trim
  • foreach

下面看几个例子
向数据库中插入批量数据

 <insert id="buyTicket" parameterType="com.bsb.pojo.Ticket">
    INSERT INTO ticket_table
    (
        movieId, hallId, startTime, seatRow, seatColumn, ticketPrice, userId
    )
    VALUES
    <foreach collection="list" item="ticket" index="index" separator=",">
     (
        #{ticket.movieId}, #{ticket.hallId}, #{ticket.startTime}, #{ticket.seatRow},
        #{ticket.seatColumn}, #{ticket.ticketPrice}, #{ticket.userId}
     )
    </foreach>
</insert>

批量更新数据

<update id="updateSelectedMovie" parameterType="java.util.List">
    <foreach collection="list" item="movie" index="index" separator=";">
        UPDATE movies_table
        <set>
            scm = #{movie.update}
        </set>
        WHERE id = #{movie.movieId} AND status = 1
    </foreach>
</update>

批量删除数据

  <delete id="returnTickets" parameterType="java.util.List">

    DELETE FROM ticket_table WHERE userId = #{userId} AND id IN

    <foreach item="id" collection="ticketsIds" index="index" open="(" separator="," close=")">
        #{id}
    </foreach>

</delete>

其实可以看出,这些加入了<foreach>标签的SQL语句其实和普通的语句没有什么区别,区别在于,foreach标签能够对Mapper接口传入的集合参数进行遍历,并且对SQL语句进行拼接,也正是因为这样才能实现批量增删改查的功能

数据库篇

数据库的结构设计真的对后期编码十分影响,这次我们的课设项目的数据表结构设计得在我看来是相当合理的,其中使用到了一些视图、触发器和定时任务,觉得设计得不错并且练了手也对数据库的基本操作有了更好地熟悉和回顾

课程设计github地址 https://github.com/challengerzsz/TTMS-RestfulApi

相关文章
|
11月前
|
算法 程序员 Go
[软件工程导论(第六版)]第6章 详细设计(复习笔记)
[软件工程导论(第六版)]第6章 详细设计(复习笔记)
|
11月前
|
算法 数据挖掘 数据库
[软件工程导论(第六版)]第5章 总体设计(复习笔记)
[软件工程导论(第六版)]第5章 总体设计(复习笔记)
|
11月前
|
算法 数据库 开发者
[软件工程导论(第六版)]第3章 需求分析(复习笔记)
[软件工程导论(第六版)]第3章 需求分析(复习笔记)
|
编解码 算法 前端开发
想卷编程的大学生如何利用寒假提升自己?该学什么?要不要去实习?
想卷编程的大学生如何利用寒假提升自己?该学什么?要不要去实习?
111 0
|
存储 人工智能 运维
心得体会
学习到了诸多知识,提升了自己的能力
|
人工智能 网络协议 大数据
大学生计算机基础题(二十三)
大学生计算机基础题(二十三),一起来学习吧。
|
机器学习/深度学习 开发框架 算法
计算机专业毕业设计题目汇总-最新题目 选题 推荐 毕业设计 - 毕设指导 开题报告 论文
计算机专业毕业设计题目汇总-最新题目 选题 推荐 毕业设计 - 毕设指导 开题报告 论文,计算机专业毕业设计题目汇总-最新题目 选题 推荐 毕业设计 - 毕设指导 开题报告 论文,计算机专业毕业设计题目汇总-最新题目 选题 推荐 毕业设计 - 毕设指导 开题报告 论文
8364 0
计算机专业毕业设计题目汇总-最新题目 选题 推荐 毕业设计 - 毕设指导 开题报告 论文
|
弹性计算 开发工具 C语言
我的心得体会
我是一名大二的工业工程专业的大学生,我们学院这学期开设了以C++语言为载体来讲述有关面向对象编程方法的一门课程——面向对象编程。我怀抱着对技术的热爱与渴望,想革新自己以往面向过程式的编程思想以及追赶社会上“人人都学编程”的脚步。于是我选了这门编程课,听老师讲我们这门课是依托阿里云平台来进行教学的,于是乎在刚开课不久我就注册了我的阿里云账号。现在主要的编程语言是C++,目前通过上课的过程中学到了有关markdown文档和git控制的知识,听老师说阿里云飞天加速计划,学生可以免费申领具有一定期限的云服务器,便想加入飞天加速计划,希望自己的技术有进一步的提高并能学到更多的知识。
|
小程序 算法 JavaScript
计算机毕业设计选题
java 小程序 vue uniapp android 毕业设计源码
476 0
软件工程概论项目——第四天
昨天做了:招聘界面完成 今天准备做:招聘子界面,及提交简历的后台界面 昨天遇到的困难:登录注册的serlvet不能跳转。 原因是没有写dopost方法。
898 0

相关实验场景

更多