java多态与异常处理——动手动脑

November 15, 2015

编写一个程序,此程序在运行时要求用户输入一个 整数,代表某门课的考试成绩,程序接着给出“不及格”、“及格”、“中”、“良”、“优”的结论。 要求程序必须具备足够的健壮性,不管用户输入什 么样的内容,都不会崩溃。   import java.util.*;   public class Mark { public static void main(String[] args) { Scanner sc =new Scanner(System.in); int score=0; System.out.print("请输入成绩:");            try         {       score=sc.nextInt();           if(score>=0&&score<=59)              {                System.out.println("不及格");              }              if(score>=60&&score<=69)              {               System.o

Servlet+Javabean+Html实现简单的查询.删除.修改.添加四个功能

November 15, 2015

1. 1.1 首先创建一个单列,供外界实用: package cn.com.yong.Utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBConnection { private String url="jdbc:mysql://localhost:3306/guimei"; private String user="root"; private String password="666888"; private Connection con=null; //构造方法私有化 private DBConnection(){ try { Class.forName("com.mysql.jdbc.Driver"); con=DriverManager.getConnection(

spring注入静态成员变量提示invalid setter method

November 15, 2015

果然还是不够细心啊,被坑一晚上.. 一个极其简单的小程序,但是需要通过xml文件配置注入一个值,唯一的特别是要注入的属性是类中的静态成员变量.. 如下,然后自动生成get和set方法..坑就从此开始了... public class Food{ private static String desc; public static String getDesc(){ return desc; } public static void setDesc(String desc){ Food.desc = desc; } } 然后xml中如下配置: 然后启动就会报找不到set方法的错误...反复对比set方法的名字,无任何异常..然后一晚上就这样报废了... 最后发现自动生成的方法会带static修饰符,而spring的set方法不能

java中的final总结

November 15, 2015

Java关键字final有最终的,不可改变的含义,它可以修饰非抽象类、非抽象类成员方法和变量。 报错:类"TestFinal"要么是abstract,要么是final的,不能两个都是. 1.final修饰的类就是终极的.不能被其他类继承,就不可能有子类. 2.由于final类没有子类,其中的方法不可能被覆盖,因此,final类中的 所有方法和变量都是final的,并不需要明确地将某个方法声明为final.   public final class TestFinal{ public static final int I=1;//final类中的数据成员可以是final的 protected int j;//final类中的数据成员可以不是final的 public void f(){}//final类中的方法是final的,可以不明确声明 public final void g(){}//final类中的方法可以声明为final的,不过没什么意义 } 3.final方法不能被子类的方法覆盖,但可以被继承。   public class Test

面向切面记录log4j日志

November 15, 2015

首先,AOP处理日志是必需的,不使用AOP处理日志有诸多不便。 日志处理是每个项目当中一个非常重要的内容。没有了日志,也就失去了对系统的可控性。没有日志,系统出现任何问题,都会没有踪迹可寻,这对一个信息系统而言是非常危险的。  然而,使用纯OOP思想进行日志处理,我们会发现,每个逻辑部分中总会混入日志处理的代码,导致纯OOP思想的设计略显不伦不类。同时,如果记录日志的类型需求有变更,那么我们就要去每个逻辑单元中修改Java代码。另外,如果需求今天变了明天再变的话,我想这将是一个非常繁重并且惹人厌的工作。 其实日志处理应该是软件系统中单独的一大部分,开发人员在进行系统开发时,不应该再来考虑日志处理。AOP能够做到这一点,让开发人员更加专注于系统的业务编码,而无需顾虑日志问题(这一点大家可以联系声明式事务处理的方式,配置好了处理事务的配置文件,编写Manager或者action时,都无需顾虑事务)。 然后,介绍例子中的代码实现。 1、引入jar包:                   2、切面Aspect代码: package com.lzq.spring.aop; import o

struts2的核心和工作原理

November 15, 2015

最近做java开发,需要用到相关开源框架。 在学习struts2之前,首先我们要明白使用struts2的目的是什么?它能给我们带来什么样的好处? 设计目标     Struts设计的第一目标就是使MVC模式应用于web程序设计。在这儿MVC模式的好处就不在提了。 技术优势     Struts2有两方面的技术优势,一是所有的Struts2应用程序都是基于client/server HTTP交换协议,The Java Servlet API揭示了Java Servlet只是Java API的一个很小子集,这样我们可以在业务逻辑部分使用功能强大的Java语言进行程序设计。     二是提供了对MVC的一个清晰的实现,这一实现包含了很多参与对所以请求进行处理的关键组件,如:拦截器、OGNL表达式语言、堆栈。       因为struts2有这样目标,并且有这样的优势,所以,这是我们学习struts2的理由,下面,我们在深入剖析一下struts的工作原理。 工作原理     Suruts2的工作原理可以用下面这张图来描述,下面我们分步骤介绍一下每一步的核心内容  一个请求在Struts2框架中

Tomcat源代码阅读----源代码部署(1)

November 15, 2015

Tomcat源代码部署分为几个步骤 源代码下载 使用ant和build.xml进行编译 修改BuildPath,添加Jar包环境不报错为止 (1) 源代码下载的SVN路径为:http://svn.apache.org/repos/asf/tomcat/tc7.0.x/tags/TOMCAT_7_0_35 这边是使用的是Myeclipse下载的svn插件进行下载的。 http://svn.apache.org/repos/asf/tomcat/目录下还可以找到其他的版本的Tomcat。 (2) 下载之后需要进行对Tomcat工程使用ant进行编译,ant为Myeclipse的插件,build.properties.default修改成build.properties ,ant会按照build.properties内容进行下载依赖的包,然后根据build.xml进行打包编译。未与-source 1.6 一起设置引导类路径,在ant编译的时候可能会出现如下图的问题,这边需要工程的编译环境设置成1.6的JDK即可。 (3)修改BuildPath 增加SOURCE文件 增加Jar包 1.增加So

Java应用一般架构原理

November 15, 2015

当我们架设一个系统的时候通常需要考虑到如何与其他系统交互,所以我们首先需要知道各种系统之间是如何交互的,使用何种技术实现。 1. 不同系统不同语言之间的交互 现在我们常见的不同系统不同语言之间的交互使用WebService,Http请求。WebService,即“Web 服务”,简写为 WS。从字面上理解,它其实就是“基于 Web 的服务”。而服务却是双方的,有服务需求方,就有服务提供方。服务提供方对外发布服务,服务需求方调用服务提供方所发布的服务。如果说得再专业一点,WS 其实就是建立在 HTTP 协议上实现异构系统通讯的工具。没错!WS 说白了还是基于 HTTP 协议的,也就是说,数据是通过 HTTP 进行传输的。最早我们是用CXF开发SOAP服务实现WS,后面我们是用REST服务实现WS(这个目前使用比较多,也最我用得最多的这一种)。基于CXF也可以开发REST服务,不过我们一般直接使用springMVC或者其他MVC框架实现REST服务。 但是在很多人的印象中Web service的话一般指十来年前IBM主导的基于XML的各种交互技术,现在除了一些公司在用之外用得人也很少了。广

遍历ArrayList时同时修改引发的问题

November 15, 2015

看见一篇博客,没有写完整,于是增补了一下: 博客原文:http://www.cnblogs.com/alipayhutu/archive/2012/08/11/2634073.html 注:黄色字体为我添的 CopyOnWriteArrayList,因何而存在? ArrayList的一个线程安全的变体,其所有可变操作(add、set 等)都是通过对底层数组进行一次新的复制来实现的,代价昂贵。 CopyOnWriteArrayList,是因”并发”而生。   【场景一】对于ArrayList,使用直接方式,一边遍历,一边删除,会报错。 // 删除/修改元素 for(String item : list){ list.remove(item); }     原因:foreach语法是通过Iterator来实现的,当遍历这个List的时候,会生成一个ArrayList.Itr对象,这个私有内部类实现了Iterator接口,也就是说上面这段代码与下面这段代码效果一样:   Iterator it = list.iterator() ;   while(it.hasNext())

Java Web开发介绍

November 15, 2015

简介 Java很好地支持web开发,在桌面上Eclipse RCP谈不上成功,JAVA是主要用在服务器端,和Python一样是极其重要的Web后台开发语言。 Java Web应用通常不直接在服务器上运行,而是在Web容器内。容器提供的运行时环境,提供JVM (Java Virtual Machine)运行本地Java应用。容器本身也运行在JVM。 通常Java的分为两个容器:Web容器和Java EE容器。典型的Web容器是Tomcat或Jetty。Web容器支持Java Servlet和JavaServer Page的执行。 Java EE容器支持更多的功能,例如,服务器负载的分布。 大部分现代的Java Web框架是基于servlet的。流行的Java Web框架有GWT,JavaServer Faces,Struts和Spring框架。这些Web框架通常需要至少需要Web容器。 Java Web应用程序是动态的资源(如Servlet,JavaServer页,Java类,jar)和静态资源(HTML页面和图片)的集合。 Java Web应用程序可以部署为WAR(Web ARchiv