发表于: 2018-04-01 17:27:04
1 502
16.Put请求在Linux下的Tomcat或者是Resin中会收不到数据,怎么解决这个问题,原因是什么?为什么本地使用Jetty的时候往往是正常的?
收到post请求时tomcat将数据封装一个map,request.getParameter(name)从map中取值,而收到put请求时,不会封装数据,那么自然也就拿不到数据,(其实我的理解就是springmvc框架的配置会将put和delete方法拒绝)解决问题的方法:
- <filter>
- <filter-name>HttpMethodFilter</filter-name>
- <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>HttpMethodFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
web.xml中要这样进行配置。
而想要提交数据的表单要写一个input type=hidden name=_method value=put,这样实际上提交的是post而控制器可以使用get获得数据。
jetty和tomcat容器对于form-data,x-www-form-urlencoded格式的请求表现的行为有差异:
内嵌jetty兼容性较好,无论方法无论格式,使用@requestParam都能获得param中的值。
tomcat对于put方法处理form-data是会抛出异常,而对于x-www-form-urlencoded格式则可以获得数据。
其中spring中的Multipart是不支持put方法的,虽然put方法用起来简便,但是像我在任务二中使用的put出现了bug自己却没有解决问题的能力,如何解决问题让put和delete方法可以使用才是关键的地方。
17.War包是什么,为什么WEB服务通常打出来的都是War包?除了War包,还有几种打包格式,他们之间的区别呢?
首先,jar包是可以通过rar压缩软件打开的,而且能清楚的看到里面都有什么文件,而我打出war包试着用rar的压缩软件打开的时候却没提供我打开的选项,如果按照jar包的理解来理解war包实际上就是把项目内一切必要的文件按照一定的目录放在一个特殊的文件格式里,而我们只需要上传war包,将war包放在tomcat中的webapps下,配置好server.xml中的路径文件就可以在tomcat的bin目录下使用指令./startup.sh启动tomcat,这是tomcat会根据你的server.xml中的路径(如果不指定路径默认是webapps)自动映射文件然后部署,所说的部署也就是建立一个和war包名字相同的文件夹(war包的解压缩过程?),这样的war包使用tomcat部署起来极为简便。
18.maven常用的打包插件有哪些?有什么区别?如何使用 ?
IDEA自带打包对新人来说特别不友好!
按用途分类
1.打不依赖其他包的引用jar包:全部
2.打依赖其他包的引用jar包:shade、assembly、IDEA自带
3.不依赖其他包的可运行jar包:shade、assembly、IDEA自带、
4.依赖其他包的可运行jar包:shade、assembly、IDEA自带
5.需要将包打成各种格式如zip、tar.gz等格式:assembly
6.当出现jar包冲突时:统一采用shade
19.jetty,resin,tomcat的差别在哪里,在线上服务应该选择哪一种WEB服务器?
区别:resin速度较快,tomcat更改配置文件之后如果不是热部署的话需要关闭重启,而resin自动重启,tomcat报错比较详细而resin报错简洁。
而jetty架构驾驭handler实现,tomcat架构基于容器设计,不易扩展,jetty更为灵活,适合开发者定制一个属于自己的webserver,另外处理静态资源的时候jetty性能优于tomcat。
我觉得线上服务应该选择tomcat。
21.如果有多个WEB服务,都把WEB服务都配置在一个容器里,还是一个WEB配置一个容器,他们的差别是什么,你觉得哪种方式更好?
百度了一下应该是俩种方法都有吧,不过springMVC框架好像还不支持一个spring容器管理多个web服务?
我觉得配置一个容器比较好。
22. 在Linux服务器上部署的时候,一般都要有哪些脚本,这些脚本该怎么编写?
停止服务脚本、删除项目脚本、复制war包脚本、启动服务脚本。
23. 域名和端口号是怎么对应起来的?应该通过域名访问吗,从域名服务商到服务器的流程是怎么样的?
域名通过DNS域名解析成IP地址,通过访问服务器固定的80端口获取HTTP服务,通过代理服务器转发到特定端口。
24. Nginx的作用是什么,在WEB服务前端配置Nginx的好处是什么,除了Nginx,还有别的反向代理服务器吗?
Nginx本质是web服务器,可以实现反向代理功能,相较于其他软件占有内存少,稳定性高,再linux系统下还有eooll事件模型,可以提高工作效率。
反向代理服务器有:Squid、Varnish、Apache TS、HAProxy。
25. 在Controller里应该怎么处理Service的异常,大段的Try Catch 会有什么坏处?
controller里面可以继续向上抛出异常然后被springMVC自带的异常处理器捕获,或者是直接在controller里面处理异常,但是大段的try catch会影响代码的运行速度,所以最好是继续抛出然后自己写一个异常处理类去处理异常,再返回一个显示错误的jsp页面。
26.对Service返回的结果是否要判空,为什么?
需要判断,service中返回的结果都是dao层sql语句执行的结果。
27. 对Service返回的结果是否要打日志,应该打什么样的日志,为什么?
要打印日志,需要记录时间和参数,因为如果出错了肯定是要检查日志到底是在什么时间执行了什么业务逻辑导致报错。
28. 该怎么模拟假数据,为什么在真实项目中,我们通常都是先定义接口,再写假数据,再去写业务逻辑?
可以随机生成一些假数据?在真真实项目中,先定义接口用来和数据库进行直接的交互,如果没有数据的支持那么我们就不知道我们写的业务逻辑是否符合要求,所以要先写出一些假数据,在假数据的基础上去写业务逻辑。
29. PostMan是什么,为什么要使用他来测试接口,除了Postman,还有哪些工具可以测试?
postman用于接口(API)的测试,它会显示接受和发送的具体数据,用于不运行程序而只测试接口是否正确。
除了postman还有DHC可以用来测试。
31.内网IP和外网IP的区别是什么,在服务器上测试接口是否被防火墙屏蔽的时候,该用内网IP检测,还是该用外网IP检测?
外网IP具有唯一性,内网IP由路由器分配IP地址,内网所有用户共用一个外网IP进行上网,在服务器上测试接口应该用外网IP,因为内网IP无法被访问。
32.端口是什么含义,怎么判断一个端口是否被占用了,如何判断一个端口是否被防火墙拦截,怎么用Telnet判断端口号是否打开?
端口是设备与外界通讯交流的出入口,使用ssh、wget等端口扫描工具。
33.WEB服务器通常要配置哪几个端口,如果一台服务器上有多个不同的WEB服务,该怎么规划端口的使用,修真院的端口分配是怎么样的?
需要配置22端口和8080端口。
34.C标签是什么,为什么要使用C标签,有哪些常见的指令?
它是JSTL中的核心库,为日常任务提供通用支持,如显示和设置变量、重复使用一组项目、测试条件和其他操作(如导入和重定向Web内容)。Core标签按功能可分为4种类型:变量维护(<c: set> <c: remove>),流程控制:分为条件标签(<c: if>,<c: choose>,<c: when>,<c: otherwise>)和迭代标签(<c: forEach>,<c: forTokens>),URL管理(<c: url>,<a href>,<c: import>,<c: redirect>,<c: param>),<c: out>和<c: catch>等其他标签。
4.使用postman测试接口:
可以看到返回值。
评论