发表于: 2020-06-12 21:16:36

1 1837


今天完成的事情:接口开发完成,完成了项目的环境搭建,完成部分深度思考。
明天计划的事情:开始开发模块。
遇到的问题:暂无

收获:

作品接口,查询要分页

接口功能

  • 作品插入接口

请求URL:

  • POST /picture

参数:

参数名说明类型备注是否必填
catalog_id目录idInteger
author_id作者idInteger
name作品名称String
intro作品简介String
priority优先级Integer0为最高,代表精选留言
image图片链接String
createAt创建时间long
updateAt修改时间long
createBy创建人String
updateBy修改人String

返回参数

参数名说明类型备注是否必填
code响应码number
message信息String

返回示例

  1.  {
  2.    "code": 201,
  3.    "message": "picture创建成功!"
  4.  }


接口功能:

  • picture查询

请求URL:

  • get /picture

请求参数

参数名说明类型备注是否必填
pageSize每页返回条数,默认为10Integer
pageNum当前页数,默认1Integer

返回参数

参数名说明类型备注是否必填
code响应码number
message信息String
data集合对象object

data:

参数名说明类型备注是否必填
totalNum总条数Integer
pageNum当前页数Integer
totalPage总页数Integer
id作品idInteger
catalogId目录idInteger
authorId作者idInteger
name作品名称String
intro作品简介String
image图片链接String
createAt创建时间long
updateAt修改时间long
createBy创建人String
updateBy修改人String

返回示例

  1.  {
  2.    "code": 202,
  3.    "message": "banner查询成功!",
  4.    "data": {
  5.        "totalNum":"20",
  6.        "pageNum","1",
  7.        "totalPage":"5",
  8.        "list":[
  9.            "id":"1",
  10.            "catalogId","1",
  11.            "authorId":"1",
  12.            "Name","迷失的路",
  13.            "intro":"迷失的人,愿你重归故里!",
  14.            "image","http://test3.com/1.jpg",
  15.            "create_at","20200614",
  16.            "update_at":"20200615",
  17.            "create_by":"梦里的诗人",
  18.            "update_by","梦里的诗人"
  19.        ]
  20.    }
  21.  }


接口功能:

  • picture修改

请求URL:

  • put /picture/{id}

请求参数

参数名说明类型备注是否必填
name作品名称String
intro作品简介String
image图片链接String
updateAt修改时间Integer
updateBy修改人String

返回参数

参数名说明类型备注是否必填
code响应码number
message信息String

返回示例

  1.  {
  2.    "code": 203,
  3.    "message": "picture修改成功!"
  4.  }


接口功能:

  • picture删除

请求URL:

  • delete /picture/{id}

请求参数

参数名说明类型备注是否必填
ididInteger

返回参数

参数名说明类型备注是否必填
code响应码number
message信息String

返回示例

  1.  {
  2.    "code": 204,
  3.    "message": "picture删除成功!"
  4.  }

25.什么叫反向代理?为什么要使用反向代理? 

正向代理代理的对象是客户端,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求

反向代理代理的对象是服务端,它隐藏了真实的服务端

1.保证内部服务器的安全,因为隐藏了内部服务器,外部可见的是代理服务器的IP和端口,信息资源又是放在内部服务器。

2.负载均衡,加快的内部服务器的访问速度,部署多个反向代理服务器,让不同的服务走不同的代理服务器,而且代理服务器还提供缓存功能也加快了用户的访问速度。

3.节约有限的IP资源

26.Nginx的作用是什么,在WEB服务前端配置Nginx的好处是什么,除了Nginx,还有别的反向代理服务器吗?  

Nginx是一个高性能的HTTP和反向代理web服务器,同时也是电子邮件代理服务器,具有速度快,高性能,高可靠性,低内存消耗等特点

Lighttpd基本上和Nginx同质。

Nginx提供

反向代理:是指用代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络中的上游服务器,并将从上游服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外的表现就是一个Web 服务器。充当反向代理服务器也是Nginx的一种常见用法(反向代理服务器必须能够处理大量并发请求)。

动静分离:由于Nginx 具有“强悍”的高并发高负载能力,因此一般会作为前端的服务器直接向客户端提供静态文件服务,用Apache、Tomcat等服务器来处理动态资源,实现动静分离。
负载均衡:作为代理服务器,一般都需要向上游服务器的集群转发请求。这里的负载均衡是指选择一种策略,尽量把请求平均地分布到每一台上游服务器上。

27.为什么要用start.sh,stop.sh,deploy.sh 来完成容器的启动,停止和部署,而不是直接用容器自带的命令?

 因为脚本部署比较快,方便管理,能够随时部署,不消耗时间。

改动方便,脚本语言可以很好的改动,比较灵活。

如果使用容器自带的命令也可以,但是每个web容器都有自己的规范和配置,所以不方便管理(多项目情况下)。而且容器自带的都是自己默认的属性,更何况有的(比如jetty)还能使用java命令部署,不统一,而且依赖java运行而运行。

