Programmer

追逐梦想的人
随笔 - 6, 文章 - 0, 评论 - 5, 引用 - 0
数据加载中……

2007年4月10日

部署spring2.56中的例子jpetstore

部署环境:tomcat6.0.18   jdk5   mysql5.1

1.   下载  到www.springsource.org/download 中 下载spring-framework-2.5.6.SEC01-with-dependencies
2.   jpetstores说明(自己翻译jpetstore中的readme.txt,本人英语不好 ,翻译不到位请手下留情)
     配备spring管理的中间层和ibatis作为数据访问策略数据层,与spring的事务 和抽象DAO相结合。能使用本地的JDBC或者JTA 和2个数据库中的后者一起工作
     使用了相同的数据模型和演示内容来作为jpetstore的原型,可以分别的查看 "WEB-INF/dataAccessContext-local.xml","WEB-INF/dataAccessContext-jta.xml"
     上下文定义的细节。
     提供了相同的用户界面两种不同的Web层实现,一个基于spring mvc,一个基于struts1.1,后者与jpetstore关系密切,但是用JSTL重写作为jsp的实现,
     尽可能的具有可比性。查看"WEB-INF/web.xml", "WEB-INF/petstore-servlet.xml",and "WEB-INF/struts-config.xml" 的细节。
     与原来的jpetstore原型相比,这个实现在内部结构和松耦合方面有了显著的改善。支持的应用上下文的概念,现在核心就是构建 应用对象(application objects)
     最显著的改善就是 PetStoreLogic,现在叫做PetStoreFacade,它不再与配置,资源,事务的细节相关
     注意以spring为基础的web层实现是故意与以struts为基础的相似并不是打算改进错误信息等方面的现状。jpetstore包含2个不同实现的web层来概括除了不同
     之外在各自程序设计模型的相同点,也阐明不同风格的配置。
     这个版本的jpetstore也展示了spring远程处理的可选项 如:Hessian, Burlap, RMI, and Web Services via Apache Axis.他们都提供了即插即用通过
     默认的web应用(注意RMI是添加注释避免与EJB容器冲突)“客户端”目录包含了一个通过所有协议调用OoderService输出的简单控制行客户端。
3.   部署
  • 创建数据库  先创建数据库 执行\jpetstore\db\mysql里面 jpetstore-mysql-schema.sql,jpetstore-mysql-dataload.sql 用来建表和导入数据(不同数据库自己对应查找)
  • 改数据库配置文件  在\jpetstore\war\WEB-INF  修改jdbc.properties(自己对应自己的设置)
    1 jdbc.driverClassName=com.mysql.jdbc.Driver
    2 jdbc.url=jdbc:mysql://localhost/jpetstore?
    3 jdbc.username=root
    4 jdbc.password=root
    5 
  • web层实现的选择  在\jpetstore\war\WEB_INF   web.xml代码
    <servlet-mapping>
             
    <!--使用spring mvc默认 -->
        
    <servlet-name>petstore</servlet-name>
            
    <!--使用struts -->
    <!--<servlet-name>action</servlet-name>-->
        
    <url-pattern>*.do</url-pattern>
    </servlet-mapping>
  • 部署 /jpetstore 运行warfile.bat 生成一个文件夹dist 把里面的jpetstore.war复制到 tomcat目录下的webapps  ,把对应的数据库驱动放到tomcat\lib下
  • 运行tomcat 打开浏览器http://localhost:8080/jpetstore 可以看到jpetstore页面  have fun!



posted @ 2010-03-24 13:43 霜の哀伤 阅读(1774) | 评论 (2)编辑 收藏

java学习笔记(xml解析)

最近学习xml,把学习的代码发上来   希望对新手有用
这是note.xml
<?xml version="1.0" encoding="gb2312" ?> 
<notes>
<note date="2007-4-12">
<from>小红</from> 
<to>小林</to> 
<message>周末一起去吃火锅呀</message> 
</note>
</notes>

这是dom解析xml代码
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;


class  DomXMLTest
{
    
public static void main(String[] args)
    {   
        
try{
         
//(1)得到DOM解析器的工厂实例
        DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();     
          
//(2)从DOM工厂获得DOM解析器
        DocumentBuilder  builder=factory.newDocumentBuilder(); 
        File f
=new File("note.xml");
         
//(3)把要解析的XML文档转化为输入流,以便DOM解析器解析它
        InputStream  is=new FileInputStream(f);  
        
//(4)解析XML文档的输入流,得到一个Document
        Document doc=builder.parse(is);    
        
//(5)得到XML文档的根节点
        Element  root=doc.getDocumentElement(); 
         
//(6)得到节点的子节点
        NodeList  notes=root.getChildNodes();   

          
for(int i=0;i<notes.getLength();i++)
          {
               Node note
=notes.item(i);
            
if(note.getNodeType()==Node.ELEMENT_NODE)
                {  
                    
//(7)取得节点的属性值
                    String date =note.getAttributes().getNamedItem("date").getNodeValue(); 
                    System.out.println(date);
                    
// (8)轮循子节点
                    for(Node node=note.getFirstChild();node!=null;node=node.getNextSibling()) 
                         {
                                
if(node.getNodeType()==Node.ELEMENT_NODE)
                                     {
                                            
if(node.getNodeName().equals("from"))
                                            {
                                                 String from
=node.getFirstChild().getNodeValue();
                                                 System.out.println(from);
                                             }
                                            
if(node.getNodeName().equals("to"))
                                             {
                                                  String to
=node.getFirstChild().getNodeValue();
                                                   System.out.println(to);
                                             }
                                             
if(node.getNodeName().equals("message"))
                                             {
                                                   String message
=node.getFirstChild().getNodeValue();
                                                   System.out.println(message);
                                              }
                                      }
                           }
                  }

        }
        }
        
catch(ParserConfigurationException e)
        {
            e.printStackTrace();
        }
        
catch(SAXException e)
        {
            e.printStackTrace();
        }
        
catch(IOException e)
        {
            e.printStackTrace();
        }
     }                                  
}

