发表于: 2017-12-10 21:05:22

1 778


今天做的事情:

       回顾一下,任务以来学的东西。

任务一

       ●首先一切的代码操作都有自己的工具,以及依赖和环境配置。在任务一中熟悉安装各种工具和依赖如

java JDK&JRE、mysql、maven、navicat、eclipse、idea、xshell。然后是对数据库操作的框架mybatis,以及单元测试junit,和强大的项目框架spring。下面开始简单整理:

        JRE是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具,如果要运行java程序,只需安装JRE就可以了。如果要编写java程序,需要安装JDK。

        mysql是一个关系型数据库管理系统,一切的数据存储调用都来自数据库,所以数据库字段的合理设计尤为重要,任务说明数据库的每一个表中都要有三个基本的字段,ID(自增Long),create_at,update_at(所有的时间都用Long)。然后运用数据库的sql语句,基本的表操作select/update/delete/insert.接着有数据字段的索引建立,唯一索引/普通索引,可以加快查询表的速度。 navicat就是对数据库的操作的一个工具。

        idea、eclipse都属于开发工具,熟练使用是基本操作。当然现在大部分都使用的idea。

        maven,一个项目管理工具,功能很强大用来项目构建和依赖管理,最主要的就是管理项目的依赖,就是jar包,他用三个坐标来定位一个唯一的依赖:

            <!-- 依赖组织名称 -->

            <groupId>junit</groupId>

            <!-- 依赖项目名称 -->

            <artifactId>junit</artifactId>

            <!-- 依赖版本名称 -->

            <version>4.9</version>

然后maven的一些常用命令clean、package、install、test、deploy。项目常用package打成war包。

       ●xshell一个对远程服务器操作的工具。项目的部署一般是在linux系统的服务器中,熟悉操作linux也是很必要的了。一些基本的命令cd 、mv、 vim 、netstat、 top、 cat、 kill、 wget、 apt、 -zxvf等等。

       ●mybatis一个对数据库的操作框架,操作简单,数据可靠,直接把sql语句写在xml中,能很直观的看见以及修改,便于统一管理和优化,还支持动态sql。(MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所需要的所有方法,可以通过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession。)

        缺点:

1、编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。

2、SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。 

3、框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。

4、二级缓存机制不佳

        spring就厉害了,流行开发框架,现在就接触了IOC、AOP. 控制反转,将对象的控制权反转到spring容器,本质还是一个解耦合的思想。

      <bean> 配置需要创建的对象

       id :用于之后从spring容器获得实例时使用的

       class :需要创建实例的全限定类名

依赖注入,动态的向某个对象提供它所需要的其他对象

       <property> 用于进行属性注入

        name: bean的属性名,通过setter方法获得

        ref :另一个bean的id值的引用

面向切面编程,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块。简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。

       ●Junit和log4j。单元测试能够使我们尽早的发现程序的 bug 和不足,虽然会需要时间去做,但是代码的正确性还是更重要一些,提交代码前老老实实自测先。日志对于项目来说很有必要,他可以记录对软件的每一次操作,以及当软件发生异常时的记录,对于开发人员后期的维护,提供了有用的资料。当然他也可以是调试的一种辅助工具。


任务二:

       ●接触web工程,rest接口及web容器。springMvc将任务一整个项目整合起来,完成合体,开始对整个框架有了一定的了解,通过web.xml全局配置,controller、dao、service、pojo一系列区块对用户的请求进行处理再响应的流程有了认识。

       ●rest一个接口规范,面向资源,一目了然,具有自解释性。rest的请求方法POST、GET、DELETE、PUT.一句话来说URL定位资源,用HTTP动词(GET,POST,DELETE,PUT)描述操作。

       ●Spring MVC主要由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成。下面看下一个完整的web项目的各个层的作用:

DAO(mapper)

            DAO主要是做数据库交互的工作,负责与数据库进行联络的一些任务都封装在这个包里 

            DAO的设计首先是设计DAO的接口,接着做他的xml文件,里面装sql语句。

            然后就可在模块中调用此接口来进行数据业务的处理

Service

            Service层主要负责业务模块的逻辑应用设计。 

            首先设计接口,再设计其实现的类

            在实现类中会映射Dao中的方法。

Controller

            Controller层负责具体的业务模块流程的控制, 

            在此层里面要调用Service层的接口来控制业务流程,

            针对具体的业务流程,会有不同的控制器,做不同的事情,这里要映射service层的方法。

