发表于: 2018-01-10 16:16:18

2 673


今天完成的事情:

json taglib完成json解析

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="json" uri="http://www.atg.com/taglibs/json" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>Title</title>
</head>
<body>
<h1>12</h1>
<json:array>
<c:forEach items="${requestScope.allFruits}" var="f" varStatus="vs">
<json:object>
<json:property name="id" value="${f.id}"/>
<json:property name="name" value="${f.fruitName}"/>
<json:property name="price" value="${f.fruitPrice}"/>
</json:object>
</c:forEach>
</json:array>
</body>
</html>

页面:


     

使用jetty部署

使用maven插件部署

<build>
   <finalName>ssmcrud</finalName>
   <plugins>
       <plugin>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-maven-plugin</artifactId>
           <version>9.4.8.v20171121</version>
       </plugin>
   </plugins>
</build>


使用idea部署

使用resin部署

过程就不写了。

深度思考

 

1  什么是http协议?Getpost请求有什么区别?http请求content-Type有几种,有什么区别?http适合什么场景?http状态码有哪些?

HTTP构建于TCP/IP协议之上,默认端口号是80HTTP是无连接无状态的(解决办法)

客户端和服务器端之间数据传输的格式规范,格式简称为“超文本传输协议”。

 

 

application/x-www-form-urlencoded

原生格式

原生支持

multipart/form-data

上传文件

application/json

 

 

text/xml

 

 

 

 

 

 

200301302304400401403404500503

2  HttpHeader里面包含哪些字段,每个字段都有哪些含义?

Cache-Control

Connection

Cookie

请求:

AcceptAccept-CharsetAccept-EncodingAccept-LanguageHostUser-Agent

响应:

Accept-RangesLocationServer

实体相关字段:

AllowContent-TypeContent-EncodingContent-LanguageContent-Length

Content-Range

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

加载spring容器、spring监听器、、配置springmvc DispatcherServlet (加载springmvc容器)、各种拦截器、字符处理等。

4  AnnotationXML两种配置的差别,为什么更喜欢使用Annotaion来配置Spring MVC

注解: 更间接、方便、直观。

xml: 更解耦、灵活、修改方便。

 

直观,只要看@RequestMapping后面的参数就知道,处理器处理的哪个请求。

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

过滤器和拦截器,过滤器是符合条件的请求进来,不符合的不进来,拦截是某些处理方法、数据类型,要在处理器处理之前、之后,有一些操作。

过滤掉的直接就不往下进行了,没拦截的只是没有执行拦截器prehandlerposthandler等一系列方法。

都是AOP思想的一种体现。

6  生成Json有几种方式,他们之间的好处和坏处分别是什么,为什么推荐使用JsonTaglib来处理Json

各种第三方包:在jsp中用标签语法写,用js(jquery)来写

7  一份规范的接口文档应该包括什么内容,衡量接口(API)设计好和坏的准则是什么?

项目元数据:公司、项目组、项目名/代号、类型(web/ios/安卓)、版本、日期、地址

接口说明:

整体概览、各个接口之间的关系

每个接口的说明

方法、URI、返回资源、状态码及含义、接口说明、接口示例、修改组、所有修改者/最近修改者、修改详情、更新日期等

试试RAP http://rap.taobao.org/org/index.do eolinker

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

 

9  Put请求在Linux下的Tomcat或者是Resin中会收不到数据,怎么解决这个问题,原因是什么?为什么本地使用Jetty的时候往往是正常的?

这个数据是请求体中的数据

tomcat首先将请求体中的数据存进map里,然后服务器可以利用request.getParameter("")拿到map中的数据,但是这只对getpost请求有效。

org.apache.catalina.connector.Request中的parseParameters函数中,有一句判断:

                                             

这里主要看isParseBodyMethod

是主要看parseBodyMethodsSet是否包含方法。

而默认的parseBodyMethods="POST"

所以,tomcatresin默认情况下,只会转换POST请求体中的参数,不会转换putdelete请求中的请求体的参数。springMVC封装POJO的时候,只是调用tomcatrequest对象,使用request.getParameter("")拿到数据。

解决办法,两种:

tomacatconf/server.xml中的Connect标签中,添加自定义的parseBodyMethods属性

或者在web.xmlspringmvc框架支持)中,添加拦截器

 

 

jetty支持putdetele方法

10  War包是什么,为什么WEB服务通常打出来的都是War包?除了War包,还有几种打包格式,他们之间的区别呢?

