发表于 2016/12/30 16:47
|
显示全部楼层
| 阅读模式
| Google Chrome 45.0.2454.101
| Windows 7
设计原则是贯穿设计模式的一条主线,设计模式是一套能被复用的,经反复验证的规则,设计原则更是规则中的规则。知晓设计原则的大概含义对于我们更好地理解设计模式是有裨益的。
单一职责原则
单一职责原则是指一个类只负责一个职责
里氏替换原则
里氏替换原则的定义是:所有引用基类的地方必须能透明地使用其子类的对象,换句话说就是子类替换掉父类,程序的行为不会改变。当使用继承时,遵循里氏替换原则,类B继承类A时,除添加新的方法完成新增功能外,尽量不要重写父类A中的方法,也尽量不要重载父类A中的方法。
依赖倒置原则
依赖导致的原始定义是:高层的模块不依赖于底层模块,抽象不依赖细节,细节依赖抽象。可以理解为面向接口编程。在Java中包含的三层含义:模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系;接口和抽象类不依赖实现类;实现类依赖接口或抽象类。
接口隔离原则
客户端不应该依赖它不需要的接口,客户端只依赖它需要的接口,意思就是接口需要细化,接口中的方法尽量少。也就是说建立单一接口。
迪米特原则
迪米特原则也叫最少知识原则,指一个对象应该对其他对象有最少的了解,对象不关心自己耦合或调用的类的内部结构。
开闭原则
开闭原则是指尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码完成变化。
这几天主要有几件事情要做:一是论文,而是项目,三是博客,朋友有一个未完成的项目,checkout到自己的电脑之后,将项目导入到MyEclipse,将项目中的包加入Java build path时,出现了JRE System Library(unbound),去掉,换成自己的jre,再配置tomcat。
访问项目出现了空白
等配置好之后,启动tomcat,没有报错。可以访问localhost:8080出现小猫。但是访问localhost:8080/xxx,整个项目下的页面都是空白,不光是jsp,html也访问不了,就在网上搜索答案“可以访问localhost:8080,访问部署的项目出现空白”,答案也五花八门有说端口被占用,有说tomcat的work目录下没有生成项目文件,还有说防火墙没有关,我按照网上的做了,却依然没有任何效果,只白白浪费时间。
能访问html,不能访问jsp
去检查web.xml,突然看到web.xml中配置的filter元素,属性中有一行是将html写成了tml,改了之后,发现自己建的MyHtml.html能访问,虽然jsp页面还是访问不了,但是毕竟项目不全是空白了,这个时候我继续在网上搜索一下“可以访问html,不能访问jsp”,网上又是一大片答案,也硬着头皮跟着那些答案碎片做,没有成功,为什么没有去改filter呢,我还是坚信代码没有错。因为在远程部署的可以正常访问。
web.xml配置的filter不生效
后来我把web.xml中配置的filter注释之后,只剩下welcome-file-list这项,能访问自己新建的jsp,但是项目里面的index.jsp由于要访问action所以出现了错误,这是正常的。看来filter这里有些蹊跷。后来我试着调试代码。这次的filter如果错误就不好在网上搜答案了,之前自己没有做过项目实践,只想着能很快地能在网上找到答案,这次只有自己调试,调试发现,这个filte里对页面判断后有三个跳转方法
对index.jsp和login.jsp等设置的是ignorePages,需要进入(FilterChain)chain.doFilter
对html、jpg、css等设置的是allowResources
对其他的页面和资源是没有进行(FilterChain)chain.doFilter的。
经过debug发现index.jsp始终不能进入chain.doFilter。我就在路径判断之前加了打印路径的语句,发现打印出来的路径都有一个xxx/index.jsp。与过滤的index.jsp路径不符,这时候才想到这个路径的问题,导致一直不能进入,就想着访问的时候能不能不输入index.jsp前面的xxx,于是conf中的server.xml里面host下面加入了
<Context docBase="C:\Apache\apache-tomcat-7.0.72\webapps\xxx" path="/" reloadable="true"/>
就是把默认启动的应用设置为自己的项目。输入localhost:8080后,终于进入了自己项目的首页。
想法
经过这次教训,我明白了调试代码的重要性,出现问题也不能光想着去网上找答案,网上的答案有些不具备普遍性,就算是普遍存在的问题,也不能照着网上的步骤一步一步做,自己从网上的答案找到启发,然后再在这个方向一点一点去找原因,这样会有趣多了。www.9ask.cn/cz/