28.什么是Filter,什么是Interceptor,他们的区别是什么,和AOP又是什么关系?

Filter

就是过滤器,依赖Servlet容器,实现上基于函数回调,几乎对所有的请求进行过滤,过滤器的实例每次只在容器初始化时调用一次。

 Filter 的使用:

(1)在HttpServletRequest 到达Servlet 之前,拦截客户的HttpServletRequest,根据需要检查HttpServletRequest ,也可以修改HttpServletRequest 头和数据。

(2)创建Filter 处理类,init方法、destory方法、doFilter方法,并在web.xml 文件中配置Filter

Interceptor

依赖于web框架,在Spring中依赖于SpringMVC框架。实现上基于java反射机制,AOP的运用。

通过实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter抽象类,重写preHandle()、postHandle()和afterCompletion()来对用户的请求进行拦截处理

执行顺序:监听器>过滤器>拦截器

Listener按照监听器可以分为三种类型:ServletContextListener 监听ServletContext对象,HttpSessionListener 监听Session对象,HttpRequestListener 监听Request对象

统计在线人数,利用HttpSessionListener;加载初始化信息,利用ServletContextListener;统计网站访问量实现访问监控

29.使用Annotaion的时候需要有哪些配置,他的加载过程是怎么样的?  

Annotation(注解),其实就是对类,方法,属性进行的一种标示,也是给JVM拿来解析的。

配置 <context:componet-scan /> 标签 加载Spring @Component @Service @Controller @Autowire @Resource @Required 注解

配置 <mvc:annotation-driven/> 加载MVC 使用的 @RequestMapping 等其他相关的注解。

30.Annotation和XML两种配置的差别,为什么更喜欢使用Annotaion来配置Spring MVC?

1.XML配置的优缺点: 
优点有: 
1. XML配置方式降低了耦合,更具扩展性,即使对配置文件进一步修改也不需要工程进行修改和重新编译。 
2. 在处理大的业务量的时候,用XML配置应该更加好一些。因为XML更加清晰的表明了各个对象之间的关系,各个业务类之间的调用。同时spring的相关配置也能一目了然。 
当然,有人会说,用XML配置,在大的业务量时候会使得XML文件过大,不容易查看。这一点我们完全可以利用业务分解书写多个XML配置文件就可以了。 
缺点有: 
配置文件读取和解析需要花费一定的时间,配置文件过多的时候难以管理,无法对配置的正确性进行校验,增加了测试难度。 
2.annotation配置的优缺点: 
优点有: 
1. 在class文件中,可以降低维护成本,annotation的配置机制很明显简单 
2. 不需要第三方的解析工具,利用java反射技术就可以完成任务 
3. 编辑期可以验证正确性,差错变得容易 
4. 提高开发效率 
缺点有: 
1. 如果需要对于annotation进行修改,那么要重新编译整个工程 
2. 业务类之间的关系不如XML配置那样容易把握。 
3. 如果在程序中annotation比较多,直接影响代码质量,对于代码的简洁度有一定的影响。
3.为什么更喜欢使用Annotaion来配置Spring MVC?
1. SpringMVC框架给出了专用的几个注解,使其层次更加分明

2. MVC层次较为简单,而url映射也十分简单,哪个网址出错可以立即找到其映射类。

31.web.xml里的主要配置都包括什么,都代表什么含义,比如怎么加载Spring 配置的?  

1.欢迎首页

description:描述项目,可以不配

display-name:定义项目的名称,可以不配

welcome-file-list:用来定义首页的列表

2.命名和定制url,设置初始化参数

3. 设置过滤器

过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做一些业务逻辑判断等。其工作原理是,只要你在web.xml文件配置好要拦截的客户端请求,它都会帮你拦截到请求,此时你就可以对请求或响应(Request、Response)统一设置编码,简化操作;同时还可进行逻辑判断,如用户是否已经登陆、有没有权限访问该页面等等工作。它是随你的web应用启动而启动的,只初始化一次,以后就可以拦截相关请求,只有当你的web应用停止或重新部署的时候才销毁。

加载顺序为: listener >> filter >> servlet >> spring

加载顺序会影响对spring bean 的调用。

比如filter 需要用到 bean ,但是加载顺序是 先加载filter 后加载spring,则filter中初始化操作中的bean为null;

32.Spring MVC和Struts的区别是什么,为什么更倾向于使用Spring MVC?

1.SpringMVC 的入口是 Servlet,而 Struts2 入口是 Filter

2.SpringMVC 会比 Struts2 稍微开些,SpringMVC 是基于方法设计,而 Struts2 是基于类,每次发请求都会实例化一个 ACTION。

3.SpringMVC 可以跟 Spring 无缝融合,开发效率比 Struts2 高。支持 JSR303,处理 ajax 的请求更方便。

4.但是 Struts2 的 OGNL 表达式使页面的开发效率相比 SpringMVC 更高



返回列表 返回列表
评论

    分享到