pojo

           就是简单的get set tostring了,也是最基础的模型。

 Service层是建立在DAO层之上的,建立了DAO层后才可以建立Service层,而Service层又是在Controller层之下的,因而Service层应该既调用 ,DAO层的接口,又要提供接口给Controller层的类来进行调用,它刚好处于一个中间层的位置。每个模型都有一个Service接口,每个接口分别装各自的业务处理方法。

       ●jetty一个web容器,web项目可以放在其中运行。postman一个测试接口的工具,能测试自己的接口能否正常工作,开发中会经常用到。


任务三:

       ●正式部署web项目到远程服务器,在远程服务器上编写脚本,抓取日志,统计性能,对代码的运行情况有一个了解。

       ●linux远程服务器要运行web项目也是要安装和本地一样的一些java依赖和工具。将web项目打出的war包放入服务器tomcat的webapp中,startup.sh便会运行起来供用户访问。

       ●nginx一个反向代理服务器,用反向代理功能代理tomcat,需要改nginx.conf文件upstream,包括nginx日志输出属性的问题也在conf里面设置。设置完成后nginx -s reload 重新加载配置。

      ●shell脚本,以#!/bin/bash编写开头,把linux命令加入进去可以简化操作也可以加入逻辑判断,非常实用,提高操作效率。编写完成后需要chmod - r 表示可读取,w 表示可写入,x 表示可执行,亦可用4 2 1来代替和相加组合。

linux的top命令可以查看到整个服务器的进程运行状态

Tasks:  total 进程总数

running :正在运行的进程数

sleeping :睡眠的进程数

stopped :停止的进程数

zombie :僵尸进程数

Cpu(s):  us 用户空间占用CPU百分比

sy :内核空间占用CPU百分比

ni :用户进程空间内改变过优先级的进程占用CPU百分比

id :空闲CPU百分比


任务四:

      ●jsp页面内置9大对象

1、request  触发服务调用的请求  

2、response  对请求的应答   

3、session  为请求的客户创建的session对象    

4、application从 servlet 配置对象获得的 servlet 上下文(如在getServletConfig() ,getContext()的调用中)  

5、out  向输出流写入内容的对象    

6、pageContext  本 JSP 的页面上下文   

7、page  实现处理本页当前请求的类的实例    

8、config  本 JSP 的 ServletConfig    

9、exception 表示JSP页面运行时产生的异常

       ●用el表达式存取变量数据。语法结构${expression}。常用C标签<c:forEach><c:out><c:set><c:if>等。

       ●tiles一种JSP布局框架,主要目的是为了将复杂的jsp页面作为一个的页面的部分机能,然后用来组合成一个最终表示用页面用的,这样的话,便于对页面的各个机能的变更及维护。主要还是学习他的思想:实现代码的复用。

       ●个tag类继承tagSupport类方法,写tld文件,把tld配置在web.xml<jsp-config>中,最后在jsp页面表头引入即可。


任务五:

       ●Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。用户每次访问站点时,Web 应用程序都可以读取 Cookie 包含的信息,常用于自动登陆。cookie分为会话cookie和持久cookie,常用三个属性name、value、maxAge。要修改就创建同名,删除就创建同名并把时间设为0

       ●Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中,cookie存储在客户端,session存储在服务器端。也因此:cookie相对来说不如session安全。cookie存储大小和数量有限制,session理论上是无限制的。

       Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

       ●又由于cookie是不安全的,所以多用token通常作为验证后的凭证,token中存放的是加密后的用户信息,相对安全不少,免除在一定时间内的重复验证。

       ●要对token中的信息加密就出现了加密,任务中用了DES和MD5加密,MD5加密用户的密码后再存入数据库,这样数据库就算泄露也不会拿到密码的明文。DES对服务端签发给客户端的token信息进行加密,而后需要再验证用户信息时直接拿token来对比完成就行了。

       ●拦截器:需要再mvc中配置需要拦截的url,在某个方法或字段被访问之前,进行拦截,然后在之前或之后加入某些操作,比如需要用户登录才能进入的一些页面,没有登录就进行拦截。

过滤器(Filter):当你有一堆东西的时候,你只希望选择符合你要求的某一些东西。定义这些要求的工具,就是过滤器。

拦截器(Interceptor):在一个流程正在进行的时候,你希望干预它的进展,甚至终止它进行,这是拦截器做的事情。

监听器(Listener):当一个事件发生的时候,你希望获得这个事件发生的详细信息,而并不想干预这个事件本身的进程,这就要用到监听器。


明天要做的事:

       继续回顾

问题:

       无

收获:

       总结了前5个任务,以后也好再来复习。



返回列表 返回列表
评论

    分享到