开发者社区> 红色迷宫> 正文

课程设计问题总结

简介: 一些部署到阿里云的问题 一直在阿里云上部署项目,但是只是以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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
web渗透听课笔记
web渗透听课笔记
32 0
想卷编程的大学生如何利用寒假提升自己?该学什么?要不要去实习?
想卷编程的大学生如何利用寒假提升自己?该学什么?要不要去实习?
36 0
Hadoop大数据技术课程总结2021-2022学年第1学期(中)
文章目录 Hadoop大数据技术课程总结 1.大数据概述 1.1大数据时代的4V 1.2大数据时代的三次浪潮
100 0
Hadoop大数据技术课程总结2021-2022学年第1学期(下)
文章目录 Hadoop大数据技术课程总结 1.大数据概述 1.1大数据时代的4V 1.2大数据时代的三次浪潮
141 0
计算机专业毕业设计题目汇总-最新题目 选题 推荐 毕业设计 - 毕设指导 开题报告 论文
计算机专业毕业设计题目汇总-最新题目 选题 推荐 毕业设计 - 毕设指导 开题报告 论文,计算机专业毕业设计题目汇总-最新题目 选题 推荐 毕业设计 - 毕设指导 开题报告 论文,计算机专业毕业设计题目汇总-最新题目 选题 推荐 毕业设计 - 毕设指导 开题报告 论文
7571 0
软件设计师备考知识点02
1 CPU的数据总线宽度会影响系统的运算速度 2 寄存器 1 程序计数器 存放指令地址   2 程序状态寄存器 运算器中产生的标志信息 3 地址寄存器:程序计数器 堆栈指示器 变址寄存器 段地址寄存器,用于存放各种内存地址 4 累加寄存器:数据寄存器。
1435 0
软件工程概论项目——第四天
昨天做了:招聘界面完成 今天准备做:招聘子界面,及提交简历的后台界面 昨天遇到的困难:登录注册的serlvet不能跳转。 原因是没有写dopost方法。
841 0
《计算机网络课程设计(第2版)》——1.4节课程设计要求及评分标准
本节书摘来自华章社区《计算机网络课程设计(第2版)》一书中的第1章,第1.4节课程设计要求及评分标准,作者:吴功宜 吴 英 ,更多章节内容可以访问云栖社区“华章社区”公众号查看
938 0
《计算机网络课程设计(第2版)》——2.2节课程设计要求
本节书摘来自华章社区《计算机网络课程设计(第2版)》一书中的第2章,第2.2节课程设计要求,作者:吴功宜 吴 英 ,更多章节内容可以访问云栖社区“华章社区”公众号查看
778 0
+关注
红色迷宫
他山之石 可以攻玉
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
超全算法笔试-模拟题精解合集
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多