发表于: 2017-11-08 21:34:47
1 808
一.今天完成的主要事情
1.继续深入servlet的学习,用servlet写了一个简单的restful风格的接口
web.xml配置文件如下
红框框起来的是配置的是匹配的url
demo类中的代码为:
分别重写了init(),destroy()方法,用于创建servlet时的初始化以及销毁工作,并且重写了doGet(), doPost(),doPut(),doDelete()方法,用于处理不同的请求
至于具体的doGet()中的代码比较简单
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取请求参数
String param1 = request.getParameter("username");
String param2 = request.getParameter("password");
//设置响应的数据格式
response.setContentType("text/html");
//假设执行逻辑代码
System.out.println("================get a user");
System.out.println("================" + param1);
System.out.println("================" + param2);
param1 += "get";
param2 += "get";
request.setAttribute("username", param1);
request.setAttribute("password", param2);
//跳转请求
request.getRequestDispatcher("/queryUser.jsp").forward(request, response);
}
先获取参数,然后设置响应的数据格式,然后执行逻辑代码,最后将经过逻辑处理后的数据交给jsp页面展示
执行的结果就不展示了,访问同一个url,用不同的http请求可以得到不同的结果
可以从这个简单的demo中看出来,如果使用原始的servlet作为web应用,虽然也可以实现rest风格的接口,但是重复的代码太多了,就以这个demo为例,每一个重写的方法中都要从请求中获取参数,都要设置响应的编码,冗余代码非常多,而且和逻辑代码掺杂在一起,看起来非常不直观,而且这还是只是一个简单的demo,如果同一个servlet要处理多个url,那么还要在servlet中分发url请求到对应的类中,代码会更加复杂.也正是因为这个原因,才有了后来的struts和SpringMVC框架的出现,这些框架帮助我们配置好冗余操作,使我们可以更加关注于逻辑代码的实现即可
2.学习了一波HTTP协议
这里只说自己的理解
HTTP协议是浏览器和服务器之间用于通信的协议,是浏览器和服务器都认识的协议.该协议无状态,支持多种数据类型,可以根据需要传输不同的数据类型.
当用户输入url之后,浏览器会将用户输入的url以及参数封装为一个HTTP请求,HTTP请求向下又被封装为一个TCP请求,TCP请求遵循TCP协议,是可靠的协议,用于和服务器进行可靠的传输;接着TCP协议再往下被封装为IP请求,IP请求遵循IP协议,是无连接的协议,IP请求将TCP包分成一个个IP包,快速的通过物理层向服务器发包,服务器接收到包之后,再反向上述过程,最后得到服务端发来的HTTP请求
服务器接受到请求之后,通过读取请求头,请求参数和请求内容,找到相应的servlet,然后servlet处理请求,执行相应的逻辑代码,然后将执行结果封装在response请求中,服务器再根据刚才的那条链路,将response响应发送客户端,客户端接收到响应之后,发送解析响应,并选择适合的数据格式将数据展示出来,这样,一个完整的请求过程就算结束了
3.学习了JForg关于<下一代Java私服-Artifactory开源版在线课堂>的视屏
主要有几个内容:
1).为什么需要二进制仓库
现在流行敏捷开发,敏捷开发对软件持续交付的要求越来越高,而软件开发中少不了不同语言的依赖管理,这时传统的软件交付就存在四个痛点,一是下载慢,仓库一般在海外,下载速度巨慢;而是多语言,大的企业往往有多种语言需要管理,不同语言支持不同的依赖,包管理容易混乱;三是安全问题,开源的包可能存在安全漏洞;四是自己开发的包存在哪里不明确.而JForgArtifactory可以很好的解决这些问题
2).什么是JForg Artifactory?
主要包括依赖源和二进制仓库
特点:
具有支持多语言仓库
存储/管理所有工件(异地/跨组织)
能够和CI工具完美集成(如JenKins/TFS)
能够和部署工具集成
这些就很好的解决了传统持续交付中的问题
3).演示demo
4).JForgArtifactory和Nexus的对比
提供主流CI集成插件,更简单
自定义类SQL高级查询,能够快速找包
支持RESTFUL风格的API,更容易和其他系统集成
软件包在线查看,无需下载解压
CheckSum存储,更加节省存储空间
数据库选型灵活,有较好的UI体验
5).如何从Nexus迁移到Artifactory
提供专业迁移工具
可以通过Remote代理Nexus仓库
二.明天的计划
1.如果有bug,就改bug
2.如果没有bug,学习Hibernate框架,尽量能够先搭起来一个demo,用Hibernate实现增删改查
三.遇到的问题
暂无
四,收获
对servlet,HTTP协议更加熟悉
五,项目进度情况
暂时依然没有自己太多的事情,继续学习新东西
评论