发表于: 2020-06-04 23:46:52

1 1459


今天完成的事情:解决部署的问题,Nginx的安装,任务2进度
明天计划的事情:扫尾任务二,深度思考,配置Nginx
遇到的问题:

1.对于昨天项目没有运行成功的解决

是自己没有配置tomcat启动的项目前缀,放在tomcat/webapps下的项目,uri要加上项目名,如果不加就需要单独配置.

在tomcat目录下conf/server.xml中找到<host>并添加以下内容

<Context path="" docBase="/software/tomcat/webapps/SpringMVCdebug= "0" reloadable="true" crossContext="true"></Context>

参数说明:

path 指出你的访问路径可以为“”或者"/"或者"/下面的子文件夹名称"

docBase 路径必须是指向自己的目录

debug 为设定debug的等级0提供最少的信息,9提供最多的信息

reloadable=true时 当web.xml或者class有改动的时候都会自动重新加载不需要从新启动服务(在Web应用的开发和调试阶段,把reloadable设为true,可以方便对Web应用的调试。在Web应用正式发布阶段,把 reloadable设为false,可以降低Tomcat的运行负荷,提高Tomcat的运行性能)

crosscontext="true"表示配置的不同context共享一个session

然后重启tomcat服务即可


收获:

JSON Tag-lib与Spring的@ResponseBody返回JSON对象的实现差别和使用场景

@ResponseBody

是将java对象转为json格式的数据。作用在方法上,表示该方法的返回结果直接写入HTTP response body中,在异步获取数据的时候使用,【Ajax在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。

JSON Tag-lib

用于JSP代码内部呈现JSON(JavaScript对象表示法)数据。它可以用作AJAX应用程序服务器端的一部分,从而允许您使用JSP的全部功能来格式化JSON数据。

使用场景

使用JSON Tag-lib的效率要低点,因为要生成JSP页面。

在项目简单的情况下,controller中的代码简洁度并不明显,但是当项目复杂时,可以很清晰的认识到代码的简洁、易读。而这其实也就是Json诞生原因之一。

Post时,@RequestBody和@RequestParam接受参数的区别

@RequestBody

@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的),GET方式无请求体,所以使@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。

@RequestParam

用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容。(Http协议中,默认传递的参数就是application/x-www-form-urlencoded类型)。RequestParam可以接受简单类型的属性,也可以接受对象类型。

 实质是将Request.getParameter() 中的Key-Value参数Map利用Spring的转化机制ConversionService配置,转成参数接收对象或段。

在Content-Type: application/x-www-form-urlencoded的请求中,@RequestParam支持get/post得到值。

使用场景

1.在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。一个请求,只有一个RequestBody;一个请求,可以有多个RequestParam,同时使用时,RequestBody 接收的是请求体里面的数据;而RequestParam接收的是key-value里面的参数。

2.根据request header Content-Type的值判断用哪个(application/x-www-form-urlencoded  multipart/form-data  application/json, application/xml  )

A) GET

@RequestBody不能处理

B) POST

application/x-www-form-urlencoded,可选(因为这种情况的数据@RequestParam, @ModelAttribute可以,@RequestBody也能处理;  multipart/form-data, @RequestBody不能处理; 

其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);

C) PUT方式

application/x-www-form-urlencoded, 必须;multipart/form-data, 不能处理;其他格式, 必须;

说明:request的body部分的数据编码格式由header部分的Content-Type指定;

Nginx

1.概述

Nginx是一个高性能的HTTP和反向代理的web服务器,及电子邮件(IMAP/POP3)代理服务器,占有内存小,并发能力强。

优势:

处理静态文件,索引文件以及自动索引效率高;

无缓存的反向代理加速,简单的负载均衡和容错;

支持内核Poll模型,最高可达50000个并发连接;

采用分阶段资源分配技术,cup内存占用率很低,可预防DOS攻击;

稳定,支持热部署,可以7*24不间断运行;

网上说的优点太多了,牛逼就完事了。

2.安装

1)安装环境配置

nginx 安装环境

 gcc 

安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境, 需要安装 gcc:yum installgcc-c++ -y 

PCRE 

PCRE(PerlCompatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表达式 库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库。 

yuminstall-ypcrepcre-devel 

注:pcre-devel 是使用 pcre 开发的一个二次开发库。nginx 也需要此库。 

zlib 

zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip,所 以需要在 linux 上安装 zlib 库。 

yuminstall-yzlibzlib-devel

openssl

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书 封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。 nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 linux 安装 openssl 库。

yuminstall-yopensslopenssl-devel


2)解压安装,解压完成,进入解压的文件,更改配置文件夹等

madir nginx-1.8.0.tar

cd nginx-1.8.0.tar

./configure \

--prefix=/software/local/nginx \

--pid-path=/var/run/nginx/nginx.pid \

--lock-path=/var/lock/nginx.lock \

--error-log-path=/var/log/nginx/error.log \

--http-log-path=/var/log/nginx/access.log \

--with-http_gzip_static_module \

--http-client-body-temp-path=/var/temp/nginx/client \

--http-proxy-temp-path=/var/temp/nginx/proxy \

--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \

--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \

--http-scgi-temp-path=/var/temp/nginx/scgi


3)make && make intall

4) 进入上面红色的安装目录,进入sbin   ./nginx 启动

3.文件结构

  • 1)、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
  • 2)、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
  • 3)、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
  • 4)、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
  • 5)、location块:配置请求的路由,以及各种页面的处理情况



返回列表 返回列表
评论

    分享到