发表于: 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协议更加熟悉

五,项目进度情况

暂时依然没有自己太多的事情,继续学习新东西


返回列表 返回列表
评论

    分享到