学java半年了,也能用SSH整合着做点小项目,但是现在遇到了瓶颈,不知道如何提高了。  看到好多人说多看看源码,我在想看源码是为了什么呢?要看的话应该如何下手?  刚刚看了会Spring的源码,类多的要切来切去,看没看懂多少,头倒大了不少,现在很迷茫啊,到底如何提高啊?周围也没有学java的朋友,不能做大项目,小项目实在不想再多做了,已经做了很多小项目了,什么BBS,论坛,学生管理系统等等  希望过来人给点建议,先谢谢了

解决方案 »

  1.   

    Spring源代码还是有一定难度的,你看懂了,技术也不差了,吧设计模式学好吧,SRPING里面代理,门面等模式用的非常多。
      

  2.   

    1、先下载:jdom-1.0.jar、dom4j-1.7.jar 这两个包引入到项目中
    2、代码如下:MyXMLReader.java
    import java.io.File;
    import java.util.Iterator;
    import java.util.List;import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;import org.dom4j.io.SAXReader;
    import org.jdom.Element;
    import org.jdom.input.SAXBuilder;
    import org.w3c.dom.Document;
    import org.w3c.dom.NodeList;
    import org.xml.sax.Attributes;
    import org.xml.sax.InputSource;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;public class MyXMLReader extends DefaultHandler { java.util.Stack tags = new java.util.Stack();
    String path = "xmltest.xml";
    //windows 系统获取路径
    String rpath = MyXMLReader.class.getResource("").getPath().substring(1)
    + path;

    public MyXMLReader() {
    super();
    System.out.println("rpath:"+rpath);
    }

    /**
     * DOM方式
    * @since V2.0
    * @author David.Wei
    * @date 2008-4-11
    * @return void
     */
    public void DOM() {
    long lasting = System.currentTimeMillis();

    try {
    File f = new File(rpath);
    DocumentBuilderFactory factory = DocumentBuilderFactory
    .newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document doc = builder.parse(f);
    NodeList nl = doc.getElementsByTagName("node");
    for (int i = 0; i < nl.getLength(); i++) {
    System.out.println("|| Name:  |"
    + doc.getElementsByTagName("name").item(i)
    .getFirstChild().getNodeValue());
    System.out.println("||Space:  |"
    + doc.getElementsByTagName("space").item(i)
    .getFirstChild().getNodeValue());
    System.out.println("-------------------------------------------------"); }
    } catch (Exception e) {
    e.printStackTrace();
    }
    System.out.println("DOM RUNTIME:"
    + (System.currentTimeMillis() - lasting) + " MS");
    } /**
     * SAX方式
    * @since V2.0
    * @author David.Wei
    * @date 2008-4-11
    * @return void
     */
    public void SAX() { long lasting = System.currentTimeMillis();
    try {
    SAXParserFactory sf = SAXParserFactory.newInstance();
    SAXParser sp = sf.newSAXParser();
    MyXMLReader reader = new MyXMLReader();
    sp.parse(new InputSource(rpath), reader);
    } catch (Exception e) {
    e.printStackTrace();
    }
    System.out.println("SAX RUNTIME:"
    + (System.currentTimeMillis() - lasting) + " MS");
    } public void startElement(String uri, String localName, String qName,
    Attributes attrs) {
    tags.push(qName);
    } public void characters(char ch[], int start, int length)
    throws SAXException {
    String tag = (String) tags.peek();
    if (tag.equals("name")) {
    System.out.println("|| Name:  |" + new String(ch, start, length));
    }
    if (tag.equals("space")) {
    System.out.println("||Space:  |" + new String(ch, start, length));
    }
    System.out.println("-------------------------------------------------");
    } /**
     * JDOM方式
    * @since V2.0
    * @author David.Wei
    * @date 2008-4-11
    * @return void
     */
    public void JDOM() {
    long lasting = System.currentTimeMillis();
    try {
    SAXBuilder builder = new SAXBuilder();
    org.jdom.Document doc = builder.build(new File(rpath));
    Element foo = doc.getRootElement();
    List allChildren = foo.getChildren();
    for (int i = 0; i < allChildren.size(); i++) {
    System.out.println("|| Name:  |"
    + ((Element) allChildren.get(i)).getChild("name")
    .getText());
    System.out.println("||Space:  |"
    + ((Element) allChildren.get(i)).getChild("space")
    .getText());
    System.out.println("-------------------------------------------------"); }
    } catch (Exception e) {
    e.printStackTrace();
    }
    System.out.println("JDOM RUNTIME:"
    + (System.currentTimeMillis() - lasting) + " MS");
    } /**
     * DOM4J方式
    * @since V2.0
    * @author David.Wei
    * @date 2008-4-11
    * @return void
     */
    public void DOM4J() {
    long lasting = System.currentTimeMillis();
    try {
    File f = new File(rpath);
    SAXReader reader = new SAXReader();
    org.dom4j.Document doc = reader.read(f);
    org.dom4j.Element root = doc.getRootElement();
    org.dom4j.Element foo;
    for (Iterator i = root.elementIterator("node"); i.hasNext();) {
    foo = (org.dom4j.Element) i.next();
    System.out.println("|| Name:  |" + foo.elementText("name"));
    System.out.println("||Space:  |" + foo.elementText("space"));
    System.out.println("-------------------------------------------------");
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    System.out.println("DOM4J RUNTIME:"
    + (System.currentTimeMillis() - lasting) + " MS");
    } public static void main(String arge[]) {
    MyXMLReader myXML = new MyXMLReader();
    System.out.println("=====================DOM=========================");
    myXML.DOM();
    System.out.println("=====================SAX=========================");
    myXML.SAX();
    System.out.println("=====================JDOM========================");
    myXML.JDOM();
    System.out.println("=====================DOM4J=======================");
    myXML.DOM4J();
    System.out.println("=================================================");
    }
    }3、xmltest.xml
    <?xml version="1.0" encoding="gbk"?>
    <list>
    <node>
    <name>weidewei</name>
    <space>http://wishlife.javaeye.com</space>
    </node>
    <node>
    <name>flying</name>
    <space>http://user.qzone.qq.com/94611981</space>
    </node>
    </list>备注:xmltest.xml在src目录下
    以上代码应该能满足你需求
      

  3.   

    学习java就不要想着一步登天,要有耐心。你不可能一下就把别人的代码看懂,更何况别人是搞了这么多年的。
      

  4.   

    1,养成良好的编码习惯,多掌握一些技术面,入struts1.struts2,spring ,hibernate ,spring ,ajax,dwr,ibatis,spring security,spring mvc,spring webflow等
    2。增加自己的项目的经验,认真做一个项目,严格按照ssmi的流程,即需求调研  ---  简要设计 ---详细设计 --- 编码阶段  ----测试  ----分布
    3。可以掌握一些常用的设计模式:如单利模式,简单工厂,抽象工厂,mvc模式,代理模式,们名模式的
    这只是个人的意见,呵呵。
      

  5.   

    如果有兴趣,还可以学习下cas,springsecurity+cas 整合,以及自定义webservice等等呵呵呵