还有 出现 下面的错误  是xml的格式不对 ,我就应为在 <?xml 前面多个空格 就找了好几天的错误
特别感谢那些帮我找问题的高手,用范伟的话说  谢谢啊
The processing instruction target matching "[xX][mM][lL]" is not allowed.




posted @ 2007-04-13 18:08 霜の哀伤 阅读(432) | 评论 (1)编辑 收藏

学习笔记(java中的io操作)

(1)File的操作
import java.io.File;
import java.io.IOException;
class FileDemo{
 
public static void main(String args[]){
  
try{
   File f
=new File("file1.txt");
   
   System.out.println(
"文件是否存在: "+f.exists());
     
if(!f.exists())
      {    
           System.out.println(
"文件不否存在,开始创建!");
           f.createNewFile();
      }
   System.out.println(
"文件是否存在: "+f.exists());
   System.out.println(
"是文件吗: "+f.isFile());
   System.out.println(
"是文件夹吗: "+f.isDirectory());   
   System.out.println(
"可否读取文件: "+f.canRead);
   System.out.println(
"可否修改文件: "+f.canWrite());
   System.out.println(
"是否隐藏: "+f.isHidden());
   System.out.println(
"文件名称: "+f.getName());
   System.out.println(
"标准文件名: "+f.getCanonicalFile()); 
   System.out.println(
"相对路径: "+f.getPath());  
   System.out.println(
"绝对路径: "+f.getAbsolutePath());
   System.out.println(
"标准路径: "+f.getCanonicalPath());
   System.out.println(
"最后修改时间: "+f.lastModified());
   System.out.println(
"文件大小: "+f.length()+" 字节");        
  } 
  
catch(IOException ex){
   ex.printStackTrace();
  }   
 }
}

(2)简单文件读写
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.FileReader;
import java.io.IOException;
import java.io.File;
class test{
 
public static void main(String args[]){
  
try{
   File f
=new File("file1.txt");
   
if(!f.exists())
      {
           f.createNewFile();
      }
   FileWriter fw
=new FileWriter(f);
   BufferedWriter bw
=new BufferedWriter(fw);
   bw.write(
"大家好,我正在学习Java");
   bw.newLine();
   bw.write(
"请多多指教");
   System.out.println(
"file1.txt写入成功!***************开始读..\n");
   bw.flush();
   bw.close();
   
   FileReader fr
=new FileReader("file1.txt");
   BufferedReader br
=new BufferedReader(fr);
   String temp
=null;
   
do{
    temp
=br.readLine();
    System.out.println(temp
==null?"":temp);
   }
   
while(temp!=null);
   fr.close();
   br.close();
   
   System.out.println(
"file1.txt已经读完!*************");
  }
  
  
catch(IOException ex){
   ex.printStackTrace();
  }   
 }
}


(3)分隔符读取
import java.io.File;
import java.io.FileWriter;
import java.io.FileReader;
import java.io.BufferedWriter;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.StringTokenizer;
class StringTokenizerTest
{
    
public static void main(String[] args) 
    {   
        
try{
                 File f
=new File("file1.txt");
                 
if(!f.exists())
                {
                   f.createNewFile();
                }
                FileWriter fw
=new FileWriter(f);
                BufferedWriter bw
=new BufferedWriter(fw);
                bw.write(
"小明,男,1980-1-1,13624577654");
                bw.newLine();
                bw.write(
"小强,男,1984-2-1,13634375634");
                bw.newLine();
                bw.write(
"小红,女,1986-1-5,13724777774");
                System.out.println(
"数据写入成功!");
                bw.flush();
                bw.close();

                FileReader fr
=new FileReader(f);
                BufferedReader br
=new BufferedReader(fr);
                String s
=null;
                
                
while  ((s  =br.readLine())!=  null)  
                {  
                     StringTokenizer  st  
=  new  StringTokenizer(s,",");  
                     System.out.println(s  
==  null?" " : s);  
                     
while  (st.hasMoreTokens())  {  
                       String  name  
=  st.nextToken();  
                       String  sex  
=  st.nextToken();  
                       String  birthday  
=  st.nextToken();  
                       String  tel  
=  st.nextToken();  
                       System.out.println(  
"姓名:  "  +  name);  
                       System.out.println(  
"性别:  "  +  sex);  
                       System.out.println(  
"生日:  "  +  birthday);  
                       System.out.println(  
"电话:  "  +  tel);  
                       System.out.println(  
"_______________________________  ");  
                          }  
                }   
                
while(s!=null);
                fr.close();
                br.close();          
           }
           
catch(IOException e){
               e.printStackTrace();
         }
    }
}



posted @ 2007-04-10 23:53 霜の哀伤 阅读(1255) | 评论 (0)编辑 收藏