WARWeb Archive)文件。WARSun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有HtmlJsp文件或者包含这两种文件的目录,有一个WEB-INF目录,很重要。在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和JspServlet所依赖的其它类(如JavaBean)。一般来说,web应用依赖的JAR包放在WEB-INF/lib目录下。

 

11 maven常用的打包插件有哪些?有什么区别?如何使用

maven-jar-plugin

maven-war-plugin

maven-assembly-plugin

maven-shade-plugin

12  jetty,resin,tomcat的差别在哪里,在线上服务应该选择哪一种WEB服务器?

1、速度方面,ResinTomcat2倍以上,不过Tomcat也很快,所以差别几乎感受不到。

2、开关机制上方面,Resin要比Tomcat好,比如修改了配置文件之后,Resin是会自动重启的,而Tomcat需要人工手动关闭并重启。

3、报错方面,Tomcat比较详细,一个小小的错误也会用大篇幅来描述,而Resin则相对简洁明确一些。

 

TomcatJetty的区别

相同点:用java编写,一种Servlet容器,都支持标准的servlet规范和JavaEE的规范。

 

不同点:

1、架构方面,Jetty的架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单。 Tomcat的架构是基于容器设计的,进行扩展是需要了解Tomcat的整体设计结构,不易扩展。

2、灵活性方面,Jetty更灵活,体现在其可插拔性和可扩展性,更易于开发者对Jetty本身进行二次开发,定制一个适合自身需求的Web Server 相比之下,重量级的Tomcat因为本来就支持过多J2EE特性,要对其精简,比对jetty进行拓展都更难。

3、处理性能方面,Tomcat适合处理少数非常繁忙的链接,也就是说链接生命周期短的话,Tomcat的总体性能更高。另外,Jetty在处理静态资源时,性能优于Tomcat

 

这些服务器各有优劣,选择服务器时应该先参考项目,预估规模大小等。比如大规模的企业级应用,Tomcat自身扩展了大量JEE特性可满足企业级应用的需求,所以这种情况下应选用Tomcat

13 Service返回的结果是否要判空,为什么?

返回null是很不好的习惯。

如果一个函数可能返回null(就是在最开始,一个变量赋值为空,函数最后反悔这个变量,这种情况),就必须判空

这可以说是语言设计者的失误了。

解决方案:使用java8中的optional、抛出异常(自定义异常)

14 Service返回的结果是否要打日志,应该打什么样的日志,为什么?

要打

抛错误时(try catch)error、正常运行打info

catch (Exception e) {log.error(e.getMessage());}

15  PostMan是什么,为什么要使用他来测试接口,除了Postman,还有哪些工具可以测试?

测试接口工具,方便。

DHCRestlet Clientfiddler


16  端口是什么含义,怎么判断一个端口是否被占用了,如何判断一个端口是否被防火墙拦截,怎么用Telnet判断端口号是否打开?

传输层与网络层最大的区别是传输层提供进程通信能力,网络通信的最终地址不仅包括主机地址,还包括可描述进程的某种标识。所以TCP/IP协议提出的协议端口,可以认为是网络通信进程的一种标识符。

http://blog.csdn.net/san_mu_000/article/details/69943257

 

Linux下查看本地进程占用端口:

查看程序对应进程号:ps ef|grep 进程名

查看进程占用端口号:netstat -anp|grep 进程pid/端口号

 

查看防火墙端口

iptables –L

 

telnet查看远程端口

telnet 120.79.47.191 22        ip和端口之间是空格

 

nmap ip -p 端口号,可以看到状态是open

17  WEB服务器通常要配置哪几个端口,如果一台服务器上有多个不同的WEB服务,该怎么规划端口的使用,修真院的端口分配是怎么样的?

8022443

18  C标签是什么,为什么要使用C标签,有哪些常见的指令?

http://blog.csdn.net/jueblog/article/details/10814259

jsp的核心标签库 c core     http://java.sun.com/jsp/jstl/core

 

1. 表达式控制标签:outsetremovecatch

2. 流程控制标签:ifchoosewhenotherwise

3. 循环标签:forEachforTokens

4. URL操作标签:importurlredirect



明天计划的事情:

任务3svn学习、任务12复习(springmvcmybatismysql)、aop

遇到的问题:

深度思考有很多还是不懂,从网上搜了不少,有很多还是一知半解。

 

收获:

见上面。



返回列表 返回列表
评论

    分享到