发表于: 2017-12-10 21:05:22
1 781
今天做的事情:
回顾一下,任务以来学的东西。
任务一:
●首先一切的代码操作都有自己的工具,以及依赖和环境配置。在任务一中熟悉安装各种工具和依赖如
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个任务,以后也好再来复习。
评论