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